الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف احدد من الاستعلام في خانه select option

بدأه man in dark في 18 أغسطس 2011 · 10 رد · 626 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اخواني لدي في حقل se في جدول solution ارقام او حروف مثل هكذا..

1

2

ع

9

ص

ف

وضعت صفحه تعديل البيانات يوجد بها خانه اختيارات select option

بس المشكله انه عند عرض الخيارات select optionيظهرها بالترتيب هكذا...

1

2

ع

9

ص

ف

انا اريد عند الدخول على صفحة تعديل البيانات رقم id 3 وهو حرف ع

من المفترض انه يظهر لي الترتيب في الخيارات select option هكذا....

ع

1

2

9

ص

ف

كود صفحه تعديل البيانات

<?php 
include('config.php'); 

$id=$_GET['id']; 


$sql="SELECT * FROM $tbl_name WHERE id='$id'"; 
$result=mysql_query($sql); 
$rows=mysql_fetch_array($result); 



if($_GET['action']=="up"){  


$id=addslashes($_POST['id']); 
$solution =addslashes($_POST['solution ']);


$sql="UPDATE $tbl_name SET  solution='$solution'  WHERE id='$id'"; 

$result=mysql_query($sql); 

if($result){ 
echo "<META HTTP-EQUIV='refresh' CONTENT='0; URL=view.php'>"; 
} 
else { 
echo "<center>خطاء</center>"; 
}} 
?> 
<td><form name="up" method="post" action="up.php?action=up"> 
<table > 

        <td>الخيارات</td> 
        <td> 

<?php 
echo '<select name="solution">'; 
$result=mysql_query('SELECT * FROM `solution`'); 

while($record = mysql_fetch_assoc($result)){ 
    $records[$record['id']] = $record['se']; 
} 
if(in_array($id,array_keys($records))){ 
    echo '<option value="',$records[$id],'">',$records[$id],'</option>'; 
    unset($records[$id]); 
} 
foreach($records as $key => $se){ 
    echo '<option value="',$se,'">',$se,'</option>'; 
}   
echo '</select>'; 
?> 

</td> 


    <tr> 
        <td ><br> 
              <br><br> 
              <input name="id" type="hidden" id="id" value="<? echo $rows['id']; ?>"> 
              <input type="submit" name="Submit" value="تـعديـل البيـانـات" > 
        </td> 
   </tr> 



</table> 
</form>

المشكله فقط في الخيارات select option

<?php  
echo '<select name="solution">';  
$result=mysql_query('SELECT * FROM `solution`');  

while($record = mysql_fetch_assoc($result)){  
    $records[$record['id']] = $record['se'];  
}  
if(in_array($id,array_keys($records))){  
    echo '<option value="',$records[$id],'">',$records[$id],'</option>';  
    unset($records[$id]);  
}  
foreach($records as $key => $se){  
    echo '<option value="',$se,'">',$se,'</option>';  
}    
echo '</select>';  
?>

قاعدة البيانات $tbl_name

-- بنية الجدول `tbl_name`
-- 

