Собственно вот код: PHP: <?php if($_POST["dfile"]) { $mass=$_POST["dfile"]; $i=0; while($mass[$i]) { $link = mysql_connect("localhost", "root","") or die("Could not connect"); mysql_select_db("pureftpd") or die("Could not select database"); $s1="DELETE FROM users WHERE inc=$mass[$i]"; $result1 = mysql_query($s1) or die("Query failed"); $i++; } Header("Location: uspex.php?i=2"); } ?> <html> <HEAD> <META http-equiv=content-type content="text/html; charset=windows-1251"> </HEAD> <body > <br><br><br><br><br> <center><h2>перечень продуктов</h2></center> <form method="post" action="index.php" > <table align="center"border=1> <tr align="center"> <td>наименование</td> <td>цена</td> <td>колличество</td> <td>стоимость</td> <td>срок годности</td> <td></td> </tr> <?php $link = mysql_connect("localhost", "root","") or die("Could not connect"); mysql_select_db("pureftpd") or die("Could not select database"); $query="SELECT * FROM `users` WHERE 1"; $result = mysql_query($query) or die("Query failed"); while ($line = mysql_fetch_row($result)) { print "<tr align=\"center\"><td>$line[1]</td>"; print "<td>$line[2]</td>"; print "<td>$line[3]</td>"; print "<td>$line[4]</td>"; print "<td>$line[5]</td>"; print "<td>"; $v=$line[0]; ?> <input type=checkbox name="dfile[]['name']" value= "<?php echo $v ?>" > <?php print "</td></tr>"; } ?> </table> <br> <center><input type=submit name="ud" value=удалить></center> </form> </body> </html> почему то вывод происходит не так как я хочу, в базе даных есть пять столбиков и 4-тыре строки, но при выводе почему то не выводиться первый столбик.... а при попытке провести удаление скрпт ругаеться, в чём мои ошибки ?
Может быть надо: Код (Text): print "<tr align=\"center\"><td>$line[0]</td>"; print "<td>$line[1]</td>"; print "<td>$line[2]</td>"; print "<td>$line[3]</td>"; print "<td>$line[4]</td>"; ?
да, спасибо, тстыдно даже что ошибка в такой фигне была... но вот как быть с удалением, при удалении пишет: Query failed
странно почему то в phpmyadmin запрос выглядит так: как мне переделать скрипт под такое запрос ? Я просто не совсем понимаю вообще почему именно такой запрос phpdmin шлёт, но судя по всеми он верный...
А У МЕНЯ ВОПРОС! Как реализовать в данной форме ИЗМЕНЕНИЕ(UPDATE) данных. К примеру, ставишь флажок, как выше с примером удаления, и нажимаешь "изменить данные" и уже вносишь то,что тебе нужно, вместо того,что есть! ПОДСКАЖИТЕ, ПОЖАЛУЙСТА!
элемент массива в строке нужно брать в фигурные скобки PHP: $s1="DELETE FROM users WHERE inc='{$mass[$i]}'";
можно сделать как в phpMyAdmin логика работы такого скрипта: 1) в начале работы просто вывод записей таблицы. Каждая запись имеет ссылку для изменения записи. Ссылка на редактирование записи должна содержать данные, однозначно идентифицирующие запись. Лучше всего для этого использовать первичный ключ 2) в дальнейшем проверка - нажата ли ссылка на изменение записи если нажата, то загружаешь запись и выводишь форму редактирования этой записи. Форма должна иметь кнопки Сохранить и Отменить 3) проверяешь - нажата ли кнопка Сохранить если нажата - обрабатываешь переданные данные и сохраняешь в базе 4) если нажата Отменить выводишь только записи таблицы Все это просто схема работы скрипта. За подробностями в код phpMyAdmin
о_О Самое прикольное, что друг мне тоже самое практически сказал..но только вот меня интересовал сам код, или хотя бы сама часть реализации данной команды... Можно ли как то то,что находится в начале темы с удалением, переделать в редактирование?
PHP: // секция обработки запросов //начало работы скрипта- режим вывести записи в табличном виде if(!isset($_SESSION['page_mode'])) { $_SESSION['page_mode']='grid'; // устанавливаешь параметры для запроса на выводимые записи : порядок сортировки и для постраничного вывода $offset=0; $order="field1" etc } // нажата ли ссылка на удаление if(isset($_SESSION['page_mode']=='grid' and $_GET['remove'])) { $q="delete from $table where поле первичного ключа='{$_GET['remove']}'"; mysql_query($q); } //нажата ли ссылка на редактирование if(isset($_SESSION['page_mode']=='grid' and isset($_GET['edit'])) { $_SESSION['page_mode']='update'; $_SESSION['primary_key']=$_GET['edit']; $q="select * from $table where поле первичного ключа='{$_GET['edit']}'"; $result=mysql_query($q); } // нажата ли кнопка сохранить обновленные данные if($_SESSION['page_mode']=='update' and isset($_POST['update']) and isset($_SESSION['primary_key']) ) { // проверка присланных данных и приведение к виду для базы данных (экранирование спецсимволов, даты или свои проверки) $field1=$_POST['field1']; ............ // все - Ok- записываешь в базу if(all is Ok) { $q="update $table set field1='$field1',.. where поле первичного ключа='{$_SESSION['primary_key']}'"; mysql_query($q); $_SESSION['page_mode']='grid'; } } // конец секции обработки запросв // Секция вывода // вывод в зависимости от режима страницы $o=array(); if($_SESSION['page_mode']=='grid') { //загружаешь записи для вывода $result= mysql_query("select * from $table where ... order by ... limit ... "); $o[]= "<table border=1><tr>td>Редактировать</td>Удалить</td><td>Поле 1 </td><td> Поле 2</td></tr>"; while ($row = mysql_fetch_array($result,MYSQL_ASSOC)) { $primary_key=$row['поле первичного ключа']; $remove_ref=$_SERVER['PHP_SELF']."?remove=$primary_key"; $update_ref=$_SERVER['PHP_SELF']."?edit=$primary_key"; $o[]="<tr>"; $o[]="<td>"; $o[]="<a href=\"$update_ref\">Edit</a>"; $o[]="</td>"; $o[]="<td>"; $o[]="<a href=\"$update_ref\">Del</a>"; $o[]="</td>"; $o[]= "<td>"; $o[]=$row['field1']; $o[]="</td>"; $o[]= "<td>"; $o[]=$row['field2']; $o[]="</td>"; $o[]="</tr>"; } $o[]="</table>"; } elseif($_SESSION['page_mode']=='update') { // вывод формы на редактирование // если были ошибки - выведи их $o[]="<form method=\"post\" action =\"{$_SERVER['PHP_SELF']}\">"; ////fields input $o[]="<input type=\"submit\" name=\"update\" value=\"Save\">"; $o[]="</form>"; } print implode('',$o); // конец секции вывода Это только схема. phpMyAdmin имеет ссылки для перехода на разные страницы, установку фильтров, порядка сортировки и т.д Добавляешь в секции вывода все нужные тебе ссылки, а в секцию обработки запросов добавляешь обработку кликов по этим ссылкам
Я решил реализовать операцию редактирования таким образом: Исполняемый php-файл: PHP: <html> <HEAD> <META http-equiv=content-type content="text/html; charset=windows-1251"> </HEAD> <body > <br><br><br><br><br> <center><h2>перечень продуктов</h2></center> <table align="center"border=1> <tr align="center"> <td>наименование</td> <td>цена</td> <td>колличество</td> <td>срок годности</td> <td>pедактирование</td> </tr> <?php $link = mysql_connect("localhost", "root","") or die("Could not connect"); mysql_select_db("product") or die("Could not select database"); $ath = mysql_query("SELECT * FROM tovars ORDER BY naim LIMIT 0 , 30"); if($ath) while($tovars = mysql_fetch_array($ath)) { echo "<tr><td>".$tovars['naim']."</td><td>".$tovars['cena']."</td><td>".$tovars['kol']."</td><td>".$tovars['srok']." </td><td><a href=editform.php?id=".$tovars['id'].">Редактировать</a></td></tr>"; } echo "</table>"; ?> </table> </body> </html> Рабочий php-файл PHP: <html> <body> <?php $dblocation = "localhost"; $dbname = "имя_бд"; $dbuser = "имя_пользователя"; $dbpasswd = "пароль"; $dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd); if (!$dbcnx) { echo( "<P>В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.</P>" ); exit(); } if (!@mysql_select_db($dbname, $dbcnx)) { echo( "<P>Невозможно подключиться к БД.</P>" ); exit(); } $ath = mysql_query("SELECT * FROM tovars WHERE id=".$_GET['id']); if($ath) { // Определяем таблицу и заголовок echo "<table border=1>"; echo "<tr><td>название</td><td>стоимость</td><td>колличество</td><td>срок годности</td></tr>"; // Так как запрос возвращает несколько строк, применяем цикл while($tovars = mysql_fetch_array($ath)) { echo '<tr> <td><input type="text" name="naim" value="'.htmlspecialchars($tovars['naim'],ENT_QUOTES).'"></td> <td><input type="text" name="cena" value="'.htmlspecialchars($tovars['cena'],ENT_QUOTES).'"></td> <td><input type="text" name="kol" value="'.htmlspecialchars($tovars['kol'],ENT_QUOTES).'"></td> <td><input type="text" name="srok" value="'.htmlspecialchars($tovars['srok'],ENT_QUOTES).'"></td> </tr>'; } echo "</table>"; } else { echo "<p><b>Error: ".mysql_error()."</b><p>"; exit(); } ?> <form action = "menu.php" method = "post"> <input type = "submit" value = "Вернуться на главную страницу"> </form> </body> </html> У меня выносятся данные из БД до id в поля редактирования, но вот ПОМОГИТЕ ПОЖАЛУЙСТА сделать ПОДТВЕРЖДЕНИЯ выполнения операции, т.е. "Сохранения редактирования" на ДАННОМ коде! Мне сказали,что нужно использовать команду: mysql_result(mysql_query("INSERT INTO tovars ( naim, cena, kol, srok) VALUES ('$prod', '$cena','$kol','$srok' )")); Но вот НИКАК не выходит ничего =(( Помогите, пожалуйста!
yfnf3 1) Твой Исполняемый php-файл выводит первые 30 записей в табличном виде+ колонку редактировать 2) Твой Рабочий php-файл (видимо editform.php, используемый в ссылках ) получает запись с $_GET['id'] и выводит в таблицу+ выводит форму, состоящую из одной кнопки Судя по всему editform.php должен выполнять редактирование выбранной записи. если это так, то его нужно переделать следующим образом 1)сначала проверять- передан ли код записи по GET а)если передан -то получить запись из базы б)если нет - проверить нажата ли кнопка submit из формы если нажата- проверить данные и если правильные то записать в базу и вернуться на предыдущую страницу если неверные- вывести ошибки и форму PHP: <?php $dblocation = "localhost"; $dbname = "имя_бд"; $dbuser = "имя_пользователя"; $dbpasswd = "пароль"; $dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd); if (!$dbcnx) { echo( "<html><body><P>В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.</P></body></html>" ); exit(); } if (!@mysql_select_db($dbname, $dbcnx)) { echo( "<html><body><P>Невозможно подключиться к БД.</P></body></html>" ); exit(); } $err=array(); if(isset($_GET['id'])) { //передан id записи для редактирования $ath = mysql_query("SELECT * FROM tovars WHERE id=".$_GET['id']); if($ath) { $tovars = mysql_fetch_array($ath); $naim=$tovars['naim']; $cena=$tovars['cena']; $kol=$tovars['kol']; $srok=$tovars['srok']; // сохраняем в сессионной переменной id записи $_SESSION['record_id']=$_GET['id']; } else { echo( "<html><body><P>{$_GET['id']}-Запись не найдена</P></body></html>" ); exit(); } } elseif(isset($_POST['update'])) { //нажата кнопка сохранить //проверяешь данные- все ошибки записываешь в массив $err if(sizeof($err)==0) { //ошибок нет- записываешь в базу и возвращаешься на исходную страницу $naim=mysql_real_escape_string($_POST['naim']); $cena=mysql_real_escape_string($_POST['cena']); $kol=mysql_real_escape_string($_POST['kol']); $srok=mysql_real_escape_string($_POST['srok']); $q="update tovars set $naim='$naim',$cena='$cena',$kol='$kol',$srok='$srok' where id='{$_SESSION['record_id']]}'" ; $ath = mysql_query($q); if($ath) { header('Location: menu.php'); } else { $err[]="Не могу обновить запись!" ; } } $naim=$_POST['naim']; $cena=$_POST['cena']; $kol=$_POST['kol']; $srok=$_POST['srok']; } echo"<html><body>"; if(sizeof($err)>0) { //выводишь ошибки ввода foreach($err as $m) { echo $m.'<br>'; } } //выводишь форму echo "<form method=\"post\" action=\"editform.php\">"; echo "<table border=1>"; echo "<tr><td>название</td><td>стоимость</td><td>количество</td><td>срок годности</td></tr>"; echo '<tr> <td><input type="text" name="naim" value="'.htmlspecialchars($naim,ENT_QUOTES).'"></td> <td><input type="text" name="cena" value="'.htmlspecialchars($cena,ENT_QUOTES).'"></td> <td><input type="text" name="kol" value="'.htmlspecialchars($kol,ENT_QUOTES).'"></td> <td><input type="text" name="srok" value="'.htmlspecialchars($srok,ENT_QUOTES).'"></td> </tr>'; echo '<tr> <td><input type="submit" name="update" value="Обновить"></td> </tr>'; echo "</table>"; echo "</form></body></html>";
Пишет: Не могу обновить запись!, а таблицу с редактированием выводит благодаря моей первой форме..а обновлять не хочет.... Всё построчно проверил, но ваш код всё-равно не работает!( Даже ошибку нашёл маленькую: PHP: $q="update tovars set $naim='$naim',$cena='$cena',$kol='$kol',$srok='$srok' where id='{$_SESSION['record_id']]}'" ; надо PHP: $q="update tovars set $naim='$naim',$cena='$cena',$kol='$kol',$srok='$srok' where id='{$_SESSION['record_id']}'" ; Может вы какую то переменную забыли объявить.. Я никак не могу найти ошибку =(((
это все из-за копипаста нужно PHP: $q="update tovars set naim='$naim',cena='$cena',kol='$kol',srok='$srok' where id='{$_SESSION['record_id']}'" ;
Мда..теперь ещё лучше.. Всё выполняется в header('Location: uspex.php'); я вывел надпись, чтобы знать, выполнена операция, или нет. В поле данные выносятся и редактируются, но вот НЕ ХОТЯТ ОБНОВЛЯТЬСЯ((
yfnf3 Создал таблицу tovars и выполнил скрипты с учетом найденных ошибок. Результат- все работает и записи обновляются В общем определись - где и что у тебя будет происходить. Я привел код для твоих двух файлов - menu.php и editform.php Что происходит в каком-то файле uspex.php я не знаю.
В тот то и дело, что по своей БД и таблице tovars делал! Но всё равно какая то неурядица выходит(( Может вы чего то не договорили по этому поводу..упустили там.....
yfnf3 можно сделать так 1) ты приводишь структуру таблицы tovars+ код всех используемых скриптов 2) данные которые ты вбиваешь 3) я все проверяю и даю ответ почему у тебя не обновляются записи
http://demondota.my1.ru/_ld/0/43_Table.jpg - это структура самой таблице в SQL! Идут php-коды: Phor.php (основная форма внесения данных в БД) PHP: <html> <HEAD> <META http-equiv=content-type content="text/html; charset=windows-1251"> <style> .t2{ FONT-SIZE: 14px; color: black; FONT-FAMILY: Verdana, Helvetica, Arial; display:block; text-align: right;} .t{ FONT-SIZE: 14px; color: red; FONT-FAMILY: Verdana, Helvetica, Arial; } </style> </HEAD> <body > <br><br><br><br><br><br><br> <form action="Phor_2.php" method="post" name="frt" > <table align="center"> <tr><td class="t2">Введите название продукта</td> <td><input type="text" size="30" maxlength="30" name="prod" id="prod" value="<?php echo $_POST["prod"]?>"></td></tr> <tr><td class="t2">Введите цену</td> <td><input type="text" size="10" maxlength="20" name="cena" id="cena" value="<?php echo $_POST["cena"]?>"></td></tr> <tr><td class="t2">Введите колличество</td> <td> <input type="text" size="10" maxlength="20" name="kol" id="kol" value="<?php echo $_POST["kol"]?>"></td></tr> <tr><td class="t2">Введите срок годности(dd.mm.yyyy)</td> <td> <input type="text" size="10" maxlength="10" name="srok" id="srok" value="<?php echo $_POST["srok"]?>"></td></tr> <tr><td colspan="2" align="center"><input type="submit"; name="vvod"; value="ввести"; ></td></tr> </table> </body> </html> Phor_2.php (рабочая форма, отвечающая за внесение данных в БД (INSERT INTO)) PHP: <?php if($_POST["prod"]) { $error="ошибка:"; $prod=$_POST["prod"]; $cena=$_POST["cena"]; $srok=$_POST["srok"]; $kol=$_POST["kol"]; if(strcmp((float)$cena,$cena)) {$error.="в строке цена вводятся только цифры<br>"; } if(strcmp((int)$kol,$kol)) {$error.="в строке колличество вводятся только цифры<br>"; } if(!preg_match_all("/(\d{1,2})\.(\d{1,2})\.(\d{4})/",$srok,$i)) {$error.="неверный формат строки: срок годности<br>"; } $day=$i[1][0]; $month=$i[2][0]; $year=$i[3][0]; if(!checkdate($month,$day,$year)) {$error.="вы неверно ввели срок годности<br>"; } if($error!="ошибка:") {print "<center class=\"t\">$error</center> "; } else { $srok=$year."-".$month."-".$day; $link = mysql_connect("localhost", "root","") or die("Could not connect"); mysql_select_db("product") or die("Could not select database"); $sql = "INSERT INTO tovars ( naim, cena, kol, srok) VALUES ('$prod', '$cena','$kol','$srok' )"; $result = mysql_query($sql) or die("Query failed");; mysql_close($link); Header("Location: uspex.php?i=1"); } } ?> <html> <HEAD> <META http-equiv=content-type content="text/html; charset=windows-1251"> <style> .t2{ FONT-SIZE: 14px; color: black; FONT-FAMILY: Verdana, Helvetica, Arial; display:block; text-align: right;} .t{ FONT-SIZE: 14px; color: red; FONT-FAMILY: Verdana, Helvetica, Arial; } </style> </HEAD> <body > <br><br><br><br><br><br><br> <form action="Phor.php" method="post" name="frt" > <table align="center"> <tr><td class="t2">введите название продукта</td> <td> <input type="text" size="20" maxlength="20" name="prod" id="prod" value="<?php echo $_POST["prod"] ?>"></td></tr> <tr><td class="t2">введите цену</td> <td> <input type="text" size="10" maxlength="10" name="cena" id="cena" value="<?php echo $_POST["cena"]?>"></td></tr> <tr><td class="t2">введите колличество</td> <td> <input type="text" size="11" maxlength="11" name="kol" id="kol" value="<?php echo $_POST["kol"]?>"></td></tr> <tr><td class="t2">введите срок годности(dd.mm.yyyy)</td> <td> <input type="text" size="10" maxlength="10" name="srok" id="srok" value="<?php echo $_POST["srok"]?>"></td></tr> <tr><td colspan="2" align="center"><input type="submit"; name="vvod"; value="ввести"; ></td></tr> </table> </body> </html> Prosmotr.php (форма просмотра данных из БД) PHP: <html> <HEAD> <META http-equiv=content-type content="text/html; charset=windows-1251"> </HEAD> <body > <br><br><br><br><br> <center><h2>перечень продуктов</h2></center> <table align="center"border=1> <tr align="center"> <td>наименование</td> <td>цена</td> <td>колличество</td> <td>срок годности</td> </tr> <?php $link = mysql_connect("localhost", "root","") or die("Could not connect"); mysql_select_db("product") or die("Could not select database"); $query="SELECT * FROM tovars ORDER BY naim LIMIT 0 , 30"; $result = mysql_query($query) or die("Query failed"); while ($line = mysql_fetch_row($result)) { print "<tr align=\"center\"><td>$line[1]</td>"; print "<td>$line[2]</td>"; print "<td>$line[3]</td>"; print "<td>$line[4]</td></tr>"; } ?> </table> </body> </html> Delete.php (форма удаления записей из БД) PHP: <?php if($_POST["dfile"]) { $mass=$_POST["dfile"]; $i=0; while($mass[$i]) { $link = mysql_connect("localhost", "root","") or die("Could not connect"); mysql_select_db("product") or die("Could not select database"); $s1="DELETE FROM tovars WHERE id=$mass[$i]"; $result1 = mysql_query($s1) or die("Неверный запрос"); $i++; } Header("Location: Delete.php"); } ?> <html> <HEAD> <META http-equiv=content-type content="text/html; charset=windows-1251"> </HEAD> <body > <br><br><br><br><br> <center><h2>перечень продуктов</h2></center> <form method="post" action="Delete.php" > <table align="center"border=1> <tr align="center"> <td>наименование</td> <td>цена</td> <td>колличество</td> <td>срок годности</td> <td></td> </tr> <?php $link = mysql_connect("localhost", "root","") or die("Could not connect"); mysql_select_db("product") or die("Could not select database"); $query="SELECT * FROM tovars ORDER BY naim LIMIT 0 , 30 "; $result = mysql_query($query) or die("Query failed"); while ($line = mysql_fetch_row($result)) { print "<tr align=\"center\"><td>$line[1]</td>"; print "<td>$line[2]</td>"; print "<td>$line[3]</td>"; print "<td>$line[4]</td>"; print "<td>"; $v=$line[0]; ?> <input type=checkbox name=dfile[] value= "<?php echo $v ?>" > <?php print "</td></tr>"; } ?> </table> <br> <center><input type=submit name="ud" value=удалить></center> </form> </body> </html> uspex.php (форма с выводом на экран надписей об успешности проделанных действий) PHP: <html> <HEAD> <LINK href="main.css" type=text/css rel=stylesheet> <META http-equiv=content-type content="text/html; charset=windows-1251"> </HEAD> <body > <?php $i=0; $i=$_GET["i"]; if($i==1) {$st="данные успешно добавлены"; } if($i==2) {$st="записи успешно удалены"; //не используется, т.к. стоит автообновление! } if($i==3) {$st="записи успешно обновлены"; //не используется! } ?> <table border=0 width=100% > <tr align=center> <td> <br><br><br><br><br><br><br><br> <H4 class="big"><?php echo $st ?></H4> </td> </tr> </table> </body> </html> Update.php (форма, которая выносит записи из таблицы БД, как при просмотре, с возможностью редактирования!) PHP: <html> <HEAD> <META http-equiv=content-type content="text/html; charset=windows-1251"> </HEAD> <body > <br><br><br><br><br> <center><h2>перечень продуктов</h2></center> <table align="center"border=1> <tr align="center"> <td>наименование</td> <td>цена</td> <td>колличество</td> <td>срок годности</td> <td>pедактирование</td> </tr> <?php $link = mysql_connect("localhost", "root","") or die("Could not connect"); mysql_select_db("product") or die("Could not select database"); $ath = mysql_query("SELECT * FROM tovars ORDER BY naim LIMIT 0 , 30"); if($ath) while($tovars = mysql_fetch_array($ath)) { echo "<tr><td>".$tovars['naim']."</td><td>".$tovars['cena']."</td><td>".$tovars['kol']."</td><td>".$tovars['srok']." </td><td><a href=editform.php?id=".$tovars['id'].">Редактировать</a></td></tr>"; } echo "</table>"; ?> </table> </body> </html> editform.php (То, что вы советовали, только немножко изменённая, т.к. $_SESSION['record_id'] по какой то странной причине вообще не работает(( ); PHP: <?php $dblocation = "localhost"; $dbname = "product"; $dbuser = "root"; $dbpassword = ""; $dbcnx = @mysql_connect($dblocation,$dbuser,$dbpassword); if (!$dbcnx) { echo( "<html><body><P>В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.</P></body></html>" ); exit(); } if (!@mysql_select_db($dbname, $dbcnx)) { echo( "<html><body><P>Невозможно подключиться к БД.</P></body></html>" ); exit(); } $err=array(); if(isset($_GET['id'])) { //передан id записи для редактирования $ath = mysql_query("SELECT * FROM tovars WHERE id=".$_GET['id']); if($ath) { $tovars = mysql_fetch_array($ath); $naim=$tovars['naim']; $cena=$tovars['cena']; $kol=$tovars['kol']; $srok=$tovars['srok']; // сохраняем в сессионной переменной id записи } else { echo( "<html><body><P>{$_GET['id']}-Запись не найдена</P></body></html>" ); exit(); } } elseif(isset($_POST['update'])) { //нажата кнопка сохранить //проверяешь данные- все ошибки записываешь в массив $err if(sizeof($err)==0) { //ошибок нет- записываешь в базу и возвращаешься на исходную страницу $naim=mysql_real_escape_string($_POST['naim']); $cena=mysql_real_escape_string($_POST['cena']); $kol=mysql_real_escape_string($_POST['kol']); $srok=mysql_real_escape_string($_POST['srok']); $ath = mysql_query("update tovars set naim='$naim',cena='$cena',kol='$kol',srok='$srok' where id='id=".$_GET['id']); if($ath) { header('Location: Update.php'); } else { $err[]="Не могу обновить запись!" ; } } $naim=$_POST['naim']; $cena=$_POST['cena']; $kol=$_POST['kol']; $srok=$_POST['srok']; } echo"<html><body>"; if(sizeof($err)>0) { //выводишь ошибки ввода foreach($err as $m) { echo $m.'<br>'; } } //выводишь форму echo "<form method=\"post\" action=\"editform.php\">"; echo "<table border=1>"; echo "<tr><td>название</td><td>стоимость</td><td>количество</td><td>срок годности</td></tr>"; echo '<tr> <td><input type="text" name="naim" value="'.htmlspecialchars($naim,ENT_QUOTES).'"></td> <td><input type="text" name="cena" value="'.htmlspecialchars($cena,ENT_QUOTES).'"></td> <td><input type="text" name="kol" value="'.htmlspecialchars($kol,ENT_QUOTES).'"></td> <td><input type="text" name="srok" value="'.htmlspecialchars($srok,ENT_QUOTES).'"></td> </tr>'; echo '<tr> <td><input type="submit" name="update" value="Обновить"></td> </tr>'; echo "</table>"; echo "</form></body></html>"; ?> Вот...всё что есть.. Пожалуйста, помогите..
yfnf3 привожу код editform.php c исправлениями: 1) в начале добавлен старт сессии 2) после получения данных о редактируемой записи- срок нужно перевести в нужный формат 3) переменная $err ->$error 4) при нажатии копки обновить добавил твои проверки из файла phor_2.php 5) удалил завершающий тэг PHP: <?php //добавлено-нужно стартовать сессию session_start(); $dblocation = "localhost"; $dbname = "product"; $dbuser = "root"; $dbpassword = ""; $dbcnx = @mysql_connect($dblocation,$dbuser,$dbpassword); if (!$dbcnx) { echo( "<html><body><P>В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.</P></body></html>" ); exit(); } if (!@mysql_select_db($dbname, $dbcnx)) { echo( "<html><body><P>Невозможно подключиться к БД.</P></body></html>" ); exit(); } $error=''; if(isset($_GET['id'])) { //передан id записи для редактирования $ath = mysql_query("SELECT * FROM tovars WHERE id=".$_GET['id']); if($ath) { $tovars = mysql_fetch_array($ath); $naim=$tovars['naim']; $cena=$tovars['cena']; $kol=$tovars['kol']; $a=explode('-',$tovars['srok']); // добавлено-дату переводим в формат день.месяц.год $srok=$a[2].'.'.$a[1].'.'.$a[0]; // добавлено-сохраняем в сессионной переменной id записи $_SESSION['record_id']=$_GET['id']; } else { echo( "<html><body><P>{$_GET['id']}-Запись не найдена</P></body></html>" ); exit(); } } elseif(isset($_POST['update'])) { //нажата кнопка сохранить //проверяешь данные- все ошибки записываешь в массив $err $naim=$_POST["naim"]; $cena=$_POST["cena"]; $srok=$_POST["srok"]; $kol=$_POST["kol"]; // добавлено--твои проверки из phor_2.php if(strcmp((float)$cena,$cena)) { $error.="в строке цена вводятся только цифры<br>"; } if(strcmp((int)$kol,$kol)) { $error.="в строке колличество вводятся только цифры<br>"; } if(!preg_match_all("/(\d{1,2})\.(\d{1,2})\.(\d{4})/",$srok,$i)) { $error.="неверный формат строки: срок годности<br>"; } $day=$i[1][0]; $month=$i[2][0]; $year=$i[3][0]; if(!checkdate($month,$day,$year)) { $error.="вы неверно ввели срок годности<br>"; } if(strlen($error)==0) { //ошибок нет- записываешь в базу и возвращаешься на исходную страницу $naim=mysql_real_escape_string($_POST['naim']); $cena=mysql_real_escape_string($_POST['cena']); $kol=mysql_real_escape_string($_POST['kol']); $srok=$year."-".$month."-".$day; $ath = mysql_query("update tovars set naim='$naim',cena='$cena',kol='$kol',srok='$srok' where id='{$_SESSION['record_id']}'"); if($ath) { header('Location: update.php'); } else { $err[]="Не могу обновить запись!" ; } } $srok=$_POST['srok']; } echo"<html><body>"; if(strlen($error)>0) { //выводишь ошибки ввода echo $error.'<br>'; } //выводишь форму echo "<form method=\"post\" action=\"editform.php\">"; echo "<table border=1>"; echo "<tr><td>название</td><td>стоимость</td><td>количество</td><td>срок годности</td></tr>"; echo '<tr> <td><input type="text" name="naim" value="'.htmlspecialchars($naim,ENT_QUOTES).'"></td> <td><input type="text" name="cena" value="'.htmlspecialchars($cena,ENT_QUOTES).'"></td> <td><input type="text" name="kol" value="'.htmlspecialchars($kol,ENT_QUOTES).'"></td> <td><input type="text" name="srok" value="'.htmlspecialchars($srok,ENT_QUOTES).'"></td> </tr>'; echo '<tr> <td><input type="submit" name="update" value="Обновить"></td> </tr>'; echo "</table>"; echo "</form></body></html>";
Здравствуйте, видел вы помогаете с PHP хорошо, мне вас порекомендовали. Вот вопрос такой, у меня сделано каскадное редактирование данных через PHP, т.е. если я обновляю запись в одной таблице, то она обновляется и в остальных, где присутствует это поле и так же удаление записи из текущей таблице вот этот код: PHP: //Основной файл change_dolzh.php <? $connection = mysql_connect("***", "root","***") or die("Could not connect"); mysql_select_db("Stat_forms") or die("Could not select database"); $query1="SELECT id,dolzhnost FROM dolzhnost"; $result1=mysql_query($query1,$connection) or die (mysql_error($connection)); $form=" <form action=change_dolzh.php method=POST> <center><table border=3><tr><td><basefont face=\"Arial, fantasy\" size=2>Для внесения изменения выберите должность: </basefont></td> <td><select type=class name=dolzhnost>"; while ($num=mysql_fetch_array($result1, MYSQL_ASSOC)) { $form.="<option value=$num[id]>$num[dolzhnost]</option>\n"; } mysql_free_result($result1); $form.=" </select></td></tr> <tr><td colspan=2 align=center><basefont face=\"Arial, fantasy\" size=2><input type=checkbox name=change value=change checked>Изменить    <input type=checkbox name=delete value=delete>Удалить</basefont></td></tr></table></center> <br> <center> <input type=submit name=chdel value=\"Ok\"> </center> </form>"; if ($_POST['chdel']) { if ($_POST['change'] == "change" and $_POST['delete'] == "delete") { print "<center><basefont face=\"Arial, fantasy\" size=3>Выберите только одну из операций</basefont</center>"; } else { if ($_POST['change'] == "change") { ?> <form action=ch_dol2.php method=post> <? $query2="SELECT dolzhnost FROM dolzhnost WHERE id='$_POST[dolzhnost]'"; $result2=mysql_query($query2,$connection) or die(mysql_error()); while ($num2=mysql_fetch_array($result2)) { $id_ot=$num2['dolzhnost']; } mysql_free_result($result2); ?> <center> <table border=3> <tr><td> <basefont face=\"Arial, sans-serif\" size=3>Старое название должности:</td> <td><input type=text size=50 name=oldch value=<? echo $id_ot; ?> readonly></td></tr> <tr><td><basefont face=\"Arial, sans-serif\" size=3>Введите новое название должности:</td> <td><input type=text size=50 name=newch value=<? echo $id_ot; ?>></basefont></td></tr> <tr><td colspan=2 align=center><input type=submit name=chot value=Ok></td></tr> </table></center> <? } else { if ($_POST['delete'] == "delete") { $query_add="SELECT id FROM dolzhnost WHERE dolzhnost='$_POST[dolzhnost]'"; $result_add=mysql_query($query_add, $connection) or die(mysql_error($connection)); $query9="DELETE FROM dolzhnost WHERE id='$_POST[dolzhnost]'"; $result9=mysql_query($query9,$connection) or die(mysql_error()); print "<center><basefont face=\"Arial\" size=3>Выбранная должность удалена успешно</basefont></center>"; } else { print "<center><basefont face=\"Arial, fantasy\" size=3>Для изменения или удаления должности Вам нужно выбрать нужную операцию</basefont></center>"; } } } mysql_close($connection); } else { echo "$form"; } ?> PHP: //Исполняемый файл ch_dol2.php <? $connection = mysql_connect("***", "root","***") or die("Could not connect"); mysql_select_db("Stat_forms") or die("Could not select database"); $query="SELECT dolzhnost FROM dolzhnost WHERE dolzhnost='$_POST[oldch]'"; $result=mysql_query($query,$connection) or die(mysql_error($connection)); while ($num=mysql_fetch_array($result)) { $id_ot=$num['dolzhnost']; } mysql_free_result($result); $query1="UPDATE dolzhnost SET dolzhnost='$_POST[newch]' WHERE dolzhnost='$id_ot'"; $result1=mysql_query($query1,$connection) or die(mysql_error($connection)); $query2="UPDATE name SET dolzhnost='$_POST[newch]' WHERE dolzhnost='$id_ot'"; $result2=mysql_query($query2,$connection) or die(mysql_error($connection)); print "<center><basefont face=\"Arial\" size=3>Обновление должности с $_POST[oldch] на $_POST[newch] прошло удачно</basefont></center>"; mysql_close($connection); ?> Что мне нужно от вас, просто я уже сколько дней голову ломаю, но к решению не могу придти! Есть таблица, в которой 5 полей(id dolzhnost otdel fam name otch): id dolzhnost otdel fam name otch 5 Program Biolog Ivanov Ivan Ivanovich Допустим, мы хотим отредактировать эту таблицу, ИСПОЛЬЗУЯ пример кода, что есть у меня (change_dolzh.php и ch_dol2.php). Помогите с написанием, потому, что вынести для редактирования у меня получается, но ко всему к этому НУЖНО, чтобы в КАТЕГОРИЯХ "dolzhnost" и "otdel" был ВЫПАДАЮЩИЙ список! Т.Е. я, к примеру хочу отредактировать запись, выношу данные из таблицы, те, которые мы хотим отредактировать в текстовом поле(fam, name, otch), а поля dolzhnost и otdel чтобы просто выносились из таблицы, без возможности редактирования, а лишь с выбором должности или отдела. И далее кнопка, 'Ok', которая имеется в коде, которая отправит наши данные на сервер и обновит то, что мы внесли. Прошу вас! Заранее спасибо!! :!: :!: :!:
Dimitry_LD что нужно 1) структуры используемых таблиц и их назначение типа: CREATE TABLE posts ( post_id varchar(64) NOT NULL, post_name varchar(255) NOT NULL, PRIMARY KEY (post_id), UNIQUE KEY post_name (post_name) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251; таблица posts -это справочник должностей 2) четкое описание того,что нужно типа: нужен скрипт ввода данных в таблицу name Мне здесь нужно типы и атрибуты ввода для конкретных полей если тип ввода text- то укажи параметры size, maxlength если тип поля ввода select- то как формируется список опций для select 3) детальное описание, что понимается под причем с указанием конкретных таблиц и полей
В общем я кое что наваял... Объясню что! Есть SQL-таблица, в которой присутствуют поля: id, dolzhnost, fam, name, otch. В основной форме редактирования у меня теперь выводятся все указанные поля и что в них содержится! Вот этот код: Update.php PHP: <html> <HEAD> <META http-equiv=content-type content="text/html; charset=windows-1251"> </HEAD> <body> <br><br><br><br><br> <center><h2>Сотрудники</h2></center> <table align="center"border=5> <tr align="center"> <td>Фамилия</td> <td>имя</td> <td>отчество</td> <td>должность</td> <td>pедактирование</td> </tr> <?php $link = mysql_connect("localhost", "root","") or die("Could not connect"); mysql_select_db("stat_forms") or die("Could not select database"); $ath = mysql_query("SELECT * FROM name ORDER BY name LIMIT 0 , 30"); if($ath) while($name = mysql_fetch_array($ath)) { echo "<tr><td>".$name['fam']."</td><td>".$name['name']."</td><td>".$name['otch']."</td><td>".$name['dolzhnost']."</td> <td><a href=editform.php?id=".$name['id'].">Редактировать</a></td></tr>"; } echo "</table>"; ?> </table> </body> </html> Как вы заметили, такой код уже был на этой странице, когда вы помогали пользователю "yfnf3 Пн Дек 20, 2010 17:30" Далее у меня идёт такой же код как вы уже рекомендовали ему, т.е. editform.php но изменённый, т.е. дополнительно присутствует выпадающий список, который берёт данные из таблицы должности. Вот он, код: В коментариях я объяснил некоторые блоки! PHP: <?php session_start(); $dblocation = "localhost"; $dbname = "stat_forms"; $dbuser = "root"; $dbpassword = ""; $dbcnx = @mysql_connect($dblocation,$dbuser,$dbpassword); if (!$dbcnx) { echo( "<html><body><P>В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.</P></body></html>" ); exit(); } if (!@mysql_select_db($dbname, $dbcnx)) { echo( "<html><body><P>Невозможно подключиться к БД.</P></body></html>" ); exit(); } if(isset($_GET['id'])) { //передан id записи для редактирования $ath = mysql_query("SELECT * FROM name WHERE id=".$_GET['id']); if($ath) { //присваивание переменных для дальнейшего вызова! $name = mysql_fetch_array($ath); $fam=$name['fam']; $imia=$name['name']; $otch=$name['otch']; // добавлено-сохраняем в сессионной переменной id записи $_SESSION['record_id']=$_GET['id']; } else { echo( "<html><body><P>{$_GET['id']}-Запись не найдена</P></body></html>" ); exit(); } } elseif(isset($_POST['update'])) { $fam=$_POST["fam"]; $imia=$_POST["name"]; $otch=$_POST["otch"]; //из вашего совета одному из пользователей, код которого выше! { $ath = mysql_query("update name set fam='$_POST[fam]',name='$_POST[name]',otch='$_POST[otch]', dolzhnost='$_POST[dolzhnost]' where id='{$_SESSION['record_id']}'"); if($ath) { header('Location: update.php'); } } } echo"<html><body>"; //выборка поля "должность", для дальнейшего создания выпадающего списка! { $query1="SELECT dolzhnost FROM name ORDER BY name LIMIT 0 , 30"; $result1=mysql_query($query1); //сам выпадающий список, должностей переменная "$form_dolj" $form_dolj=" <form action=editform.php method=POST> <select type=class name=dolzhnost>"; while ($num_dolj=mysql_fetch_array($result1, MYSQL_ASSOC)) { $form_dolj.="<option value=$num_dolj[dolzhnost]>$num_dolj[dolzhnost]</option>\n"; //выпадающий список должностей } mysql_free_result($result1); } //создание рабочего окна, в которое будут заноситься записи для редактирования ?> <center> <table border=5> <br><br><br><br><br><br><br><br> <tr><td><basefont face=\"Arial, sans-serif\" size=3>Фамилия:</td> <td><input type=text size=30 name=fam value=<? echo $fam; ?>></basefont></td></tr> <tr><td><basefont face=\"Arial, sans-serif\" size=3>Имя:</td> <td><input type=text size=30 name=name value=<? echo $imia; ?>></basefont></td></tr> <tr><td><basefont face=\"Arial, sans-serif\" size=3>Отчество:</td> <td><input type=text size=30 name=otch value=<? echo $otch; ?>></basefont></td></tr> <tr><td><basefont face=\"Arial, sans-serif\" size=4><b>Выберите должность:</b></td> <td><name="dolzhnost" value=<? echo $form_dolj; ?>></basefont></td></tr> <tr><td colspan=2 align=center><input type=submit name=update value=Обновить></td></tr> </table></center> <? //!!!ПОЧЕМУ-ТО ВСЁ ВЫНОСИТ И РЕДАКТИРОВАТЬ МОЖНО, НО ПРИ НАЖАТИИ НА КНОПКУ "Обновить"(т.е. подтвердить редактирование) НИЧЕГО НЕ ПРОИСХОДИТ, НАВЕРНОЕ ОНА НЕ ПРИВЯЗАНА НИ К КАКОМУ ДЕЙСТВИЮ! ЧТО ДЕЛАТЬ??? echo "</body></html>"; ?> Посмотрите, пожалуйста эти 2 кода, у меня всё работает и выпадающий список я сделал, но вот данные не отправляются на сервер, при нажатии на кнопу "обновить". Найдите ошибку! Таблица "name", где хранятся данные о сотрудниках. id dolzhnost otdel fam name otch 5 Programmist Biolog Ivanovs Ivan Ivanovich 7 Pedofil Povar Petrov Fedia Ignatiev Структура: id int(11) AUTO_INCREMENT dolzhnost varchar(50) latin1_swedish_ci otdel varchar(50) latin1_swedish_ci fam varchar(50) latin1_swedish_ci name varchar(50) latin1_swedish_ci otch varchar(50) latin1_swedish_ci Таблица "dolzhnost", где хранятся данные о должностях. id dolzhnost 53 Programmist 54 Pedofil Структура: id int(11) AUTO_INCREMENT dolzhnost varchar(100) latin1_swedish_ci
замечания в строках с !!!!! Код (Text): <?php session_start(); $dblocation = "localhost"; $dbname = "stat_forms"; $dbuser = "root"; $dbpassword = ""; $dbcnx = @mysql_connect($dblocation,$dbuser,$dbpassword); if (!$dbcnx) { echo( "<html><body><P>В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.</P></body></html>" ); exit(); } if (!@mysql_select_db($dbname, $dbcnx)) { echo( "<html><body><P>Невозможно подключиться к БД.</P></body></html>" ); exit(); } if(isset($_GET['id'])) { //передан id записи для редактирования $ath = mysql_query("SELECT * FROM name WHERE id=".$_GET['id']); if($ath) { //присваивание переменных для дальнейшего вызова! $name = mysql_fetch_array($ath); $fam=$name['fam']; $imia=$name['name']; $otch=$name['otch']; //!!! есть еще поле ввода должности $dolzhnost=$name['dolzhnost']; // добавлено-сохраняем в сессионной переменной id записи $_SESSION['record_id']=$_GET['id']; } else { echo( "<html><body><P>{$_GET['id']}-Запись не найдена</P></body></html>" ); exit(); } } elseif(isset($_POST['update'])) { //!!!!! на всякий случай нужно использовать функцию mysql_real_escape_string $fam=mysql_real_escape_string($_POST["fam"]); $imia=mysql_real_escape_string($_POST["name"]); $otch=mysql_real_escape_string($_POST["otch"]); // !!!!!- есть еще поле ввода должности!!!! $dolzhnost=$_POST["dolzhnost"]; //из вашего совета одному из пользователей, код которого выше! { /*!!!!!! запрос содержит ошибки $ath = mysql_query("update name set fam='$_POST[fam]',name='$_POST[name]',otch='$_POST[otch]', dolzhnost='$_POST[dolzhnost]' where id='{$_SESSION['record_id']}'"); 1) вместо $_POST[fam] должно быть {$_POST['fam']} 2) вместо $_POST[name] должно быть {$_POST['name']} 3) вместо $_POST[otch] должно быть {$_POST['otch']} 4) вместо $_POST[dolzhnost] должно быть {$_POST['dolzhnost']} */ $q="update name set fam='$fam',name='$imia',otch='$otch', dolzhnost='$dolzhnost' where id='{$_SESSION['record_id']}'"; $ath = mysql_query($q); if($ath) { header('Location: update.php'); } } } echo"<html><body>"; //выборка поля "должность", для дальнейшего создания выпадающего списка! //!!!!!!- должности хранятся в таблице dolzhnost , а не в name $query1="SELECT dolzhnost FROM dolzhnost ORDER BY dolzhnost "; $result1=mysql_query($query1); //сам выпадающий список, должностей переменная "$form_dolj" // !!!!!!здесь не нужен <form action=editform.php method=POST> $form_dolj=" <select type=class name=dolzhnost>"; while ($num_dolj=mysql_fetch_array($result1, MYSQL_ASSOC)) { // !!!! текущая должность должна быть выбрана + элементы массива в фигурные скобки !!!! if($dolzhnost==$num_dolj['dolzhnost']) { $form_dolj.="<option value={$num_dolj['dolzhnost']} selected>{$num_dolj['dolzhnost']}</option>\n"; } else { $form_dolj.="<option value={$num_dolj['dolzhnost']}>{$num_dolj['dolzhnost']}</option>\n"; } } // !!!! нужен завершающий тэг $form_dolj.="</select>"; mysql_free_result($result1); //создание рабочего окна, в которое будут заноситься записи для редактирования //!!!! неправильно <td><name="dolzhnost" value=<? echo $form_dolj; ?>></basefont></td></tr>- /// !!!! добавлены тэги формы ?> <center> <form action="editform.php" method="post"> <table border=5> <br><br><br><br><br><br><br><br> <tr><td><basefont face=\"Arial, sans-serif\" size=3>Фамилия:</td> <td><input type=text size=30 name=fam value=<? echo $fam; ?>></basefont></td></tr> <tr><td><basefont face=\"Arial, sans-serif\" size=3>Имя:</td> <td><input type=text size=30 name=name value=<? echo $imia; ?>></basefont></td></tr> <tr><td><basefont face=\"Arial, sans-serif\" size=3>Отчество:</td> <td><input type=text size=30 name=otch value=<? echo $otch; ?>></basefont></td></tr> <tr><td><basefont face=\"Arial, sans-serif\" size=4><b>Выберите должность:</b></td> <td><? echo $form_dolj; ?></basefont></td></tr> <tr><td colspan=2 align=center><input type=submit name=update value=Обновить></td></tr> </table></form></center> </body></html>";
Огромное вам спасибо!!! Вы мне очень помогли! Приятно, когда имеешь дело с умным человеком))) Сейчас я ещё кое что доделаю и последний вопросик будет к вам, а пока спасибо большое ещё раз!
И вот, конечно же вопрос.. Я модернизировал предыдущий код, чтобы у меня ещё из 2 таблиц данные выносились! Всё выносится, в соответствии с ID-сотрудника, но вот ОПЯТЬ КНОПКА "РЕДАКТИРОВАНИЯ" не работает =(( Вот код: PHP: <?php session_start(); $dblocation = "localhost"; $dbname = "stat_forms"; $dbuser = "root"; $dbpassword = ""; $dbcnx = @mysql_connect($dblocation,$dbuser,$dbpassword); if (!$dbcnx) { echo( "<html><body><P>В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.</P></body></html>" ); exit(); } if (!@mysql_select_db($dbname, $dbcnx)) { echo( "<html><body><P>Невозможно подключиться к БД.</P></body></html>" ); exit(); } if(isset($_GET['id'])) { //передан id записи для редактирования $ath = mysql_query("SELECT * FROM name WHERE id=".$_GET['id']); if($ath) { //присваивание переменных для дальнейшего вызова! $name = mysql_fetch_array($ath); $fam=$name['fam']; $imia=$name['name']; $otch=$name['otch']; //!!! есть еще поле ввода должности $dolzhnost=$name['dolzhnost']; $otdel=$name['otdel']; // добавлено-сохраняем в сессионной переменной id записи $_SESSION['record_id']=$_GET['id']; } else { echo( "<html><body><P>{$_GET['id']}-Запись не найдена</P></body></html>" ); exit(); } $query4="SELECT ulisa,dom,korpus,bithday,kvartira,home_phone,mob_phone,mail FROM person WHERE id_name=".$_GET['id']; $result4=mysql_query($query4) or die(mysql_error()); while ($num4=mysql_fetch_array($result4)) { $id_ul=$num4['ulisa']; $id_dom=$num4['dom']; $id_korpus=$num4['korpus']; $id_bithday=$num4['bithday']; $id_kvar=$num4['kvartira']; $id_hph=$num4['home_phone']; $id_mph=$num4['mob_phone']; $id_mail=$num4['mail']; } mysql_free_result($result4); $query5="SELECT comment FROM other WHERE id_name=".$_GET['id']; $result5=mysql_query($query5) or die(mysql_error()); while ($num5=mysql_fetch_array($result5)) { $id_comment=$num5['comment']; } mysql_free_result($result5); } elseif(isset($_POST['update'])) { //!!!!! на всякий случай нужно использовать функцию mysql_real_escape_string $fam=mysql_real_escape_string($_POST["fam"]); $imia=mysql_real_escape_string($_POST["name"]); $otch=mysql_real_escape_string($_POST["otch"]); // !!!!!- есть еще поле ввода должности!!!! $dolzhnost=$_POST["dolzhnost"]; $otdel=$_POST["otdel"]; $id_ul=mysql_real_escape_string($_POST["ulisa"]); $id_dom=mysql_real_escape_string($_POST["dom"]); $id_korpus=mysql_real_escape_string($_POST["korpus"]); $id_bithday=mysql_real_escape_string($_POST["bithday"]); $id_kvar=mysql_real_escape_string($_POST["kvartira"]); $id_hph=mysql_real_escape_string($_POST["home_phone"]); $id_mph=mysql_real_escape_string($_POST["mob_phone"]); $id_mail=mysql_real_escape_string($_POST["mail"]); $id_comment=mysql_real_escape_string($_POST["comment"]); //из вашего совета одному из пользователей, код которого выше! { /*!!!!!! запрос содержит ошибки $ath = mysql_query("update name set fam='$_POST[fam]',name='$_POST[name]',otch='$_POST[otch]', dolzhnost='$_POST[dolzhnost]' where id='{$_SESSION['record_id']}'"); 1) вместо $_POST[fam] должно быть {$_POST['fam']} 2) вместо $_POST[name] должно быть {$_POST['name']} 3) вместо $_POST[otch] должно быть {$_POST['otch']} 4) вместо $_POST[dolzhnost] должно быть {$_POST['dolzhnost']} */ $q="update name set fam='$fam',name='$imia',otch='$otch', dolzhnost='$dolzhnost', otdel='$otdel' where id='{$_SESSION['record_id']}'"; $ath = mysql_query($q); if($ath) { header('Location: update_name.php'); } $q2="update person set ulisa='$id_ul',dom='$id_dom',korpus='$id_korpus', bithday='$id_bithday', kvartira='$id_kvar', home_phone='$id_hph', mob_phone='$id_mph', mail='$id_mail' where id='{$_SESSION['record_id']}'"; $ath2 = mysql_query($q2); if($ath2) { header('Location: update_name.php'); } $q3="update other set comment='$id_comment' where id='{$_SESSION['record_id']}'"; $ath3 = mysql_query($q3); if($ath3) { header('Location: update_name.php'); } } } echo"<html><body>"; //выборка поля "должность", для дальнейшего создания выпадающего списка! //!!!!!!- должности хранятся в таблице dolzhnost , а не в name { $query1="SELECT dolzhnost FROM dolzhnost ORDER BY dolzhnost "; $result1=mysql_query($query1); //сам выпадающий список, должностей переменная "$form_dolj" // !!!!!!здесь не нужен <form action=editform.php method=POST> $form_dolj=" <select type=class name=dolzhnost>"; while ($num_dolj=mysql_fetch_array($result1, MYSQL_ASSOC)) { // !!!! текущая должность должна быть выбрана + элементы массива в фигурные скобки !!!! if($dolzhnost==$num_dolj['dolzhnost']) { $form_dolj.="<option value={$num_dolj['dolzhnost']} selected>{$num_dolj['dolzhnost']}</option>\n"; } else { $form_dolj.="<option value={$num_dolj['dolzhnost']}>{$num_dolj['dolzhnost']}</option>\n"; } } $form_dolj.="</select>"; mysql_free_result($result1); } { $query2="SELECT otdel FROM otdel ORDER BY otdel "; $result2=mysql_query($query2); //сам выпадающий список, должностей переменная "$form_dolj" // !!!!!!здесь не нужен <form action=editform.php method=POST> $form_otd=" <select type=class name=otdel>"; while ($num_otd=mysql_fetch_array($result2, MYSQL_ASSOC)) { // !!!! текущая должность должна быть выбрана + элементы массива в фигурные скобки !!!! if($otdel==$num_otd['otdel']) { $form_otd.="<option value={$num_otd['otdel']} selected>{$num_otd['otdel']}</option>\n"; } else { $form_otd.="<option value={$num_otd['otdel']}>{$num_otd['otdel']}</option>\n"; } } $form_otd.="</select>"; mysql_free_result($result2); } // !!!! нужен завершающий тэг //создание рабочего окна, в которое будут заноситься записи для редактирования //!!!! неправильно /// !!!! добавлены тэги формы ?> <center> <form action="editform_name.php" method="post"> <table border=5> <br><br><br><br><br><br><br><br> <tr><basefont face=\"Arial, sans-serif\" size=3>Данные сотрудника:</tr> <tr><td><basefont face=\"Arial, sans-serif\" size=3>Фамилия:</td> <td><input type=text size=30 name=fam value=<? echo $fam; ?>></basefont></td></tr> <tr><td><basefont face=\"Arial, sans-serif\" size=3>Имя:</td> <td><input type=text size=30 name=name value=<? echo $imia; ?>></basefont></td></tr> <tr><td><basefont face=\"Arial, sans-serif\" size=3>Отчество:</td> <td><input type=text size=30 name=otch value=<? echo $otch; ?>></basefont></td></tr> <tr><td><basefont face=\"Arial, sans-serif\" size=3>Должность:</td> <td><? echo $form_dolj; ?></basefont></td></tr> <tr><td><basefont face=\"Arial, sans-serif\" size=3>Отдел:</td> <td><? echo $form_otd; ?></basefont></td></tr> </table></form></center> <center> <table border=5> <tr><basefont face=\"Arial, sans-serif\" size=3>Остальные данные:</tr> <tr><td><basefont face=\"Arial, sans-serif\" size=3>Дата рождения:</td> <td><input type=text size=30 name=bithday value=<? echo $id_bithday; ?>></basefont></td></tr> <tr><td><basefont face=\"Arial, sans-serif\" size=3>Улица:</td> <td><input type=text size=30 name=ulisa value=<? echo $id_ul; ?>></basefont></td></tr> <tr><td><basefont face=\"Arial, sans-serif\" size=3>Дом:</td> <td><input type=text size=30 name=dom value=<? echo $id_dom; ?>></basefont></td></tr> <tr><td><basefont face=\"Arial, sans-serif\" size=3>Корпус:</td> <td><input type=text size=30 name=korpus value=<? echo $id_korpus; ?>></basefont></td></tr> <tr><td><basefont face=\"Arial, sans-serif\" size=3>Квартира:</td> <td><input type=text size=30 name=kvartira value=<? echo $id_kvar; ?>></basefont></td></tr> <tr><td><basefont face=\"Arial, sans-serif\" size=3>Домашний тел:</td> <td><input type=text size=30 name=home_phone value=<? echo $id_hph; ?>></basefont></td></tr> <tr><td><basefont face=\"Arial, sans-serif\" size=3>Мобильный телефон:</td> <td><input type=text size=30 name=mob_phone value=<? echo $id_mph; ?>></basefont></td></tr> <tr><td><basefont face=\"Arial, sans-serif\" size=3>E-Mail:</td> <td><input type=text size=30 name=mail value=<? echo $id_mail; ?>></basefont></td></tr> <tr><td valign=top>Другая информация:</td> <td><textarea rows=5 cols=24><? echo $id_comment;?></textarea></td></tr> <tr><td colspan=2 align=center><input type=submit name=update value=Обновить></td></tr> </table></form></center> </body></html>";