سلام
یک لیست منو دارم که اطلاعات داخلش رو از یک آرایه میگیره و با انتخاب اون مقدار داخلش ثبت دیتابیس میشه . حالا میخوام واسه کاربر دیگه اطلاعاتی که ثبت شده نمایش داده نشه . چطوری اینکار رو بکنم؟
مرسی
سلام
یک لیست منو دارم که اطلاعات داخلش رو از یک آرایه میگیره و با انتخاب اون مقدار داخلش ثبت دیتابیس میشه . حالا میخوام واسه کاربر دیگه اطلاعاتی که ثبت شده نمایش داده نشه . چطوری اینکار رو بکنم؟
مرسی
جدا از کدایگنایتر , منطق این کار رو بلدین ؟
بله میدونم که باید یک بررسی انجام بشه که اگر اون فیلد مورد نظر با این که ارسال میشه یکسان بود اونو نمایش نده .
اما کدنویسیش مشکله :(
این آرایه ای که اطلاعات لیست منو از اونه , ثابته ؟ یا در دیتابیس ذخیره شده ؟
اگه درست متوجه منظورتون شده باشم این میشه کدش :
$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>
ممنونم از شما :)
اما نمیدونم چرا یه سری داده بهش اضافه کردم دیگه کار نکرد :-/
<?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>
این خط رو حذف کنید تست کنید :
if($s !== '0')
و اینکه جدول tb1 شما شامل چه فیلدهایی هست ؟ باید طبق جدول خودتون $row رو واکشی کنید .
حذف کردم اما درست نشد
وقتی که value لیست منو رو اضافه میکنم دیگه کار نمیکنه :|
جدولم فقط یک فیلد داره که محتوای لیست منو داخل اون نگه داری میشه.
آخرین ویرایش به وسیله mary008 : دوشنبه 27 آبان 1392 در 11:53 صبح
خب اگه یک فیلد داره بجای $row[1] باید بنویسید $row[0] :
while($row=mysql_fetch_array($res))
{
$search[]=$row[0];
}
منظورتون چیه که value کار نمیکنه ؟ یعنی وقتی با post دریافت میکنید مقدارش دریافت نمیشه ؟ یا اینکه value خالیه ؟ لیست منوی شما الان محتوایی که میخواید رو نشون میده
آره اونو صفر کردم درست شد اما بازم با 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]);
}
در حال ممنون خیلی زحمت کشیدید
آخرین ویرایش به وسیله mary008 : دوشنبه 27 آبان 1392 در 21:58 عصر
من باز هم خوب متوجه نشدم . ولی اون if رو که کلا حذف کنید .
بعد از foreach هم با print_r تست کنید ببینید محتویاتی که میخواید رو شامل میشه یا نه ( یعنی باید آرایه شامل عناصر آرایه ای اول منهای عناصر پایگاه دادتون باشه )
foreach ($search as $x)
{
$s=array_search($x,$a);
unset($a[$s]);
}
echo '<pre>';
print_r($a);
echo '</pre>';
کارهایی رو گفتید انجام دادم . محتوای آرایه تغییر نمیکنه .
جالب اینحاست که این قسمت رو حذف میکنم درست کار میکنه
date("H:i" , $current)
خب مشخصه دیگه . شما آرایه ای که دارین با مقادیری که در جدول دیتابیستون ذخیره میشه یکی نیست . با date الحاق کردین . زمان رو جدا در جدول ذخیره کنید . دقیقا نمیدونم منطق برنامتون چیه اما اگه حتما باید اینا به صورت الحاق شده در جدول دیتابیس ذخیره بشن , بازم راه حل داره .
بله درست میگید .
من قصدم این بود که عناصر آرایه با مقدار ساعت باهم در دیتابیس ثبت بشه مثلا نوبت اول 16:00
راه دیگه ای به ذهنم نمیرسه جز اینکه با مقدار value ثبت بشه
میشه به این شکل داخل دیتابیس درج کنید
$v .'-'. date('H:i' , $current);
بعد وقتی از دیتابیس میخونید به این شکل تفکیک کنید :
explode('-',$row[0])
اینطوری ساعت رو از محتویات جدا میکنید و با آرایه میتونید مقایسه کنید.
خیلی ببخشید اما چطوری دستور explode رو بنویسم کدوم قسمت کد؟
اطلاعات شما در دیتابیس چطوری ذخیره شده ؟
اگه بعنوان مثال به این شکل ذخیره میشه :
html-12:20
css-05:10
ما میایم با explode تفکیک میکنیم و قسمت اول رو در نظر میگیریم .یعنی شما باید while رو به این شکل تغییر بدین .
while($row=mysql_fetch_array($res))
{
$result=explode('-',$row[0]);
$search[]=$result[0];
}
خیلی ممنونم از لطفتون درست شد
مررررررررررررررررررررررسی