В чём у меня ошибка тут, почему выводит по 1 записи из таблицы, вместо всех? PHP: <html> <HEAD> <META http-equiv=content-type content="text/html; charset=windows-1251"> </HEAD> <body bgcolor = "0d6666"> <br><br><br><br><br> <center><h2>Формы</h2></center> <table align="center"border=5> <tr align="center"> <td><font color="77dd77"><font size="3px"><b>Название формы:</b></font></font></td> <td><font color="77dd77"><font size="3px"><b>Сроки обработки:</b></font></font></td> <td><font color="77dd77"><font size="3px"><b>Отдел</b></font></font></td> <td><font color="77dd77"><font size="3px"><b>Сотрудник</b></font></font></td> <td><font color="ff00gg"><font size="3px"><b>Редактирование</b></font></font></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 forms ORDER BY nazv"); if($ath) while($form = mysql_fetch_array($ath)) { $form_id=$form['id']; $form_nazv=$form['nazv']; $form_obr=$form['period_obr']; $form_otdel=$form['otdel']; $form_id_name=$form['id_sotr']; } $ath2 = mysql_query("SELECT * FROM name WHERE id=".$form_id_name); if($ath2) while($sotr = mysql_fetch_array($ath2)) { $sotr_fam=$sotr['fam']; } { echo "<tr><td><font color=\"00cccc\">".$form_nazv."</font></td><td><font color=\"00cccc\">".$form_obr."</font></td><td><font color=\"00cccc\">".$form_otdel."</font></td><td><font color=\"00cccc\">".$sotr_fam."</font></td> <td><a href=editform_form.php?id=".$form_id.">Редактировать</a></td></tr>"; } echo "</table>"; ?> </table> </body> </html> И ещё одно! Почему у меня на просмотре структуры таблицы, слова с использованием пробелов не выводятся корректно, т.е. Если я ввёл где то "Начальник отдела", то на просмотр у меня выводит лишь слово "Начальник", а "отдела" просто исчезает! Как это понять???
Dimitry_LD отвечу на первый вопрос: допустим в базе имеется таблица nazv с двумя записями: возьмём кусочек кода запроса в базу, упрощённый для наглядности: PHP: <?php $ath = mysql_query("SELECT * FROM forms ORDER BY nazv"); if($ath){ while($form = mysql_fetch_array($ath)){ $form_id = $form['id']; $form_id_name = $form['id_sotr']; } } ?> Выполняем код и получаем в итоге: $form_id = 2; $form_id_name = 14. и тут же "О, Боже, Боже! Что случилось с первой записью?" давайте разберём код по частям - запрос возвращает нам 2 записи, так? $form = mysql_fetch_array($ath) возвращает нам первую запись 1 | 12, $form_id становится 1, а $form_id_name - 12. затем цикл продолжается и $form = mysql_fetch_array($ath) возвращает нам вторую запись 2 | 14 и, вот блин, пи-пи-пи... (*censored*) фокус-покус: $form_id становится 2, а $form_id_name - 14. затем цикл прекращается - записей в базе больше нет. Вывод - такой код всегда будет возвращать нам только последнюю запись.
Ок, я вас понял, в таком случае, подскажите, как правильно надо записать, чтобы всё выводилось корректно?
1) блок кода, выполняющийся при выполнении условия if($ath) нужно заключить в фигурные скобки 2) формирование строки таблицы нужно проводить внутри цикла while($form = mysql_fetch_array($ath)) PHP: $ath = mysql_query("SELECT * FROM forms ORDER BY nazv"); if($ath) { while($form = mysql_fetch_array($ath)) { $form_id=$form['id']; $form_nazv=$form['nazv']; $form_obr=$form['period_obr']; $form_otdel=$form['otdel']; $form_id_name=$form['id_sotr']; $ath2 = mysql_query("SELECT * FROM name WHERE id=".$form_id_name); if($ath2) { while($sotr = mysql_fetch_array($ath2)) { $sotr_fam=$sotr['fam']; } echo "<tr><td><font color=\"00cccc\">".$form_nazv."</font></td><td><font color=\"00cccc\">".$form_obr."</font></td><td><font color=\"00cccc\">".$form_otdel."</font></td><td><font color=\"00cccc\">".$sotr_fam."</font></td> <td><a href=editform_form.php?id=".$form_id.">Редактировать</a></td></tr>"; } } } 3) второй вопрос вообще непонятен - структура таблицы - это описания полей, а не то, что в них хранится В чем ты просматриваешь?
Ага, ясно.. спасибо на счёт первой части, теперь ясно почему у меня не работало.. На счёт второй части. К примеру я вношу данные где будут использованы пробелы, к примеру есть форма "Должность" и когда я ввожу "Начальник отдела", при просмотре этой формы у меня выводит лишь "Начальник"(имеется ввиду просмотр, как этот, с которым вы мне только что помогли! При этом в phpmyadmin всё нормально, т.е. с пробелами всё корректно отображается), а если я ввожу "Начальник_отдела", то просмотр выполняется корректно!
Форма добавления должности: PHP: <? echo"<body bgcolor = \"0d6666\">"; $connection = mysql_connect("localhost", "root","") or die("Could not connect"); mysql_select_db("Stat_forms") or die("Could not select database"); $form="<form action=add_dolzh.php method=POST> <center><table border=3><br><br><br><br><br><br><br><br><br><br>"; echo"<body bgcolor = \"0d6666\">"; $form.=" </select></td></tr> <tr><td><font color=\"77dd77\"><font size=\"3px\"><b>Введите новую должность:</b></font></font></td><td><input name=dolzhnost type=text size=50></td></tr></table></center> <br> <center> <input type=submit name=add value=\"Добавить\"> <input type=reset value=\"Очистить\"> </center> </form>"; if ($_POST['add']) { $query3="INSERT INTO dolzhnost (`dolzhnost`) VALUE ('$_POST[dolzhnost]')"; $result3=mysql_query($query3, $connection) or die(mysql_error()); ?> <html> <head> <center><br><br><br><br><br><br><br><br><br><br><br><br><br><br> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> </head> <font color="77dd77"><font size="5px"><center>Должность <b><font color="dc143c"><? echo $_POST['dolzhnost']; ?></font></b> успешно добавлена</font></font></center> <br> </center> </html> <? mysql_close($connection); } else { echo "$form"; } echo "</body>"; ?> Форма редактирования\удаления должности: \\В выпадающий список всё выносится нормально(с пробелом), а когда жмёшь "редактировать" - слово "отрубается" после пробела! PHP: <? echo"<body bgcolor = \"0d6666\">"; $connection = mysql_connect("localhost", "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><br><br><br><br><br><br><br><br><br><br><tr><td><font color=\"77dd77\"><font size=\"3px\"><b>Выберите должность для редактирования: </font></b></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><br><br><br><br><br><br><br><br><br><font color=\"red\"><font size=\"3px\">Выберите только одну из операций!</font></font></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=5> <br><br><br><br><br><br> <center><h2>Редактирование должности</h2></center> <tr><td> <font color="00cccc"><font size="3px">Старое название должности:</font></td> <td><input type=text size=50 name=oldch value=<? echo $id_ot; ?> readonly></td></tr> <tr><td><font color="00cccc"><font size="3px">Введите новое название должности:</td> <td><input type=text size=50 name=newch value=<? echo $id_ot; ?>></font></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><br><br><br><br><br><br><br><br><br><font color=\"red\"><font size=\"3px\">Выбранная должность удалена успешно</font></font></center>"; } else { print "<center><br><br><br><br><br><br><br><br><br><font color=\"red\"><font size=\"3px\">Для изменения или удаления отдела Вам нужно выбрать нужную операцию!</font></font></center>"; } } } mysql_close($connection); } else { echo "$form"; } echo"</body>"; ?> !!И так во всех формах
1) когда получаешь старое значение должности нужно использовать функцию htmlspecialchars 2) значение атрибута value заключаешь в двойные кавычки строка 57 PHP: $id_ot=htmlspecialchars($num2['dolzhnost']); строки 70-72 HTML: <td><input type=text size=50 name=oldch value="<? echo $id_ot; ?>" readonly></td></tr> <tr><td><font color="00cccc"><font size="3px">Введите новое название должности:</td> <td><input type=text size=50 name=newch value="<? echo $id_ot; ?>"></font></td></tr>
Ага.. надо будет попробовать, спасибо, надеюсь поможет) Может достал вас уже, но у меня тут непонятка в коде. Есть 2 таблицы: forms: id int(11) nazv varchar(100) period_obr varchar(50) otdel varchar(50) id_sotr varchar(100) name: id int(11) fam varchar(20) name varchar(20) otch varchar(20) id_sotr varchar(100) И есть форма со следующими полями: Название формы: nazv Период обработки: period_obr Отдел обработки: otdel Выполняет: id_sotr (сравнивает id с id в таблице name и выносит соответствующую фамилию) В таблицу на просмотр у меня выносятся эти данные и при нажатии на кнопку "редактировать", всё происходит по Вашему совету, runner. Всё редактирует как надо, КРОМЕ сотрудника! Т.е. в выпадающий список он сравнивает id_sotr(из табл forms) с id(из табл name) и выносит фамилию. Но когда я нажимаю отредактировать, сотрудник по ID не редактируется, а поле id_sotr в таблице forms становится ПУСТЫМ! Возможно я где то что то забыл, как обычно Вот код формы редактирования: 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 forms WHERE id=".$_GET['id']); if($ath) { //присваивание переменных для дальнейшего вызова! $form = mysql_fetch_array($ath); $form_nazv=$form['nazv']; $form_obr=$form['period_obr']; $otdel=$form['otdel']; $id_sotr=$form['id_sotr']; // добавлено-сохраняем в сессионной переменной id записи $_SESSION['record_id']=$_GET['id']; } else { echo( "<html><body><P>{$_GET['id']}-Запись не найдена</P></body></html>" ); exit(); } } elseif(isset($_POST['update'])) { $form_nazv=mysql_real_escape_string($_POST["nazv"]); $form_obr=mysql_real_escape_string($_POST["period_obr"]); $otdel=$_POST["otdel"]; $id_sotr=$_POST["id_sotr"]; { $q="update forms set nazv='$form_nazv', period_obr='$form_obr', otdel='$otdel', id_sotr='$id_sotr' where id='{$_SESSION['record_id']}'"; $ath = mysql_query($q); if($ath) { header('Location: update_form.php'); } } } echo"<html><body bgcolor = \"0d6666\">"; { $query1="SELECT * FROM name"; $result1=mysql_query($query1); $form_sotr=" <select type=class name=id>"; while ($num_sotr=mysql_fetch_array($result1, MYSQL_ASSOC)) { if($id_sotr==$num_sotr['id']) { $form_sotr.="<option value={$num_sotr['id']} selected>{$num_sotr['fam']}</option>\n"; } else { $form_sotr.="<option value={$num_sotr['id']}>{$num_sotr['fam']}</option>\n"; } } $form_sotr.="</select>"; mysql_free_result($result1); } { $query2="SELECT otdel FROM otdel ORDER BY otdel "; $result2=mysql_query($query2); $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_form.php" method="post"> <table border=5> <br><br><br><br><br><br><br><br> <tr><h2>Формы</h2></tr> <tr><td><font color="00cccc"><font size="3px">Название формы:</font></font></td> <td><input type=text size=30 name=nazv value=<? echo $form_nazv; ?>></td></tr> <tr><td><font color="00cccc"><font size="3px">Период обработки:</font></font></td> <td><input type=text size=30 name=period_obr value=<? echo $form_obr; ?>></td></tr> <tr><td><font color="00cccc"><font size="3px">Отдел:</font></font></td> <td><? echo $form_otd; ?></td></tr> <tr><td><font color="00cccc"><font size="3px">Сотрудник:</font></font></td> <td><? echo $form_sotr; ?></td></tr> <tr><td colspan=2 align=center><input type=submit name=update value=Редактировать></td></tr> </table></form></center> </body></html>";
строки 55 и 80 противоречат друг другу: $id_sotr=$_POST["id_sotr"];=> код сотрудника получаешь из поля с атрибутом name, равным id_sotr $form_sotr=" <select type=class name=id>"; - устанавливаешь атрибут name равным id для поля ввода сотрудника нужно просто поменять строку 80 $form_sotr=" <select type=class name='id_sotr'>";
Блин, всё равно дурь какая то!! Как с выпадающими списками быть?? У меня отображается в списке в этом всё как надо с пробелом, а когда нажимаю кнопочку отправить то вносится уже в саму SQL-базу то, что ДО ПРОБЕЛА!?!? Т.е. формы, где заносится из текстового поля в базу - всё работает корректно, а из выпадающего списка в базу - НИФИГА! Как не мучился, вставлял эту строку, всё бестолку! Может вставляю не туда? Куда надо? Вот к примеру, в этой форме: PHP: <? echo"<body bgcolor = \"0d6666\">"; $connection = mysql_connect("localhost", "root","") or die("Could not connect"); mysql_select_db("stat_forms") or die("Could not select database"); ///////!!!!ВОТ ЭТОТ ВЫПАДАЮЩИЙ СПИСОК, В КОТОРОМ ВСЁ НОРМАЛЬНО ОТОБРАЖАЕТСЯ С ПРОБЕЛАМИ, А ВНОСИТСЯ БЕЗ!!!!! { $query1="SELECT dolzhnost FROM dolzhnost"; $result1=mysql_query($query1,$connection) or die (mysql_error($connection)); $form_dolj=" <form action=add_sotr.php method=POST> <select type=class name=dolzhnost>"; while ($num_dolj=mysql_fetch_array($result1, MYSQL_ASSOC)) { $form_dol=htmlspecialchars($num_dolj['dolzhnost']); $form_dolj.="<option value=$form_dol>$num_dolj[dolzhnost]</option>\n"; //выпадающий список должностей } mysql_free_result($result1); } /////А ЭТО ЕЩЁ ОДИН!!! { $query_otd="SELECT otdel FROM otdel"; $result_otd=mysql_query($query_otd,$connection) or die (mysql_error($connection)); $form_otd=" <form action=add_sotr.php method=POST> <select type=class name=otdel>"; while ($num_otd=mysql_fetch_array($result_otd, MYSQL_ASSOC)) { $form_otd.="<option value=$num_otd[otdel]>$num_otd[otdel]</option>\n"; //выпадающий список отделов } mysql_free_result($result_otd); } $form=" <form action=add_sotr.php method=POST> <center><table border=5><tr><basefont face=\"Arial, fantasy\" size=2>"; //форма ниже $form.=" </select></td></tr><br><br><br><br> <tr><td colspan=2 align=center> <font color=\"77dd77\"><font size=\"4px\"><b>Введите данные сотрудника:</b></font></font></td></tr> <tr><td><font color=\"00cccc\"><font size=\"3px\">Фамилия:</font></font></td><td><input type=text size=50 name=oldfam></td> <tr><td><font color=\"00cccc\"><font size=\"3px\">Имя:</font></font></td><td><input type=text size=50 name=oldname></td> <tr><td><font color=\"00cccc\"><font size=\"3px\">Отчество:</font></font></td><td><input type=text size=50 name=oldotch></td> <tr><td><font color=\"00cccc\"><font size=\"3px\">Дата рождения:</font></font></td><td><input type=text size=50 name=oldbithday></td> <tr><td><font color=\"00cccc\"><font size=\"3px\">Улица:</font></font></td><td><input type=text size=50 name=oldulisa></td> <tr><td><font color=\"00cccc\"><font size=\"3px\">Дом:</font></font></td><td><input type=text size=50 name=olddom></td> <tr><td><font color=\"00cccc\"><font size=\"3px\">Корпус:</font></font></td><td><input type=text size=50 name=oldkorpus></td> <tr><td><font color=\"00cccc\"><font size=\"3px\">Квартира:</font></font></td><td><input type=text size=50 name=oldkvar></td> <tr><td><font color=\"00cccc\"><font size=\"3px\">Домашний телефон:</font></font></td><td><input type=text size=50 name=oldhph></td> <tr><td><font color=\"00cccc\"><font size=\"3px\">Мобильный телефон:</font></font></td><td><input type=text size=50 name=oldmph></td> <tr><td><font color=\"00cccc\"><font size=\"3px\">Адрес электронной почты:</font></font></td><td><input type=text size=50 name=oldmail></td> <tr><td valign=top><font color=\"00cccc\"><font size=\"3px\">Остальное:</font></font></td><td><textarea name=oldcomment rows=15 cols=39></textarea></td> <tr><td colspan=3><font color=\"00cccc\"><font size=\"3px\">Должность:</font></font> $form_dolj. </td> <tr><td colspan=3><font color=\"00cccc\"><font size=\"3px\">Отдел:</font></font>         $form_otd. </td> <tr><td colspan=3 align=center><input type=checkbox name=prav value=prav>  <font color=\"77dd77\"><font size=\"3px\">Данные верны</font></font></td></tr> <tr><td colspan=2 align=center><basefont face=\"Arial, fantasy\" size=2><input type=submit name=acres value=\"Отправить\">   <input type=reset value=\"Сбросить\"></basefont> </td></tr></table></center> </form>"; if ($_POST['acres']) { if ($_POST['prav'] == "prav") { //выборка должности { $query_add="SELECT id FROM dolzhnost WHERE dolzhnost='$_POST[dolzhnost]'"; $result_add=mysql_query($query_add, $connection) or die(mysql_error($connection)); while ($dol2 = mysql_fetch_array($result_add, MYSQL_ASSOC)) { $name_dolj = $dol2['id']; } mysql_free_result($result_add); } //выборка отдела { $query_add_otd="SELECT id FROM otdel WHERE otdel='$_POST[otdel]'"; $result_add_otd=mysql_query($query_add_otd, $connection) or die(mysql_error($connection)); while ($otd2 = mysql_fetch_array($result_add_otd, MYSQL_ASSOC)) { $name_otd = $otd2['id']; } mysql_free_result($result_add_otd); } $query_add_in_name="INSERT INTO name (`dolzhnost`,`otdel`,`fam`,`name`,`otch`) VALUE('$_POST[dolzhnost]','$_POST[otdel]','$_POST[oldfam]', '$_POST[oldname]', '$_POST[oldotch]')"; $result_add_in_name=mysql_query($query_add_in_name,$connection) or die(mysql_error($connection)); $query4="SELECT id FROM name WHERE dolzhnost='$_POST[dolzhnost]' && otdel='$_POST[otdel]' && fam='$_POST[oldfam]' && name='$_POST[oldname]' && otch='$_POST[oldotch]'"; $result4=mysql_query($query4,$connection) or die(mysql_error($connection)); while ($num4=mysql_fetch_array($result4)) { $id_sot=$num4['id']; } mysql_free_result($result4); $query2="INSERT INTO person (`id_name`,`ulisa`,`dom`,`korpus`,`bithday`,`kvartira`,`home_phone`,`mob_phone`,`mail`) VALUE('$id_sot','$_POST[oldulisa]','$_POST[olddom]','$_POST[oldkorpus]','$_POST[oldbithday]','$_POST[oldkvar]','$_POST[oldhph]','$_POST[oldmph]','$_POST[oldmail]')"; $result2=mysql_query($query2,$connection) or die(mysql_error($connection)); $query3="INSERT INTO other (`id_name`,`comment`) VALUE('$id_sot','$_POST[oldcomment]')"; $result3=mysql_query($query3,$connection) or die(mysql_error($connection)); print "<br><br><br><br><br><br><br><br><br><br><br><br><br><br><font color=\"77dd77\"><font size=\"5px\"><center> Сотрудник <font color=\"dc143c\"><b>$_POST[oldfam] $_POST[oldname] $_POST[oldotch]</b></font> теперь в базе данных организации</font></font></center>"; } else { print "<br><br><br><br><br><br><br><br><font color=\"red\"><font size=\"4px\"><center>Ошибка: не подвержденны правильность ввода данных</font></font>"; print "<br><br><br><br><input type=button value=\"Вернуться\" onClick='javascript:history.go(-1)'></center>"; } mysql_close($connection); } else { echo "$form"; echo "</body>"; } ?>
У тебя есть таблицы - справочники, из записей которых формируются списки (dolzhnost,otdel, ...). Они состоят из двух полей: код - код должности, код отдела и т.д. Для упрощения работы коду присваиваются либо целое число или строка без пробелов название- название должности, отдела и т.д. 1)Списки нужно формировать следующим образом а) в запросе выбирать оба поля - код и название PHP: $query1="SELECT * FROM dolzhnost"; $query_otd="SELECT * FROM otdel"; б) опции списка формировать так <option value=код>название</option> PHP: $form_dolj=" <select type=class name=dolzhnost>"; while ($row=mysql_fetch_array($result1, MYSQL_ASSOC)) { $name=htmlspecialchars($row['dolzhnost']); $id=htmlspecialchars($row['id']); $form_dolj.="<option value=\"$id\">$name</option>\n"; //выпадающий список должностей } $form_dolj.="</select>"; PHP: $form_otd=" <select type=class name=otdel>"; while ($row=mysql_fetch_array($result_otd, MYSQL_ASSOC)) { $name=htmlspecialchars($row['otdel']); $id=htmlspecialchars($row['id']); $form_otd.="<option value=\"$id\">$name</option>\n"; //выпадающий список отделов } $form_otd.="</select>"; 2) при записи в базу данных нужно записывать именно код, а не название поэтому блок кода 70-96 просто не нужен 3) у тебя поле id в таблице name auto_increment. Поэтому код добавленной записи можно определить так: $id_sot=mysql_insert_id(); и блок кода 103-111 не нужен 4) если ты по-прежнему хочешь записать вместо кода название, тогда просто заключи атрибут value у опций в кавычки (поскольку у тебя название может содержать пробелы). Именно из-за этого у тебя записывались значения до первого пробела
Да.. Вы имеете ввиду редактирование по id. Я сначала так хотел сделать, а потом когда стал делать по названиям, было поздно. Но вот пришлось сейчас многое переписать, но я доволен!)) Огромное спасибо, что так быстро отвечаете, а то порой приходится дни ждать... Осталось удаление закончить, если будут вопросы, я вам напишу ^^
Я так подумал... Ведь для удаления можно прям эту форму и использовать, помогите, куда тут засунуть дополнительные If'ы для удаления?? Вот форма: PHP: <html> <HEAD> <META http-equiv=content-type content="text/html; charset=windows-1251"> </HEAD> <body bgcolor = "0d6666"> <br><br><br><br><br> <center><h2>Сотрудники</h2></center> <table align="center"border=5> <tr align="center"> <td><font color="77dd77"><font size="3px"><b>Фамилия</b></font></font></td> <td><font color="77dd77"><font size="3px"><b>Имя</b></font></font></td> <td><font color="77dd77"><font size="3px"><b>Отчество</b></font></font></td> <td><font color="77dd77"><font size="3px"><b>Должность</b></font></font></td> <td><font color="77dd77"><font size="3px"><b>Отдел</b></font></font></td> <td><font color="ff00gg"><font size="3px"><b>Редактирование\Удаление</b></font></font></td> </tr> <?php $link = mysql_connect("***", "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"); if($ath) { while($form = mysql_fetch_array($ath)) { $name_id=$form['id']; $name_fam=$form['fam']; $name_name=$form['name']; $name_otch=$form['otch']; $name_dol=$form['dolzhnost']; $name_otd=$form['otdel']; $ath2 = mysql_query("SELECT * FROM dolzhnost WHERE id=".$name_dol); if($ath2) { while($dol = mysql_fetch_array($ath2)) { $nazv_dol=$dol['dolzhnost']; } $ath3 = mysql_query("SELECT * FROM otdel WHERE id=".$name_otd); if($ath3) { while($otdel = mysql_fetch_array($ath3)) { $nazv_otdel=$otdel['otdel']; } echo "<tr><td><font color=\"00cccc\">".$name_fam."</font></td><td><font color=\"00cccc\">".$name_name."</font></td><td><font color=\"00cccc\">".$name_otch."</font></td><td><font color=\"00cccc\">".$nazv_dol."</font></td><td><font color=\"00cccc\">".$nazv_otdel."</font></td> <td><a href=editform_name.php?id=".$name_id.">Редактировать</a></td></tr>"; ////и чтоб рядышком "Удалить было" } } } } echo "</table>"; ?> </table> </body> </html> Гляньте, мастера, а то у меня опять с синтаксисом беда(
Ппц, только сейчас обнаружил!! Почему у меня удаляется только последняя запись??? Вот форма выборки данных: update_name.php PHP: <html> <HEAD> <META http-equiv=content-type content="text/html; charset=windows-1251"> </HEAD> <body bgcolor = "#fff"> <br><br><br><br><br> <center><h2>Сотрудники</h2></center> <table align="center"border=5> <tr align="center"> <td><font color="77dd77"><font size="3px"><b>Фамилия</b></font></font></td> <td><font color="77dd77"><font size="3px"><b>Имя</b></font></font></td> <td><font color="77dd77"><font size="3px"><b>Отчество</b></font></font></td> <td><font color="77dd77"><font size="3px"><b>Должность</b></font></font></td> <td><font color="77dd77"><font size="3px"><b>Отдел</b></font></font></td> <td><font color="ff00gg"><font size="3px"><b>Редактирование/Удаление</b></font></font></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"); if($ath) { while($form = mysql_fetch_array($ath)) { $name_id=$form['id']; $name_fam=$form['fam']; $name_name=$form['name']; $name_otch=$form['otch']; $name_dol=$form['dolzhnost']; $name_otd=$form['otdel']; $ath2 = mysql_query("SELECT * FROM dolzhnost WHERE id=".$name_dol); if($ath2) { while($dol = mysql_fetch_array($ath2)) { $nazv_dol=$dol['dolzhnost']; } $ath3 = mysql_query("SELECT * FROM otdel WHERE id=".$name_otd); if($ath3) { while($otdel = mysql_fetch_array($ath3)) { $nazv_otdel=$otdel['otdel']; } echo "<tr><td><font color=\"00cccc\">".$name_fam."</font></td><td><font color=\"00cccc\">".$name_name."</font></td><td><font color=\"00cccc\">".$name_otch."</font></td><td><font color=\"00cccc\">".$nazv_dol."</font></td><td><font color=\"00cccc\">".$nazv_otdel."</font></td> <td><a href=editform_name.php?id=".$name_id."><input type=submit value=\"Изменить\"></a>            <a href=delete_name.php><input type=submit value=\"Удалить\"></a> </td></tr>"; ///вот рядом с кнопкой "изменить", кнопка "удалить"! } } } } echo "</table>"; ?> </table> </body> </html> Вот рабочая форма удаления: delete_name.php PHP: <? $connection = 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"); if($ath) { while($form = mysql_fetch_array($ath)) { $name_id=$form['id']; $query4="SELECT * FROM person"; $result4=mysql_query($query4) or die(mysql_error()); while ($num4=mysql_fetch_array($result4)) { $id_per=$num4['id']; } $ath3 = mysql_query("SELECT * FROM other"); if($ath3) { while($other = mysql_fetch_array($ath3)) { $id_other=$other['id']; } } $q="DELETE FROM name WHERE id=".$name_id; $ath = mysql_query($q); if($ath) { $q2="DELETE FROM person WHERE id_name=".$name_id; $ath2 = mysql_query($q2); if($ath2) { $q3="DELETE FROM other WHERE id_name=".$name_id; $ath3 = mysql_query($q3); if($ath3) { header('Location: update_name.php'); } } } } } mysql_close($connection); ?> В Чём дело, подскажите, пожалуйста!!!
Вот я переделал, всё работает, но почему то вылезает надпись: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in Z:\****\****\www\***\****\Sotrudnik\update_name.php on line 26 PHP: <html> <HEAD> <META http-equiv=content-type content="text/html; charset=windows-1251"> </HEAD> <body bgcolor = "#fff"> <br><br><br><br><br> <center><h2>Сотрудники</h2></center> <table align="center"border=5> <tr align="center"> <td><font color="77dd77"><font size="3px"><b>Фамилия</b></font></font></td> <td><font color="77dd77"><font size="3px"><b>Имя</b></font></font></td> <td><font color="77dd77"><font size="3px"><b>Отчество</b></font></font></td> <td><font color="77dd77"><font size="3px"><b>Должность</b></font></font></td> <td><font color="77dd77"><font size="3px"><b>Отдел</b></font></font></td> <td><font color="ff00gg"><font size="3px"><b>Редактирование/Удаление</b></font></font></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"); if($ath) { while($form = mysql_fetch_array($ath)) { $name_id=$form['id']; $name_fam=$form['fam']; $name_name=$form['name']; $name_otch=$form['otch']; $name_dol=$form['dolzhnost']; $name_otd=$form['otdel']; $ath2 = mysql_query("SELECT * FROM dolzhnost WHERE id=".$name_dol); if($ath2) { while($dol = mysql_fetch_array($ath2)) { $nazv_dol=$dol['dolzhnost']; } $ath3 = mysql_query("SELECT * FROM otdel WHERE id=".$name_otd); if($ath3) { while($otdel = mysql_fetch_array($ath3)) { $nazv_otdel=$otdel['otdel']; } echo "<form action=update_name.php method=POST><tr><td><font color=\"00cccc\">".$name_fam."</font></td><td><font color=\"00cccc\">".$name_name."</font></td><td><font color=\"00cccc\">".$name_otch."</font></td><td><font color=\"00cccc\">".$nazv_dol."</font></td><td><font color=\"00cccc\">".$nazv_otdel."</font></td> <td><a href=editform_name.php?id=".$name_id."><input type=submit value=\"Изменить\"></a>            <input type=checkbox name=delete value=delete>Удалить <input type=submit name=chdel value=\"Удалить\"></a> </td></tr>"; if ($_POST['chdel']) { if ($_POST['delete'] == "delete") { $q="DELETE FROM name WHERE id=".$name_id; $ath = mysql_query($q); if($ath) { $q2="DELETE FROM person WHERE id_name=".$name_id; $athq = mysql_query($q2); if($athq) { $q3="DELETE FROM other WHERE id_name=".$name_id; $athq2 = mysql_query($q3); } } } } } } } } echo "</table>"; ?> </table> </body> </html> Что такое?
1) в скрипт удаления записи нужно передавать первичный ключ удаляемой записи. Для этого ссылку на скрипт удаления нужно формировать аналогично ссылке на редактирование: PHP: <a href=delete_name.php?id=".$name_id."><input type=submit value=\"Удалить\"></a> 2) в самом скрипте удаления нужно использовать это значение PHP: <?php $connection = mysql_connect("localhost", "root","") or die("Could not connect"); mysql_select_db("stat_forms") or die("Could not select database"); if(!isset($_GET['id'])) { echo "нужен код удаляемой записи"; die(); } $id=$_GET['id']; // выбрать только удаляемую запись $ath = mysql_query("SELECT * FROM name where id='$id'"); весь остальной код
Всё удаляет, но почему то выдаёт ошибку: Warning: Cannot modify header information - headers already sent by (output started at Z:\home\***\www\***\***\delete_name.php:1) in Z:\home\***\www\***\***\delete_name.php on line 48 Из за чего такое может быть?
PHP: <?php $connection = mysql_connect("localhost", "root","") or die("Could not connect"); mysql_select_db("Stat_forms") or die("Could not select database"); if(!isset($_GET['id'])) { echo "Нужен код удаляемой записи"; die(); } $id=$_GET['id']; // выбрать только удаляемую запись $ath = mysql_query("SELECT * FROM name where id='$id'"); if($ath) { while($form = mysql_fetch_array($ath)) { $name_id=$form['id']; $query_per="SELECT * FROM person"; $result_per=mysql_query($query_per) or die(mysql_error($connection)); $ath_other = "SELECT * FROM other"; $result_other=mysql_query($ath_other) or die(mysql_error($connection)); { $q="DELETE FROM name WHERE id='$id'"; $del_name = mysql_query($q); if($del_name) { $q2="DELETE FROM person WHERE id_name=".$name_id; $del_per = mysql_query($q2); if($del_per) { $q3="DELETE FROM other WHERE id_name=".$name_id; $del_other = mysql_query($q3); if($del_other) { header('Location:update_name.php'); } } } } } } mysql_close($connection); ?> Всё работает, но с PHP: { header('Location:update_name.php'); } Какая то проблема Warning: Cannot modify header information - headers already sent by