Привет ВСЕМ! Вот код: PHP: <?php error_reporting("E_ERROR"); require_once "../config.php"; function add_new() { echo "<center><font class=\"title\"><b>Панель управления</b></font><br><br>" ."[ <a href=\"password.php?up=new_account\">Добавить пользователя</a>" ." | <a href=\"password.php?up=update\">Редактировать</a> ]"; } add_new(); function update() { ?> <HTML> <head> <TITLE>Учетные записи</TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251"> </head> <BODY> <center><h2>Учетные записи</h2></center> <form method="POST" action="update.php"> <center><table width="400" border="0" cellspacing="1" cellpadding="4" align="center" bgcolor="#336699"> <td align="center">№</td> <td align="center">Логин</td> <td align="center">Роль</td> <td align="center">Действие</td> </td> </tr> <?php $per_page=pages; // получаем номер страницы if (isset($_GET['page'])) $page=($_GET['page']-1); else $page=0; // вычисляем первый оператор для LIMIT $start=abs($page*$per_page); // составляем запрос и выводим записи // переменную $start используем, как нумератор записей. $sql="SELECT auth.id,login, role.name FROM auth, role where auth.role=role.id_role ORDER BY id LIMIT $start,$per_page"; $result=db($sql); $j=1; $bgr='1'; if($bgr==1) { $bgcolor='#F5F5F5'; $bgr=0; } else { $bgcolor='#FFFFFF'; $bgr=1; } $sql=("select * from auth, role where auth.role=role.id_role ORDER BY idS"); $result=db($sql); while($row = mysql_fetch_array($result)) { ?> <tr bgcolor="<?=$bgcolor?>" onMouseOut=this.style.backgroundColor="<?=$bgcolor?>" onMouseOver=this.style.backgroundColor="#BED9FB"> <td align="center"><?=$j++ ?><input type="hidden" name="id" value="<?=$row['id']?>"></td> <td align="center"><b><input type="text" name="login" value="<?=$row['login'] ?>"></b></td> <td align="center"><b><?=$row['name'] ?></b></td> <td width="75"><center><a href="delete.php?id=<?=$row['id']?>"><img src="../images/b_drop.png" border="0" alt=""></a> <input type="image" src="../images/b_edit.png"> </center></td> </tr> <?php } ?> </table> </form> <br> <?php $sql="SELECT count(*) FROM auth"; $result=db($sql); $row=mysql_fetch_row($result); $total_rows=$row[0]; $num_pages=ceil($total_rows/$per_page); for($i=1;$i<=$num_pages;$i++) { if ($i-1 == $page) { echo $i." "; } else { echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'">'.$i."</a> "; } } } function new_account() { ?> <center><h2>Добавленеи новой учетной записи</h2></center> <form method="POST" action="add_account.php"> <table width="200" border="0" cellspacing="1" cellpadding="4" align="center" bgcolor="#336699"> <tr> <td width="80">Логин:</td> <td width="180"><input type="text" name="login" size="25"></td> </tr> <tr> <td width="80">Фамилия:</td> <td width="180"><input type="text" name="fam" size="25"></td> </tr> <tr> <td width="80">Имя:</td> <td width="180"><input type="text" name="names" size="25"></td> </tr> <tr> <td width="80">Отчество:</td> <td width="180"><input type="text" name="otc" size="25"></td> </tr> <tr> <td width="80">Пароль:</td> <td width="180"><input type="password" name="passw" size="25"></td> <td align="center"> <select name="role"> <option value="0">Роль пользователя</option> <option value="1">Администратор</option> <option value="2">Модератор</option> <option value="3">Пользователь</option> </select> </tr> <tr><td><input type="submit" value="Добавить"></td></tr> </table> </form> <?php } switch($_GET['up']) { case "update": update (); break; case "new_account": new_account (); break; } ?> </body> </html> Вот КОД UPDATE.PHP PHP: <?php <?php require_once "../config.php"; $sql = ("update auth set login='".$_POST['login']."' WHERE id = '".$_POST['id']."'"); $result=db($sql); if($result) { print "<HTML><HEAD>\n"; print "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=".$_SERVER["HTTP_REFERER"]."'>\n"; print "</HEAD><BODY></BODY></HTML>\n"; } else { print "Ошибка при обращении к базе данных"; } ?> ?> Характер проблемы: Скрипт выводит записи из таблицы 1) аааааааа 2) бббббббб 3) вввввввв Хочу отредактировать 2 поле с ббббб на гггггг , а скрипт почемуто обновляет только последнею строчку 3) вввввв ВОПРОС: Где я ошибся или что сделал не так???
Давайте не будем отходить от темы, я выложил конкретный вопрос, на который хочу получить ответ, а не разводить споры по названию темы и т.д. МОДЕРАТОР может удалить тему на его УСМОТРЕНИЕ!
причём уже дважды да, и кстати, если отправлять на обновление не через форму, а ссылкой (так же как и delete), то будет работать нормально. У тебя несколько полей с одним именем и последний как раз и отправляется на обработку. ЗЫ. Кто-нибудь, скажите, месячник уже закончился?
Целых пять минут ушло на выяснение ошибки, и то, не нашел бы, если бы сам не допускал раньше таких ошибок. Это 56 строка. Выводится в цикле: HTML: <input type="hidden" name="id" value="1"> <input type="hidden" name="id" value="2"> <input type="hidden" name="id" value="3"> Вот клиент и посылает серверу, что форма имеет поле id = 3 Для отлова этой ошибки, при получении POST данных сделайте var_dump($_POST); и увидите что я хотел сказать Как править? Учимся разделять код от верстки, думаем как это сделать грамотно, но в любом случае: в одном месте обращение к базе данных, в другом отображение данных. В первом не должно быть никакого HTML'a, никаких echo. Подсказка: HTML: <input type="hidden" name="id[]" value="2">
Всем спасибо за помощь, вроде разобрался и все работает. Переделал вот так PHP: <?php error_reporting("E_ERROR"); require_once "../config.php"; function add_new() { echo "<center><font class=\"title\"><b>Панель управления</b></font><br><br>" ."[ <a href=\"password.php?up=new_account\">Добавить пользователя</a>" ."| <a href=\"password.php?up=update\">Редактировать</a> ]"; } add_new(); function update() { ?> <HTML> <head> <TITLE>Учетные записи</TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251"> </head> <BODY> <center><h2>Учетные записи</h2></center> <!--<form method="GET" action="password.php">--> <center><table width="400" border="0" cellspacing="1" cellpadding="4" align="center" bgcolor="#336699"> <td align="center">№</td> <td align="center">Логин</td> <td align="center">Фамилия</td> <td align="center">Имя</td> <td align="center">Отчество</td> <td align="center">Роль</td> <td align="center">Действие</td> </td> </tr> <?php $per_page=pages; // получаем номер страницы if (isset($_GET['page'])) $page=($_GET['page']-1); else $page=0; // вычисляем первый оператор для LIMIT $start=abs($page*$per_page); // составляем запрос и выводим записи // переменную $start используем, как нумератор записей. $sql="SELECT auth.id_aut,login,fam,name,otc, role.name_role FROM auth, role where auth.role=role.id_role ORDER BY id_aut LIMIT $start,$per_page"; $result=db($sql); $j=1; $bgr='1'; while($row = mysql_fetch_array($result)) { if($bgr==1) { $bgcolor='#F5F5F5'; $bgr=0; } else { $bgcolor='#FFFFFF'; $bgr=1; } echo "<tr bgcolor=\"$bgcolor\" onMouseOut=this.style.backgroundColor=\"$bgcolor\" onMouseOver=this.style.backgroundColor=\"#BED9FB\">"; echo "<form action='password.php' method='GET'>"; echo "<td align=\"center\">".$j++."</td>"; echo "<td align=\"center\"><input type='text' name='login' value='".$row['login']."' size='10' maxlength='100'></td>"; echo "<td align=\"center\"><input type='text' name='fam' value='".$row['fam']."' size='10' maxlength='100'></td>"; echo "<td align=\"center\"><input type='text' name='name' value='".$row['name']."' size='10' maxlength='100'></td>"; echo "<td align=\"center\"><input type='text' name='otc' value='".$row['otc']."' size='10' maxlength='100'></td>"; echo "<td align=\"center\">".$row['name_role']." </td>"; echo "<input type='hidden' name='id_aut' value='".$row['id_aut']."' size='10' maxlength='255'>"; echo "<td align=\"center\"><input type='hidden' name='up' value='upd'>" ."<input type='image' src='../images/b_edit.png' title='Сохр.'> </form>"; echo "<a href=\"password.php?up=del&id=".$row['id_aut']."\" title=\"Удалить\"><img src=../images/b_drop.png border=\"0\" alt=\"\"></a>"; echo "</td></tr>"; } echo "</center></table><br>"; ?> <!-- <tr bgcolor="<?=$bgcolor?>" onMouseOut=this.style.backgroundColor="<?=$bgcolor?>" onMouseOver=this.style.backgroundColor="#BED9FB"> <td align="center"><?= $j++ ?></td> <td align="center"><b><input type="text" name="login" value="<?=$row['login'] ?>"></b></td> <td align="center"><b><input type="text" name="fam" value="<?=$row['fam'] ?>"></b></td> <td align="center"><b><input type="text" name="name" value="<?=$row['name'] ?>"></b></td> <td align="center"><b><input type="text" name="otc" value="<?=$row['otc'] ?>"></b></td> <input type="hidden" name="id_aut[]" value="2"> <td align="center"><b><?=$row['name_role'] ?></b></td> <input type="hidden" name="up" value="upd" > <td width="75"><center><a href="delete.php?id=<?=$row['id_aut'] ?>"><img src="../images/b_drop.png" border="0" alt=""></a> <!--<a href="update.php?login=<?=$row['login'] ?>&fam=<?=$row['fam'] ?>&name=<?=$row['name'] ?>&otc=<?=$row['otc'] ?>&id_aut=<?=$row['id_aut'] ?>"><img src="../images/b_edit.png" border="0" alt=""></a></td> <input type="image" src="../images/b_edit.png" ></center></td> </tr> --> <?php } ?> </table> </form> <br> <?php $sql="SELECT count(*) FROM auth"; $result=db($sql); $row=mysql_fetch_row($result); $total_rows=$row[0]; $num_pages=ceil($total_rows/$per_page); for($i=1;$i<=$num_pages;$i++) { if ($i-1 == $page) { echo $i." "; } else { echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'">'.$i."</a> "; } } function new_account() { ?> <center><h2>Добавленеи новой учетной записи</h2></center> <form method="POST" action="add_account.php"> <table width="200" border="0" cellspacing="1" cellpadding="4" align="center" bgcolor="#336699"> <tr> <td width="80">Логин:</td> <td width="180"><input type="text" name="login" size="25"></td> </tr> <tr> <td width="80">Пароль:</td> <td width="180"><input type="password" name="passw" size="25"></td> <td align="center"> <select name="role"> <option value="0">Роль пользователя</option> <option value="1">Администратор</option> <option value="2">Модератор</option> <option value="3">Пользователь</option> </select> </tr> <tr><td><input type="submit" value="Добавить"></td></tr> </table> </form> <?php } function upd() { $login=$_GET['login']; $fam=$_GET['fam']; $name=$_GET['name']; $otc=$_GET['otc']; $id=$_GET['id_aut']; $sql=("UPDATE auth SET login='$login', fam='$fam', name='$name', otc='$otc' WHERE id_aut='$id'"); $result=db($sql); if (!headers_sent()) header('Location: password.php?up=update'); else { echo '<script type="text/javascript">'; echo 'window.location.href="password.php?up=update";'; echo '</script>'; echo '<noscript>'; echo '<meta http-equiv="refresh" content="0;url=password.php?up=update" />'; echo '</noscript>'; } } function del() { $id = ($_GET['id']); $sql=("DELETE FROM auth WHERE id_aut='$id'"); $result=db($sql); if (!headers_sent()) header('Location: password.php?up=update'); else { echo '<script type="text/javascript">'; echo 'window.location.href="password.php?up=update";'; echo '</script>'; echo '<noscript>'; echo '<meta http-equiv="refresh" content="0;url=password.php?up=update" />'; echo '</noscript>'; } } switch($_GET['up']) { case "update": update(); break; case "new_account": new_account (); break; case "upd": upd (); break; case "del": del (); break; } ?> </body> </html>
// оффтоп Из-за таких названий тем предвзятое отношение к автору топика. Хочется не "Посмотреть и позсказать", а "Посмотреть и послать".