CREATE TABLE `tbl_name` (
  `id` int(4) NOT NULL auto_increment,
  `day` varchar(50) NOT NULL,
  `unix` varchar(20) NOT NULL,
  `solution` varchar(100) NOT NULL,

  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1256 PACK_KEYS=1 DELAY_KEY_WRITE=1 AUTO_INCREMENT=10 ;

-- 
-- إرجاع أو إستيراد بيانات الجدول `tbl_name`
-- 

INSERT INTO `ticket` (`id`,`day`,`unix`, `solution`) VALUES 
(1, 'الثلاثاء', '1265058000', '1'),
(2, 'الاحد', '1365058600', '2'),
(3, 'الثلاثاء', '1345058000', 'ع'),
(4, 'السبت', '1265555000', '9'),
(5, 'السبت', '1267777000', 'ص'),
(6, 'لااثنين', '1666058000', 'ف'),

قاعدة البيانات لجدول solution

-- بنية الجدول `solution`
-- 

CREATE TABLE `solution` (
  `id` int(4) NOT NULL auto_increment,
  `se` varchar(100) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1256 DELAY_KEY_WRITE=1 AUTO_INCREMENT=5 ;

-- 
-- إرجاع أو إستيراد بيانات الجدول `solution`
-- 

INSERT INTO `solution` (`id`, `se`) VALUES 
(1, '1'),
(2, '2'),
(3, 'ع');
(4, '9');
(5, 'ص');
(6, 'ف');
#2

اخواني المساعدة بخصوص هذا الكود

#3

ياخبراء البرمجة مساعدة الله يعطيكم العافية

#4

أخي الكريم

ما فهمته من كلامك أنك تريد عرض الخيار الذي يتم تعديله في أول القائمة

ثم يأتي بعدها باقي الخيارات من خلال الاستعلام

........

والكود الذي عرضته يقوم بذلك ما عدا أنه يكرر الخيار الذي يتم تعديله مرة في أول القائمة ومرة أخرى في مكانه الطبيعي

.......

فإذا كان هذا هو المطلوب غير هذا الجزء

foreach($records as $key => $se){  
if($key == $id) {
    continue;
  }
    echo '<option value="',$se,'">',$se,'</option>';  
}

لاحظ الشرط الذي تمت إضافته للتأكد من أن رقم id في الاستعلام ليس هو الذي يتم تعديله وفي حالة كونه هو يتم تخطي أمر الطباعة

أتمنى أن أكون وُفّقت في الوصول للمطلوب

كل عام أنتم جميعا بخير

التغير هو القانون الدائم للحياة.ودوام الحال من المحال

فلماذا لا نتغير بإرادتنا إلى ما نريد؟ قبل أن تغيرنا الحياة مجبرين إلى ما لا نريد؟

موقعي

#5

تقصد هكذا

<?php  
echo '<select name="solution">';  
$result=mysql_query('SELECT * FROM `solution`');  

while($record = mysql_fetch_assoc($result)){  
    $records[$record['id']] = $record['se'];  
}  
if(in_array($id,array_keys($records))){  
    echo '<option value="',$records[$id],'">',$records[$id],'</option>';  
    unset($records[$id]);  
}  
foreach($records as $key => $se){  
if($key == $id) {
    continue;
  }
    echo '<option value="',$se,'">',$se,'</option>';  
} 
echo '</select>';  
?>

نفس المشكله انه عند عرض الخيارات select optionيظهرها بالترتيب هكذا...

1

2

ع

9

ص

ف

انا اريد عند الدخول على صفحة تعديل البيانات رقم id 3 وهو حرف ع

من المفترض انه يظهر لي الترتيب في الخيارات select option هكذا....

ع

1

2

9

ص

ف

تم تعديل هذه المشاركة بواسطة man in dark في 21 أغسطس 2011 في 01:35

#6

بدايةً, تقسيمك للكود الخاص بك ضمن السؤال, جعلني أظن بأن السؤال يحتاج الكثير من الوقت لقراءة الكود لكل block من الموجودة في السؤال و تفحص كل منها لمعرفة أيها تسبب المشكلة حاول الاختصار و إظهار سؤالك على أنه بسيط حتى يتم الرد عليه بسرعة, لأنه كلما شعرنا بأن سؤالك يحتاج الكثير من الوقت كلما تأخر الرد عليه والله أعلم :)

ما الحاجة لتعديل الترتيب؟

لما لا تستخدم الخاصية selected ليتم اظهار الحرف المناسب في الصفحة المناسبة ضمن القائمة :

إذا كان الكود الخاص بك يعمل بشكل صحيح فهذا التعديل سيحقق المطلوب :

<?php 
include('config.php'); 

$id=$_GET['id']; 


$sql="SELECT * FROM $tbl_name WHERE id='$id'"; 
$result=mysql_query($sql); 
$rows=mysql_fetch_array($result); 



if($_GET['action']=="up"){  


$id=addslashes($_POST['id']); 
$solution =addslashes($_POST['solution ']);


$sql="UPDATE $tbl_name SET  solution='$solution'  WHERE id='$id'"; 

$result=mysql_query($sql); 

if($result){ 
echo "<META HTTP-EQUIV='refresh' CONTENT='0; URL=view.php'>"; 
} 
else { 
echo "<center>خطاء</center>"; 
}} 
?> 
<td><form name="up" method="post" action="up.php?action=up"> 
<table > 

    	<td>الخيارات</td> 
    	<td> 

<?php 
echo '<select name="solution">'; 
$result=mysql_query('SELECT * FROM `solution`'); 

while($record = mysql_fetch_assoc($result)){ 
	$records[$record['id']] = $record['se']; 
}
foreach($records as $key => $se){ 
	echo '<option value="'.$se.'" '.($key==$id?"selected='selected'":"").' >'.$se.'</option>'; 
}   
echo '</select>'; 
?> 

</td> 


	<tr> 
    	<td ><br> 
          	<br><br> 
          	<input name="id" type="hidden" id="id" value="<? echo $rows['id']; ?>"> 
          	<input type="submit" name="Submit" value="تـعديـل البيـانـات" > 
    	</td> 
   </tr> 



</table> 
</form>

عدّلت الكود الخاص بك ليخدم الفكرة ... بهذه الطريقة سيتم الحفاظ على الترتيب ذاته ولكن سيتم تثبيت القائمة على القيمة التي تخص الـ id المرسل للصفحة

جرب و أخبرنا بالنتيجة

Everything will be fine when we TALK LESS, DO MORE


#7

الله يعطيك العافية اخي الكود مثل ماهو مطلوب بس مشكلته يكرر قيمه id مرتين

مرة تثبيت القيمه على القائمة ومرة اخرى عشوائي

يعني يكون الناتج هكذا

ع

1

2

ع

9

ص

ف

#8

هل قمت بنسخ الكود المعدل الموجود في ردي أم قمت بتعديل الكود الموجود لديك؟

من المفترض أن لا يتكرر, ﻷني قمت بإزالة السطر الذي يسبب التكرار و الذي كان موجوداً في الكود الخاص بك

Everything will be fine when we TALK LESS, DO MORE


#9

لقد قمت بنسخ الكود كامل

<?php 
include('config.php'); 

$id=$_GET['id']; 


$sql="SELECT * FROM $tbl_name WHERE id='$id'"; 
$result=mysql_query($sql); 
$rows=mysql_fetch_array($result); 



if($_GET['action']=="up"){  


$id=addslashes($_POST['id']); 
$solution =addslashes($_POST['solution ']);


$sql="UPDATE $tbl_name SET  solution='$solution'  WHERE id='$id'"; 

$result=mysql_query($sql); 

if($result){ 
echo "<META HTTP-EQUIV='refresh' CONTENT='0; URL=view.php'>"; 
} 
else { 
echo "<center>خطاء</center>"; 
}} 
?> 
<td><form name="up" method="post" action="up.php?action=up"> 
<table > 

        <td>الخيارات</td> 
        <td> 

<?php 
echo '<select name="solution">'; 
$result=mysql_query('SELECT * FROM `solution`'); 

while($record = mysql_fetch_assoc($result)){ 
        $records[$record['id']] = $record['se']; 
}
foreach($records as $key => $se){ 
        echo '<option value="'.$se.'" '.($key==$id?"selected='selected'":"").' >'.$se.'</option>'; 
}   
echo '</select>'; 
?> 

</td> 


        <tr> 
        <td ><br> 
                <br><br> 
                <input name="id" type="hidden" id="id" value="<? echo $rows['id']; ?>"> 
                <input type="submit" name="Submit" value="تـعديـل البيـانـات" > 
        </td> 
   </tr> 



</table> 
</form>
#10

أخي الكريم

بارك الله فيك

يا ريت تحدد ماذا تريد بالضبط من أكواد صفحتك؟

هل تريد مثلا تحديد خيار من خيارات قائمة وتريد أن يظل هذا الخيار محدداً بعد إعادة تحميل الصفحة؟

في هذه الحالة لا يلزمك سوى مثل هذا الكود لعرض القائمة

echo '<select name="solution">'; 
$result=mysql_query('SELECT * FROM `solution`'); 
while($records = mysql_fetch_array($result)){ 
    echo '<option value="'.$records['id'].'" '.($records['id']==$id?'selected="selected"':'').'>'.$records['se'].'</option>'; 
}   
echo '</select>';

ويمكنك تعديل ملفك على هذه الطريقة

التغير هو القانون الدائم للحياة.ودوام الحال من المحال

فلماذا لا نتغير بإرادتنا إلى ما نريد؟ قبل أن تغيرنا الحياة مجبرين إلى ما لا نريد؟

موقعي

#11

الله يعطيكم العافية لمشاركتكم

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…