View Full Version : عدم نمایش اطلاعات در صورت وجود داشتن در دیتابیس
mary008
سه شنبه 21 آبان 1392, 23:42 عصر
سلام
یک لیست منو دارم که اطلاعات داخلش رو از یک آرایه میگیره و با انتخاب اون مقدار داخلش ثبت دیتابیس میشه . حالا میخوام واسه کاربر دیگه اطلاعاتی که ثبت شده نمایش داده نشه . چطوری اینکار رو بکنم؟
مرسی
pary_daryayi
جمعه 24 آبان 1392, 12:16 عصر
جدا از کدایگنایتر , منطق این کار رو بلدین ؟
mary008
جمعه 24 آبان 1392, 16:17 عصر
بله میدونم که باید یک بررسی انجام بشه که اگر اون فیلد مورد نظر با این که ارسال میشه یکسان بود اونو نمایش نده .
اما کدنویسیش مشکله :(
pary_daryayi
شنبه 25 آبان 1392, 09:22 صبح
این آرایه ای که اطلاعات لیست منو از اونه , ثابته ؟ یا در دیتابیس ذخیره شده ؟
mary008
یک شنبه 26 آبان 1392, 01:29 صبح
این آرایه ای که اطلاعات لیست منو از اونه , ثابته ؟ یا در دیتابیس ذخیره شده ؟
ثابته ... یک آرایه از رشته وجود داره و این آرایه رو در لیست منو نمایش میده !
pary_daryayi
یک شنبه 26 آبان 1392, 09: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, 15: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, 17:55 عصر
این خط رو حذف کنید تست کنید :
if($s !== '0')
و اینکه جدول tb1 شما شامل چه فیلدهایی هست ؟ باید طبق جدول خودتون $row رو واکشی کنید .
mary008
یک شنبه 26 آبان 1392, 22:29 عصر
حذف کردم اما درست نشد :ناراحت:
وقتی که value لیست منو رو اضافه میکنم دیگه کار نمیکنه :|
جدولم فقط یک فیلد داره که محتوای لیست منو داخل اون نگه داری میشه.
pary_daryayi
دوشنبه 27 آبان 1392, 13:15 عصر
خب اگه یک فیلد داره بجای $row[1] باید بنویسید $row[0] :
while($row=mysql_fetch_array($res))
{
$search[]=$row[0];
}
mary008
دوشنبه 27 آبان 1392, 20:19 عصر
خب اگه یک فیلد داره بجای $row[1] باید بنویسید $row[0] :
while($row=mysql_fetch_array($res))
{
$search[]=$row[0];
}
آره اونو صفر کردم درست شد اما بازم با value مشکل داره :اشتباه:
در حال ممنون خیلی زحمت کشیدید :لبخندساده:
pary_daryayi
دوشنبه 27 آبان 1392, 20:35 عصر
منظورتون چیه که value کار نمیکنه ؟ یعنی وقتی با post دریافت میکنید مقدارش دریافت نمیشه ؟ یا اینکه value خالیه ؟ لیست منوی شما الان محتوایی که میخواید رو نشون میده
mary008
دوشنبه 27 آبان 1392, 21: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, 08: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, 10:35 صبح
کارهایی رو گفتید انجام دادم . محتوای آرایه تغییر نمیکنه .
جالب اینحاست که این قسمت رو حذف میکنم درست کار میکنه
date("H:i" , $current)
pary_daryayi
سه شنبه 28 آبان 1392, 12:45 عصر
خب مشخصه دیگه . شما آرایه ای که دارین با مقادیری که در جدول دیتابیستون ذخیره میشه یکی نیست . با date الحاق کردین . زمان رو جدا در جدول ذخیره کنید . دقیقا نمیدونم منطق برنامتون چیه اما اگه حتما باید اینا به صورت الحاق شده در جدول دیتابیس ذخیره بشن , بازم راه حل داره .
mary008
سه شنبه 28 آبان 1392, 23:39 عصر
بله درست میگید .
من قصدم این بود که عناصر آرایه با مقدار ساعت باهم در دیتابیس ثبت بشه مثلا نوبت اول 16:00
راه دیگه ای به ذهنم نمیرسه جز اینکه با مقدار value ثبت بشه :اشتباه:
pary_daryayi
چهارشنبه 29 آبان 1392, 08:35 صبح
میشه به این شکل داخل دیتابیس درج کنید
$v .'-'. date('H:i' , $current);
بعد وقتی از دیتابیس میخونید به این شکل تفکیک کنید :
explode('-',$row[0])
اینطوری ساعت رو از محتویات جدا میکنید و با آرایه میتونید مقایسه کنید.
mary008
چهارشنبه 29 آبان 1392, 16:40 عصر
خیلی ببخشید اما چطوری دستور explode رو بنویسم کدوم قسمت کد؟ :لبخند:
pary_daryayi
چهارشنبه 29 آبان 1392, 19: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, 21:02 عصر
خیلی ممنونم از لطفتون درست شد
مررررررررررررررررررررررسی :قلب::قلب::قلب:
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.