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

قيمة ال select menu لا تتخزن في الداتابيس

بدأه danteeliquid في 13 أغسطس 2012 · 6 رد · 598 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

كتبت كود تحديث بيانات لصف مخزن في الداتابيس يقوم بتحديث قيم جميع ال text box ما عدا ال drop down menu القائمة المنسدلة لا يتم تحديث قيمتها ولم اعلم سبب المشكله

هذا هو الكود

<?php
include('../include/connect.php');
error_reporting (E_ALL ^ E_NOTICE);


$id = intval($_GET['id']);
$emp_ssn = mysql_real_escape_string(htmlspecialchars($_POST['emp_ssn']));
$ar_name = mysql_real_escape_string(htmlspecialchars($_POST['ar_name']));
$en_name = mysql_real_escape_string(htmlspecialchars($_POST['en_name']));
$emp_state = mysql_real_escape_string(htmlspecialchars($_POST['emp_state']));
$emp_level = mysql_real_escape_string(htmlspecialchars($_POST['emp_level']));
$current_job = mysql_real_escape_string(htmlspecialchars($_POST['current_job']));
$work_before = mysql_real_escape_string(htmlspecialchars($_POST['work_before']));
$work_year = mysql_real_escape_string(htmlspecialchars($_POST['work_year']));
$work_place = mysql_real_escape_string(htmlspecialchars($_POST['work_place']));


if(isset($_POST['edit']) and $_POST['edit'] == 'news')
{
  $update = mysql_query("UPDATE employee SET emp_ssn='$emp_ssn', ar_name='$ar_name' , en_name='$en_name' ,emp_state='$emp_state' , 
                                 emp_level='$emp_level' , current_job='$current_job' , Work_before = '$work_before' ,
								 Work_year='$work_year' , Work_place='$work_place'  
								 WHERE emp_ssn='$emp_ssn'")
                                  or die(" not updated");

		if(isset($update))
         {
		    echo" update is done ";
         }		 
}


$query = mysql_query("SELECT * FROM employee WHERE emp_ssn='".$id."'") or die("mysql ERROR");
$re = mysql_fetch_assoc($query);

if($_REQUEST['do']=='edit') {
echo "<form action='".$_SERVER['PHP_SELF']."' method='post'> 


<table border='1' >
<tr>
<td colspan='2'><b><font color='Red'>Edit Records </font></b></td>
</tr>
<tr>
<td width='179'>
<b><font color='#663300'>Card Id</font></b></td>
<td><label>
<input type='text' name='emp_ssn' value='".$re['emp_ssn']."' />
</label></td>
</tr>

<tr>
<td width='179'><b><font color='#663300'>Arabic Name</font></b></td>
<td><label>
<input type='text' name='ar_name' value='".$re['ar_name']."' />
</label></td>
</tr>

<tr>
<td width='179'><b><font color='#663300'>English Name</font></b></td>
<td><label>
<input type='text' name='en_name' value='".$re['en_name']."' />
</label></td>
</tr>


<tr>
<td width='179'><b><font color='#663300'>State</font></b></td>
<td><label>
<input type='text' name='emp_state' value='".$re['emp_state']."' />
</label></td>
</tr>


<tr>
<td width='179'><b><font color='#663300'>Level</font></b></td>
<td><label>
<input type='text' name='emp_level' value='".$re['emp_level']."' />
</label></td>
</tr>

<tr>
<td width='179'><b><font color='#663300'>Current Job</font></b></td>
<td><label>
<input type='text' name='current_job' value='".$re['current_job']."' />
</label></td>
</tr>

<tr>
<td width='179'><b><font color='#663300'>Work Before</font></b></td>
<td><label>
<input type='text' name='work_before' value='".$re['Work_before']."' />
</label></td>
</tr>

<tr>
<td width='179'><b><font color='#663300'>Year of work</font></b></td>
<td><label>
<input type='text' name='work_year' value='".$re['Work_year']."' />
</label></td>
</tr>


<tr>
<td width='179'><b><font color='#663300'>Last work place</font></b></td>
<td><label>

<select size='1' name='Work_place' id='Work_place'  tabindex='6'   >
  <option value='' selected>Please select job...</option>
  <option value='".$re['WAITING AREA MANAGER']."'> WAITING AREA MANAGER</option>
  <option value='".$re['ASSIT WAITING AREA MANAGER']."'> ASSIT WAITING AREA MANAGER</option>
  <option value='".$re['SUPER WAITING AREA']."'> SUPER WAITING AREA</option>
  <option value='".$re['STATION AGENT WAITING AREA']."'> STATION AGENT WAITING AREA</option>
  <option value='".$re['ACCES WAITING AREA MANAGER']."'> ACCES WAITING AREA MANAGER</option>
  <option value='".$re['ASSIT. ACCES WAITING AREA MANAGER']."'> ASSIT. ACCES WAITING AREA MANAGER</option>
  <option value='".$re['SUPER ACCES WAITING AREA']."'> SUPER ACCES WAITING AREA</option>
  <option value='".$re['STATION AGENT WAITING AREA']."'> STATION AGENT WAITING AREA</option>
  <option value='".$re['TRAIN ATTINDDENT']."'> TRAIN ATTINDDENT</option>
  <option value='".$re['مرشد تفويج']."'> مرشد تفويج</option>
  <option value='".$re['STATION AGENT PLATFORM']."'> STATION AGENT PLATFORM</option>
  <option value='".$re['STATION AGENT ROVING']."'> STATION AGENT ROVING</option>
  <option value='".$re['STATION AGENT']."'> STATION AGENT</option>
  <option value='".$re['PSD OPRITOR']."'> PSD OPRITOR</option>
  </select>

</label></td>
</tr>


<tr align='Right'>
<td colspan='2'><label>
<input type='submit' name='submit' value='Edit Records'>
</label></td>
</tr>
</table>

<input type='hidden' name='id' value='".$id."'/>
<input type='hidden' name='edit' value='news'/>

</form>";
}


$data = mysql_query("select * from employee order by emp_ssn desc") or die(mysql_error());

echo "<table border='1' cellpadding='3'>";
echo "<tr>
<th><font color='Red'>Card Id</font></th>
<th><font color='Red'>Name</font></th>
<th><font color='Red'>State</font></th>
<th><font color='Red'>Level</font></th>
<th><font color='Red'>Current Job</font></th>
<th><font color='Red'>work brfore</font></th>
<th><font color='Red'>Year of work</font></th>
<th><font color='Red'>Last work place</font></th>
<th colspan=2><font color='Red'>Operation</th>

</tr>";

while($row = mysql_fetch_array($data))
{
echo "<tr>";
echo '<td><b><font color="#663300">' . $row['emp_ssn'] . '</font></b></td>';
echo '<td><b><font color="#663300">' . $row['ar_name'] .'<br>' . $row['en_name'] . '</font></b></td>';
echo '<td><b><font color="#663300">' . $row['emp_state'] . '</font></b></td>';
echo '<td><b><font color="#663300">' . $row['emp_level'] . '</font></b></td>';
echo '<td><b><font color="#663300">' . $row['current_job'] . '</font></b></td>';
echo '<td><b><font color="#663300">' . $row['Work_before'] . '</font></b></td>';
echo '<td><b><font color="#663300">' . $row['Work_year'] . '</font></b></td>';
echo '<td><b><font color="#663300">' . $row['Work_place'] . '</font></b></td>';
echo '<td><b><font color="#663300"><a href="ed.php?do=edit&id=' . $row['emp_ssn'] . '">Edit</a></font></b></td>';
echo '<td><b><font color="#663300"><a href="delete1.php?id=' . $row['emp_ssn'] . '">Delete</a></font></b></td>';
echo "</tr>";
}
echo "</table>";

?>

ياليت اذا احد عرف الحل يساعدني ويقولي اين المشكله وكيف يتم تعديلها

شكرا جزيلا

#2

ما هي القيم التي تتوقع أن يتم إظهارها أساساً هنا:

<select size='1' name='Work_place' id='Work_place'  tabindex='6'   >
  <option value='' selected>Please select job...</option>
  <option value='".$re['WAITING AREA MANAGER']."'> WAITING AREA MANAGER</option>
  <option value='".$re['ASSIT WAITING AREA MANAGER']."'> ASSIT WAITING AREA MANAGER</option>
  <option value='".$re['SUPER WAITING AREA']."'> SUPER WAITING AREA</option>
  <option value='".$re['STATION AGENT WAITING AREA']."'> STATION AGENT WAITING AREA</option>
  <option value='".$re['ACCES WAITING AREA MANAGER']."'> ACCES WAITING AREA MANAGER</option>
  <option value='".$re['ASSIT. ACCES WAITING AREA MANAGER']."'> ASSIT. ACCES WAITING AREA MANAGER</option>
  <option value='".$re['SUPER ACCES WAITING AREA']."'> SUPER ACCES WAITING AREA</option>
  <option value='".$re['STATION AGENT WAITING AREA']."'> STATION AGENT WAITING AREA</option>
  <option value='".$re['TRAIN ATTINDDENT']."'> TRAIN ATTINDDENT</option>
  <option value='".$re['مرشد تفويج']."'> مرشد تفويج</option>
  <option value='".$re['STATION AGENT PLATFORM']."'> STATION AGENT PLATFORM</option>
  <option value='".$re['STATION AGENT ROVING']."'> STATION AGENT ROVING</option>
  <option value='".$re['STATION AGENT']."'> STATION AGENT</option>
  <option value='".$re['PSD OPRITOR']."'> PSD OPRITOR</option>
  </select>

هل العبارات WAITING AREA MANAGER, ASSIT WAITING AREA MANAGER هي أعمدة موجودة فعلاً؟ وبفرض أنها أعمدة فهناك مسافات بين الكلمات وهذا خطأ.. أساساً لا يمكنك إدراج عمود وفي اسمه مسافة.

بالتالي ما هي القيم التي تتوقع منها الظهور في الحقل value='..'

أعتقد

أنك تريد في حال اختيار المستخدم للخيار: ASSIT WAITING AREA MANAGER

أن يتم تخزين هذا الخيار للموظف، وفي هذه الحالة يكفي أن تكتبه بالشكل:

<option value='ASSIT WAITING AREA MANAGER'> ASSIT WAITING AREA MANAGER</option>

أي أن القيمة تصبح نص عادي ليتم تخزينه لاحقاً في الجزء التالي من استعلام UPDATE:

, Work_place='$work_place'

* بالمناسبة: أنصحك أن تقوم باستخدام MySQLi أو PDO بدلاً من MySQL لأنها تدعم prepared statements و stored procedures حتى تخفف من عناء تفادي ثغرات SQL injection/XSS.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#3
Xacker كتب:

ما هي القيم التي تتوقع أن يتم إظهارها أساساً هنا:

<select size='1' name='Work_place' id='Work_place'  tabindex='6'   >
  <option value='' selected>Please select job...</option>
  <option value='".$re['WAITING AREA MANAGER']."'> WAITING AREA MANAGER</option>
  <option value='".$re['ASSIT WAITING AREA MANAGER']."'> ASSIT WAITING AREA MANAGER</option>
  <option value='".$re['SUPER WAITING AREA']."'> SUPER WAITING AREA</option>
  <option value='".$re['STATION AGENT WAITING AREA']."'> STATION AGENT WAITING AREA</option>
  <option value='".$re['ACCES WAITING AREA MANAGER']."'> ACCES WAITING AREA MANAGER</option>
  <option value='".$re['ASSIT. ACCES WAITING AREA MANAGER']."'> ASSIT. ACCES WAITING AREA MANAGER</option>
  <option value='".$re['SUPER ACCES WAITING AREA']."'> SUPER ACCES WAITING AREA</option>
  <option value='".$re['STATION AGENT WAITING AREA']."'> STATION AGENT WAITING AREA</option>
  <option value='".$re['TRAIN ATTINDDENT']."'> TRAIN ATTINDDENT</option>
  <option value='".$re['مرشد تفويج']."'> مرشد تفويج</option>
  <option value='".$re['STATION AGENT PLATFORM']."'> STATION AGENT PLATFORM</option>
  <option value='".$re['STATION AGENT ROVING']."'> STATION AGENT ROVING</option>
  <option value='".$re['STATION AGENT']."'> STATION AGENT</option>
  <option value='".$re['PSD OPRITOR']."'> PSD OPRITOR</option>
  </select>

هل العبارات WAITING AREA MANAGER, ASSIT WAITING AREA MANAGER هي أعمدة موجودة فعلاً؟ وبفرض أنها أعمدة فهناك مسافات بين الكلمات وهذا خطأ.. أساساً لا يمكنك إدراج عمود وفي اسمه مسافة.

بالتالي ما هي القيم التي تتوقع منها الظهور في الحقل value='..'

أعتقد

أنك تريد في حال اختيار المستخدم للخيار: ASSIT WAITING AREA MANAGER

أن يتم تخزين هذا الخيار للموظف، وفي هذه الحالة يكفي أن تكتبه بالشكل:

<option value='ASSIT WAITING AREA MANAGER'> ASSIT WAITING AREA MANAGER</option>

أي أن القيمة تصبح نص عادي ليتم تخزينه لاحقاً في الجزء التالي من استعلام UPDATE:

, Work_place='$work_place'

* بالمناسبة: أنصحك أن تقوم باستخدام MySQLi أو PDO بدلاً من MySQL لأنها تدعم prepared statements و stored procedures حتى تخفف من عناء تفادي ثغرات SQL injection/XSS.

شكرا يا استاذي على الرد

فعلا انا اريد تخزينها كا جمله تظهر اثناء الاستعلام مشكلتي انني دائما اتعامل مع ال update عن طريق ال textbox لم اجرب فورمات اخرى

قد فعلت يا استاذي ما اخبرتي به لكن ما زالت الجملة لا تتخزن في العمود ولا تظهر لي عندما اقوم بتحديثها ربما هناك شيء قد غفلت عنه ولم انتبه له ارجو ارشادي له

<tr>
<td width='179'><b><font color='#663300'>Last work place</font></b></td>
<td><label>

<select size='1' name='Work_place' id='Work_place'  tabindex='6'   >
  <option value='' selected>Please select job...</option>
  <option value='WAITING AREA MANAGER'> WAITING AREA MANAGER</option>
  <option value='ASSIT WAITING AREA MANAGER'> ASSIT WAITING AREA MANAGER</option>
  <option value='SUPER WAITING AREA'> SUPER WAITING AREA</option>
  <option value='STATION AGENT WAITING AREA'> STATION AGENT WAITING AREA</option>
  <option value='ACCES WAITING AREA MANAGER'> ACCES WAITING AREA MANAGER</option>
  <option value='ASSIT. ACCES WAITING AREA MANAGER'> ASSIT. ACCES WAITING AREA MANAGER</option>
  <option value='SUPER ACCES WAITING AREA'> SUPER ACCES WAITING AREA</option>
  <option value='STATION AGENT WAITING AREA'> STATION AGENT WAITING AREA</option>
  <option value='TRAIN ATTINDDENT'> TRAIN ATTINDDENT</option>
  <option value='STATION AGENT PLATFORM'>STATION AGENT PLATFORM</option>
  <option value='STATION AGENT ROVING'> STATION AGENT ROVING</option>
  <option value='STATION AGENT'> STATION AGENT</option>
  <option value='PSD OPRITOR'> PSD OPRITOR</option>
  </select>

</label></td>
</tr>

ما زلت مبتداة mysql احاول ان اتقن الاساسيات ربما بعد ان اصل الى مرحلة متقدمة قليلا انتقل الى ما نصحتني به لكن شكرا جزيلا نصيحتك ساخذها في عين الاعتبار

#4

جربي التالي..

استبدلي

$work_place = mysql_real_escape_string(htmlspecialchars($_POST['work_place']));

بـ

$work_place = mysql_real_escape_string(htmlspecialchars($_POST['Work_place']));

لاحظي حرف W أصبح capital تماماً كما يظهر في:

<select size='1' name='Work_place' id='Work_place'  tabindex='6'   >

أو

استبدلي

<select size='1' name='Work_place' id='Work_place'  tabindex='6'   >

بـ

<select size='1' name='work_place' id='Work_place'  tabindex='6'   >

هل يحل هذا المشكلة؟

اقتباس
ما زلت مبتداة mysql احاول ان اتقن الاساسيات ربما بعد ان اصل الى مرحلة متقدمة قليلا انتقل الى ما نصحتني به لكن شكرا جزيلا نصيحتك ساخذها في عين الاعتبار

أود فقط الإشارة إلى أني لم أقصد MySQL كلغة للاستعلام من القاعدة، ولكن قصدت MySQL كـ driver/class/API التي يتم التعامل معها عبر PHP

بالتالي MySQL و MySQLi وجهان لعملة واحدة (الاستعلام تقريباً هو نفسه) ولكن MySQLi و PDO تقدّمان توابع متطورة أكثر للتعامل معها ستقيك من ثغرات SQL injection الخطيرة (على الرغم من بساطتها لكنها يمكن أن تؤدي لاختراق موقع بالكامل بسهولة)

يرجى الإطلاع على النصيحة الثالثة في هذا الموضوع: http://www.4svu.com/forum/showthread.php?t=7433

أنصحك فعلاً بالبدء باستخدامها من الآن وأنت مبتدأة لأن العلم في الصغر كالنقش في الحجر وستصبح عادة جيّدة لديك مع الوقت .

post-7008-093087100 1344911461_thumb.png
المرفقات
8-14-2012 5-29-59 AM.png
1

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#5

شكرا جزيلا يا استاذي نعم كانت المشكله في مسمى المتغير نسيت ان اقوم بكتابته بال capetal لم افكر بذلك مطلقا ظننته شيئا في الكود غفلت عنه

كلامك صحيح يا استاذي كنت قرات عن الثغرات وكيفية استغلالها اظنني ساقوم بالعمل بنصيحتك بما انني ما زلت بالبداية :) :)

#6

السلام عليكم

انا كان عندي نفس المشكلة السابقة وهي تخزين القيم قي العمود وتم حلها الحمدلله

لكن الان ظهرت لي مشكله عند القيام بتحديث البيانات للمستخدم كيف اجعل ال select = selected تقوم بالاشارة للقيمة الجديدة وتظهر في فورم التعديل ال option الذي قمت باختياره ؟؟

تم تعديل هذه المشاركة بواسطة code20 في 15 أغسطس 2012 في 15:29

#7

ضع وصف مشكلتك في موضوع جديد بوصف واضح وكامل ومستقل

أيضاً استخدم تنسيق CODE من شريط الأدوات حتى تظهر الشفرة بشكل واضح

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

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