PDA

View Full Version : عدم نمایش اطلاعات در صورت وجود داشتن در دیتابیس



mary008
سه شنبه 21 آبان 1392, 22:42 عصر
سلام
یک لیست منو دارم که اطلاعات داخلش رو از یک آرایه میگیره و با انتخاب اون مقدار داخلش ثبت دیتابیس میشه . حالا میخوام واسه کاربر دیگه اطلاعاتی که ثبت شده نمایش داده نشه . چطوری اینکار رو بکنم؟

مرسی

pary_daryayi
جمعه 24 آبان 1392, 11:16 صبح
جدا از کدایگنایتر , منطق این کار رو بلدین ؟

mary008
جمعه 24 آبان 1392, 15:17 عصر
بله میدونم که باید یک بررسی انجام بشه که اگر اون فیلد مورد نظر با این که ارسال میشه یکسان بود اونو نمایش نده .
اما کدنویسیش مشکله :(

pary_daryayi
شنبه 25 آبان 1392, 08:22 صبح
این آرایه ای که اطلاعات لیست منو از اونه , ثابته ؟ یا در دیتابیس ذخیره شده ؟

mary008
یک شنبه 26 آبان 1392, 00:29 صبح
این آرایه ای که اطلاعات لیست منو از اونه , ثابته ؟ یا در دیتابیس ذخیره شده ؟

ثابته ... یک آرایه از رشته وجود داره و این آرایه رو در لیست منو نمایش میده !

pary_daryayi
یک شنبه 26 آبان 1392, 08:51 صبح
اگه درست متوجه منظورتون شده باشم این میشه کدش :


$a=array('html','php','css','js','asp');
$qry="select * from tb1"; // result : html , css
$res=mysql_query($qry);
while($row=mysql_fetch_array($res))
{
$search[]=$row[1];
}

foreach ($search as $x)
{
$s=array_search($x,$a);
if($s !== '0')
unset($a[$s]);

}
print_r($a);
?>
<select name="select">
<?php foreach($a as $v){?>
<option value="<?php echo $v;?>"><?php echo $v;?></option>
<?php } ?>
</select>

mary008
یک شنبه 26 آبان 1392, 14:16 عصر
ممنونم از شما :)
اما نمیدونم چرا یه سری داده بهش اضافه کردم دیگه کار نکرد :-/

<?php
include ("Nobat_Dehi/config.php");
$a = array(" ", "نوبت اول","نوبت دوم","نوبت سوم","نوبت چهارم","نوبت پنجم","نوبت ششم","نوبت هفتم","نوبت هشتم","نوبت نهم","نوبت دهم"
,"نوبت یازدم","نوبت دوازدهم","نوبت سیزدهم","نوبت چهاردهم");

$qry="select * from tb1"; // result : html , css
$res=mysql_query($qry);
while($row=mysql_fetch_array($res))
{
$search[]=$row[1];
}

foreach ($search as $x)
{
$s=array_search($x,$a);
if($s !== '0')
unset($a[$s]);

}
$start = strtotime("16:00");
$end = strtotime("20:00");
$diff = ($end - $start );
$num = ($diff )* 1/30 * 1/60;
$current = $start;
?>
<form method="post" action="t.php" >
<select name="select">

<?php foreach($a as $v){?>
<option value="<?php echo $v . date('H:i' , $current)?>">
<?php echo $v;

echo date("H:i" , $current);
$current = strtotime("+30 minutes" , $current);
?>
</option>
<?php } ?>
</select>
<input type="submit" value="send" />
</form>

pary_daryayi
یک شنبه 26 آبان 1392, 16:55 عصر
این خط رو حذف کنید تست کنید :


if($s !== '0')


و اینکه جدول tb1 شما شامل چه فیلدهایی هست ؟ باید طبق جدول خودتون $row رو واکشی کنید .

mary008
یک شنبه 26 آبان 1392, 21:29 عصر
حذف کردم اما درست نشد :ناراحت:

وقتی که value لیست منو رو اضافه میکنم دیگه کار نمیکنه :|

جدولم فقط یک فیلد داره که محتوای لیست منو داخل اون نگه داری میشه.

pary_daryayi
دوشنبه 27 آبان 1392, 12:15 عصر
خب اگه یک فیلد داره بجای $row[1] باید بنویسید $row[0] :


while($row=mysql_fetch_array($res))
{
$search[]=$row[0];
}

mary008
دوشنبه 27 آبان 1392, 19:19 عصر
خب اگه یک فیلد داره بجای $row[1] باید بنویسید $row[0] :


while($row=mysql_fetch_array($res))
{
$search[]=$row[0];
}


