1. Забросьте изучение php третьей версии, начните изучение php пятой версии. ПХП, по собственному опыту считаю, что лучше учить по примерам..
Черт! Извини, был неправ http://www.google.com/search?q=php+примеры+скриптов&ie=utf-8&oe=utf-8&aq=t&rls=org.debian:ru:unofficial&client=iceweasel-a => http://htmlweb.ru/php/example/
TheShock, спасибо за ссылки - есть на что посмотреть. Не интересен вариант, который у меня получился по теме?
Димон, каша, если честно Давайте улучшим, скажем, ваш обработчик PHP: <?php function dataForDB ($str) { // Делаю алиас, чтобы был короче. В данном случае решение вполне ничего return mysql_real_escape_string($str); } /* Проверяем глобальные переменные и присваиваем им имена * Я минут 5 думал, что значит Femyli, (семья?) и пока не полез * в логику отображения - не понял. Транслит читается по-уродски * Более того, ваш код могут увидеть прогеры, которые не знают русский * Английский же должны знать все. А если вы его не знаете, то... * замечательный инструмент вам в помощь: [url=http://translate.google.com/translate_t]http://translate.google.com/translate_t[/url] */ /* Кроме того, что такой подход более очевиден и приятен глазу - он еще * и надежнее, ибо у нас не будет необъявленных переменных, даже если * соответствующие значения в массиве $_POST - отсутствуют. */ $surname = !empty($_POST['surname']) ? dataForDB($_POST['surname']) : ''; $firstName = !empty($_POST['firstName']) ? dataForDB($_POST['firstName']) : ''; $secondName = !empty($_POST['secondName']) ? dataForDB($_POST['secondName']) : ''; $departmentID = !empty($_POST['department']) ? intval($_POST['department']) : 0 ; $appointmentID = !empty($_POST['appointment']) ? intval($_POST['appointment']) : 0 ; $address = !empty($_POST['address']) ? dataForDB($_POST['address']) : ''; $workPhone = !empty($_POST['workPhone']) ? dataForDB($_POST['workPhone']) : ''; $homePhone = !empty($_POST['homePhone']) ? dataForDB($_POST['homePhone']) : ''; $mobilePhone = !empty($_POST['mobilePhone']) ? dataForDB($_POST['mobilePhone']) : ''; mysql_query(" INSERT INTO `Staff` (`Surname`, `FirstName`, `SecondName`, `DepartmentID`, `AppointmentID`, `Address`, `WorkPhone`, `HomePhone`, `MobilePhone`) VALUES ('$surname','$firstName','$secondName', '$departmentID','$appointmentID','$address', '$workPhone','$homePhone','$mobilePhone') "); ?> Извините, но верстка немного поехала. В нормальном редакторе с моноширинным шрифтом должно нормально выглядеть. Например, вот так Димон, программирование - это искусство. Представьте, что рисуете картину. Но скажу сразу. Не огорчайтесь - у Вас все впереди. Главное - будьте самокритичны и всегда старайтесь найти решение получше
Спасибо, красивый обработчик. За английский обязательно возмусь - как с дипломом расхлебаюсь. На данном этапе мне важно пыль в глаза комиссии бросить, а потом займусь спокойным рисованием всего, чего душа пожелает. А сейчас у меня просто земля под ногами горит - через две недели предзащита, а у меня только наброски сайта... Я раньше не изучал ни РНР ни MySql, только Delphi, Access...
Это тот же обработчик, выполняющий ровно те же действия, что и в первом сообщении. Вопросы ещё есть? Пока я тут
Есть один по чекбоксам: Усть страница с выводом на ней таблицы сотрудников, перед каждой записью стоит чекбокс (записи и чекбоксы созданны массивом, кроме первого). Как удалять записи отмеченные чекбоксами (всмысле галочками), а также как их правильно обработать на редактирование?
в таких случаях я у чекбокса ставлю id равный id записи в базе, а имя даю name="check_mark[]" (т.е. в результате в пхп будет массив, со значениями равными id). немного копипаста Код (Text): $msg_ids=""; $check_count=0; if(is_array($_POST['check_mark'])&&count($_POST['check_mark'])>1) { foreach ($_POST['check_mark'] as $thisnum) { if(isNum($thisnum)) $msg_ids.=($msg_ids ? "," : "").$thisnum; $check_count++; } }else{ if(isNum($_POST['check_mark'][0])){ $msg_ids=$_POST['check_mark'][0]; } $check_count=1; } if($msg_ids!==""){ dbquery("DELETE FROM `".$db_pref."mail_server` WHERE mail_id IN(".$msg_ids.")"); }
у чекбокса ставишь имя, скажем, "id{id}", где {id} - соответствующий айдишник. Когда получаются данные PHP: <? $toDevNull = array(); foreach($_REQUEST as $key => $value) { // Может, надо еще добавить проверку на $value === 'on'. Не помню, что там чекбоксы шлют if(preg_match("/^id([\d]+)$/", $key, $m)) { $toDevNull[] = $m[1]; } } print_r($toDevNull); // В массиве "$toDevNull" будут все значения, подлежащие удалению. Дальше сам думай :)
Димон указываю то поле, что потом нужно удалить (в примере mail_id). чекбоксы разумеется и "рисую" с использованием данных выборки из базы (я же все равно выбираю данные для составления страницы)
antonn, согласен, лучше писать в массив. Но код у меня получился красивее, конечно Димон, а какая тебе разница? Оно тебе указывает тот АйДи, который надо удалить
Т.е например так?: PHP: ....... { echo "<tr>"; echo "<td align='center' bgcolor='#D5D5D5'><input type='checkbox' name='id{Sotrudnik_id}' value='Contakt' id='checkbox1' method='POST' action='sotr_upd.php'/></td>"; echo "<td><h4 color='blue'>",$row ['Femyli'],"</td><td><h4>",$row ['Name'],"</td><td><h4>",$row ['Otchestvo'],"</td><td><h4>",$row ['DolgnostName'],"</td><td><h4>",$row ['OtdelName'],"</td>"; echo "</tr>"; } echo "</table>"; .......
только не {Sotrudnik_id}, а {$Sotrudnik_id} method и action указываются в теге "form", а не "input" Ну и код все-еще ужасно непонятный. Кстати, почему ни один тег <h4 - не закрыт </h4> ?
Ноя не вывожу в запросе поле id. И если метод и все остальное писать в теге формы, мне туда и всю результирующую таблицу загонять надо?