За последние 24 часа нас посетили 16953 программиста и 1293 робота. Сейчас ищут 1495 программистов ...

Помогите: INSERT из сложной формы

Тема в разделе "Вопросы от блондинок", создана пользователем Димон, 24 май 2009.

  1. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    Вы говорите, что начали изучать ТРЕТИЙ пхп?
     
  2. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    а что пишите если не секрет? фрииланс?
     
  3. Димон

    Димон Активный пользователь

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Я стал изучать РНР 3 недели назад, кроме книг ничего нет! А кого мне спросить еще??????
     
  4. Димон

    Димон Активный пользователь

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Небольшой сайт, типа АРМ (точнее информационная система)
     
  5. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    1. Забросьте изучение php третьей версии, начните изучение php пятой версии. ПХП, по собственному опыту считаю, что лучше учить по примерам..
     
  6. Димон

    Димон Активный пользователь

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Ребята, читайте внимательнее: Я стал изучать РНР 3 недели назад, кроме...
     
  7. Димон

    Димон Активный пользователь

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Если есть примеры - подскажите где посмотреть
     
  8. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
  9. Димон

    Димон Активный пользователь

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    TheShock, спасибо за ссылки - есть на что посмотреть. Не интересен вариант, который у меня получился по теме?
     
  10. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    Димон, каша, если честно :) Давайте улучшим, скажем, ваш обработчик

    PHP:
    1. <?php
    2.  
    3. function dataForDB ($str) {
    4.     // Делаю алиас, чтобы был короче. В данном случае решение вполне ничего
    5.     return mysql_real_escape_string($str);
    6. }
    7.  
    8. /* Проверяем глобальные переменные и присваиваем им имена
    9.  * Я минут 5 думал, что значит Femyli, (семья?) и пока не полез
    10.  * в логику отображения - не понял. Транслит читается по-уродски
    11.  * Более того, ваш код могут увидеть прогеры, которые не знают русский
    12.  * Английский же должны знать все. А если вы его не знаете, то...
    13.  * замечательный инструмент вам в помощь: [url=http://translate.google.com/translate_t]http://translate.google.com/translate_t[/url]  
    14.  */
    15.  
    16. /* Кроме того, что такой подход более очевиден и приятен глазу - он еще
    17.  * и надежнее, ибо у нас не будет необъявленных переменных, даже если
    18.  * соответствующие значения в массиве $_POST - отсутствуют.  
    19.  */
    20. $surname        = !empty($_POST['surname']) ? dataForDB($_POST['surname'])      : '';
    21. $firstName      = !empty($_POST['firstName'])   ? dataForDB($_POST['firstName'])        : '';
    22. $secondName = !empty($_POST['secondName'])  ? dataForDB($_POST['secondName'])   : '';
    23. $departmentID   = !empty($_POST['department'])  ? intval($_POST['department'])      : 0 ;
    24. $appointmentID  = !empty($_POST['appointment']) ? intval($_POST['appointment'])     : 0 ;
    25. $address        = !empty($_POST['address']) ? dataForDB($_POST['address'])      : '';
    26. $workPhone  = !empty($_POST['workPhone'])   ? dataForDB($_POST['workPhone'])    : '';
    27. $homePhone  = !empty($_POST['homePhone'])   ? dataForDB($_POST['homePhone'])    : '';
    28. $mobilePhone    = !empty($_POST['mobilePhone']) ? dataForDB($_POST['mobilePhone'])  : '';
    29.  
    30. INSERT INTO `Staff`
    31. (`Surname`, `FirstName`, `SecondName`,
    32. `DepartmentID`, `AppointmentID`, `Address`,
    33. `WorkPhone`, `HomePhone`, `MobilePhone`) VALUES
    34. ('$surname','$firstName','$secondName',
    35. '$departmentID','$appointmentID','$address',
    36. '$workPhone','$homePhone','$mobilePhone')
    37. ");
    38. ?>
    39.  
    Извините, но верстка немного поехала. В нормальном редакторе с моноширинным шрифтом должно нормально выглядеть. Например, вот так

    Димон, программирование - это искусство. Представьте, что рисуете картину.
    Но скажу сразу. Не огорчайтесь - у Вас все впереди. Главное - будьте самокритичны и всегда старайтесь найти решение получше
     
  11. Димон

    Димон Активный пользователь

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Спасибо, красивый обработчик. За английский обязательно возмусь - как с дипломом расхлебаюсь. На данном этапе мне важно пыль в глаза комиссии бросить, а потом займусь спокойным рисованием всего, чего душа пожелает. А сейчас у меня просто земля под ногами горит - через две недели предзащита, а у меня только наброски сайта... Я раньше не изучал ни РНР ни MySql, только Delphi, Access...
     
  12. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    Это тот же обработчик, выполняющий ровно те же действия, что и в первом сообщении. ;)
    Вопросы ещё есть? Пока я тут :)
     
  13. Димон

    Димон Активный пользователь

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Есть один по чекбоксам:
    Усть страница с выводом на ней таблицы сотрудников, перед каждой записью стоит чекбокс (записи и чекбоксы созданны массивом, кроме первого). Как удалять записи отмеченные чекбоксами (всмысле галочками), а также как их правильно обработать на редактирование?
     
  14. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    в таких случаях я у чекбокса ставлю id равный id записи в базе, а имя даю name="check_mark[]" (т.е. в результате в пхп будет массив, со значениями равными id). немного копипаста :)
    Код (Text):
    1.         $msg_ids="";
    2.         $check_count=0;
    3.         if(is_array($_POST['check_mark'])&&count($_POST['check_mark'])>1) {
    4.             foreach ($_POST['check_mark'] as $thisnum) {
    5.             if(isNum($thisnum)) $msg_ids.=($msg_ids ? "," : "").$thisnum;
    6.                 $check_count++;
    7.             }
    8.         }else{
    9.             if(isNum($_POST['check_mark'][0])){
    10.                 $msg_ids=$_POST['check_mark'][0];
    11.             }
    12.             $check_count=1;
    13.         }
    14.         if($msg_ids!==""){
    15.             dbquery("DELETE FROM `".$db_pref."mail_server` WHERE mail_id IN(".$msg_ids.")");
    16.         }
     
  15. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    у чекбокса ставишь имя, скажем, "id{id}", где {id} - соответствующий айдишник. Когда получаются данные
    PHP:
    1. <?
    2. $toDevNull = array();
    3. foreach($_REQUEST as $key => $value) {
    4.     // Может, надо еще добавить проверку на $value === 'on'. Не помню, что там чекбоксы шлют
    5.     if(preg_match("/^id([\d]+)$/", $key, $m)) {
    6.         $toDevNull[] = $m[1];
    7.     }
    8. }
    9. print_r($toDevNull);
    10. // В массиве "$toDevNull" будут все значения, подлежащие удалению. Дальше сам думай :)
    11.  
     
  16. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    $check_count не вычистил, тут он не нужен :)

    TheShock
    а у меня прикольнее :Р
     
  17. Димон

    Димон Активный пользователь

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    А если id-ы в базе не порядковые (т.е. не - 1,2,3,4,5; а - 1,10,23,24,26...)?
     
  18. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    Димон
    указываю то поле, что потом нужно удалить (в примере mail_id).
    чекбоксы разумеется и "рисую" с использованием данных выборки из базы (я же все равно выбираю данные для составления страницы)
     
  19. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    antonn, согласен, лучше писать в массив. Но код у меня получился красивее, конечно
    Димон, а какая тебе разница? Оно тебе указывает тот АйДи, который надо удалить
     
  20. Димон

    Димон Активный пользователь

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Т.е например так?:
    PHP:
    1.  
    2. .......
    3. {
    4.     echo "<tr>";
    5.     echo "<td align='center' bgcolor='#D5D5D5'><input type='checkbox' name='id{Sotrudnik_id}' value='Contakt' id='checkbox1' method='POST' action='sotr_upd.php'/></td>";
    6.     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>";
    7.     echo "</tr>";
    8.     }
    9.     echo "</table>";
    10. .......
     
  21. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    только не {Sotrudnik_id}, а {$Sotrudnik_id}
    method и action указываются в теге "form", а не "input"
    Ну и код все-еще ужасно непонятный.
    Кстати, почему ни один тег <h4 - не закрыт </h4> ?
     
  22. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    даже не {$Sotrudnik_id} , а {$row['Sotrudnik_id']} или что у тебя там.
     
  23. Димон

    Димон Активный пользователь

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Ноя не вывожу в запросе поле id.
    И если метод и все остальное писать в теге формы, мне туда и всю результирующую таблицу загонять надо?
     
  24. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    > Ноя не вывожу в запросе поле id.
    Почему?

    > И если метод и все осталь...
    Ээээ.. наверное, да
     
  25. Димон

    Димон Активный пользователь

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    А зачем пользователю видеть Иды?