آره اونو صفر کردم درست شد اما بازم با value مشکل داره :اشتباه:
در حال ممنون خیلی زحمت کشیدید :لبخندساده:

pary_daryayi
دوشنبه 27 آبان 1392, 19:35 عصر
منظورتون چیه که value کار نمیکنه ؟ یعنی وقتی با post دریافت میکنید مقدارش دریافت نمیشه ؟ یا اینکه value خالیه ؟ لیست منوی شما الان محتوایی که میخواید رو نشون میده

mary008
دوشنبه 27 آبان 1392, 20:08 عصر
خب اگه یک فیلد داره بجای $row[1] باید بنویسید $row[0] :


while($row=mysql_fetch_array($res))
{
$search[]=$row[0];
}


آره اونو صفر کردم درست شد اما بازم با value مشکل داره :اشتباه:
الان لیست منو مثلا نوبت اول 16:30 رو نشون میده و ثبت میکنه اما بازم تو لیست منو نمایشش میده اما وقتی value رو تغییر میدم یعنی اینو میذارم دیگه کار نمیکنه

<option value="<?php echo $v . date('H:i' , $current)?>">
اما فکر کنم مقایسه رو براساس عناصر آرایه انجام میده که وقتی value رو با یک ترکیب دیگه به دیتابیس می فرسته دیگه نمی تونه تشخیص بده :متفکر:
احتمالا باید این قسمتش تغییر کنه




foreach ($search as $x)
{
$s=array_search($x,$a);
if($s !== '0')
unset($a[$s]);
}


در حال ممنون خیلی زحمت کشیدید :لبخندساده:

pary_daryayi
سه شنبه 28 آبان 1392, 07:09 صبح
من باز هم خوب متوجه نشدم . ولی اون if رو که کلا حذف کنید .
بعد از foreach هم با print_r تست کنید ببینید محتویاتی که میخواید رو شامل میشه یا نه ( یعنی باید آرایه شامل عناصر آرایه ای اول منهای عناصر پایگاه دادتون باشه )


foreach ($search as $x)
{
$s=array_search($x,$a);
unset($a[$s]);

}
echo '<pre>';
print_r($a);
echo '</pre>';

mary008
سه شنبه 28 آبان 1392, 09:35 صبح
کارهایی رو گفتید انجام دادم . محتوای آرایه تغییر نمیکنه .
جالب اینحاست که این قسمت رو حذف میکنم درست کار میکنه



date("H:i" , $current)

pary_daryayi
سه شنبه 28 آبان 1392, 11:45 صبح
خب مشخصه دیگه . شما آرایه ای که دارین با مقادیری که در جدول دیتابیستون ذخیره میشه یکی نیست . با date الحاق کردین . زمان رو جدا در جدول ذخیره کنید . دقیقا نمیدونم منطق برنامتون چیه اما اگه حتما باید اینا به صورت الحاق شده در جدول دیتابیس ذخیره بشن , بازم راه حل داره .

mary008
سه شنبه 28 آبان 1392, 22:39 عصر
بله درست میگید .
من قصدم این بود که عناصر آرایه با مقدار ساعت باهم در دیتابیس ثبت بشه مثلا نوبت اول 16:00
راه دیگه ای به ذهنم نمیرسه جز اینکه با مقدار value ثبت بشه :اشتباه:

pary_daryayi
چهارشنبه 29 آبان 1392, 07:35 صبح
میشه به این شکل داخل دیتابیس درج کنید


$v .'-'. date('H:i' , $current);


بعد وقتی از دیتابیس میخونید به این شکل تفکیک کنید :


explode('-',$row[0])


اینطوری ساعت رو از محتویات جدا میکنید و با آرایه میتونید مقایسه کنید.

mary008
چهارشنبه 29 آبان 1392, 15:40 عصر
خیلی ببخشید اما چطوری دستور explode رو بنویسم کدوم قسمت کد؟ :لبخند:

pary_daryayi
چهارشنبه 29 آبان 1392, 18:14 عصر
اطلاعات شما در دیتابیس چطوری ذخیره شده ؟
اگه بعنوان مثال به این شکل ذخیره میشه :


html-12:20
css-05:10

ما میایم با explode تفکیک میکنیم و قسمت اول رو در نظر میگیریم .یعنی شما باید while رو به این شکل تغییر بدین .


while($row=mysql_fetch_array($res))
{
$result=explode('-',$row[0]);
$search[]=$result[0];
}

mary008
چهارشنبه 29 آبان 1392, 20:02 عصر
خیلی ممنونم از لطفتون درست شد
مررررررررررررررررررررررسی :قلب::قلب::قلب: