PDA

View Full Version : حرفه ای: ویرایش چند فیلد همزمان



reza10wert
دوشنبه 05 تیر 1391, 18:44 عصر
سلام
من چندین رکورد دارم . مثلا هر کس یک امتیازی داره .

حالا هر نفر هر هفته یک امتیاز کسب میکنه .

حالا میخوام همه این رکوردها را یک جا فراخوانی کنم و جلوی هر کدوم یک فیلد باشه برای وارد کردن یک عدد و وقتی دکمه ثبت رو بزنم هر امتیاز که مربوط به هر فرد هست به امتیاز قبلیش اضافه بشه

reza10wert
دوشنبه 05 تیر 1391, 23:46 عصر
کسی نیست ؟

MMSHFE
سه شنبه 06 تیر 1391, 12:21 عصر
کار پیچیده ای نیست. کافیه یک فرم داشته باشین که همه اطلاعات رو میخونه و فقط مکانیزمی انتخاب کنید که مشخص بشه هر خونه مال کدوم رکورده. برای مثال:


mysql_connect('localhost', 'root', '') or die('Connection error');
mysql_select_db('dbname') or die('Database error');
mysql_query('SET NAMES \'utf8\'');
$users = mysql_query('SELECT `id`,`name`,`score` FROM `users` ORDER BY `id`');
if($users && mysql_num_rows($users) > 0) {
echo '<form action="" method="post">'.PHP_EOL;
echo '<table>'.PHP_EOL;
while($user = mysql_fetch_assoc($users)) {
echo '<tr>';
echo '<td>'.$user['name'].'</td>';
echo '<td><input name="'.$user['id'].'" type="text" value="'.$user['score'].'"></td>';
echo '</tr>'.PHP_EOL;
}
mysql_free_result($users);
echo '</table>'.PHP_EOL;
echo '<input name="submitted" type="submit" value="Save"/>'.PHP_EOL;
echo '</form>'.PHP_EOL;
}

حالا توی صفحه مقصد فرم این کد رو بنویسید:


if(isset($_POST['submitted'])) {
mysql_connect('localhost', 'root', '') or die('Connection error');
mysql_select_db('dbname') or die('Database error');
mysql_query('SET NAMES \'utf8\'');
foreach($_POST as $key => $value) {
if(is_numeric($key)) {
mysql_query("UPDATE `users` SET `score`='{$value}' WHERE (`id`='{$key}')");
}
}
}

اینجا هم میبینید که مقادیر id از آرایه POST_$ استخراج میشن که در واقع اندیس خونه های این آرایه هستن (به کد فرم دقت کنید) و بعد، برحسب idهای ارسال شده، رکورد مربوطه با مقدار اون خونه از آرایه POST_$ یعنی امتیاز جدید هر کاربر UPDATE میشن.
موفق باشید.