За последние 24 часа нас посетили 17422 программиста и 1711 роботов. Сейчас ищут 1608 программистов ...

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

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

  1. TheShock

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

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

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Это, конечно Ид.
     
  3. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Я совсем запутался, как вывести данные ( в виде таблицы с чекбоксом), что-бы их можно было удалять или редактировать?
     
  4. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Вот мой вывод:
    PHP:
    1.  
    2. <?php
    3. include ("putdb.php");
    4.   putdb_connect () or exit ();
    5. include ("sotrqweri.php");
    6.  echo "<form name='upd' action='blocks/delete_sotrud.php' method='POST'>"
    7.  echo "<table border='1' bgcolor='#EEEEEE' width='100%'>";
    8.  echo "<tr bgcolor='#A4D1FF'>";
    9.  echo "<th> </th><th WIDTH='20%'><h2 style='color: #00008F;'>Фамилия</th><th WIDTH='16%'><h2 style='color: #00008F;'>Имя</th><th WIDTH='16%'><h2 style='color: #00008F;'>Отчество</th><th WIDTH='25%'><h2 style='color: #00008F;'>Должность</th><th WIDTH='*'><h2 style='color: #00008F;'>Отдел</th>";
    10.  echo "</tr>";
    11.  while ($row = mysql_fetch_array ($result))
    12.  {
    13.     echo "<tr>";
    14.     echo "<td align='center' bgcolor='#D5D5D5'><input type='checkbox' name='id{Sotrudnik_id}' value='Contakt' id='checkbox1' method='POST' action='blocks/sotr_delete.php'/></td>";
    15.     echo "<td>",$row ['Femyli'],"</td><td>",$row ['Name'],"</td><td>",$row ['Otchestvo'],"</td><td>",$row ['DolgnostName'],"</td><td>",$row ['OtdelName'],"</td>";
    16.     echo "</tr>";
    17.     }
    18.     echo "</table>";
    19.     echo "</form>"
    20.  
    21. ?>
    Я уже и форму туда приплел, но судя по всему - все равно не правильно(((((
     
  5. TheShock

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

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    форму, вроде, правильно, Только name у формы не нужен
    У инпута не нужен метод и экшн. name='id{Sotrudnik_id}' поменяй на {$row['Sotrudnik_id']}, как я уже говорил. И должно работать.
     
  6. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    HTML:
    1. <input type='checkbox' name='check_mark[]' value='@val@'>
    где @val@ подставляешь id записи ($row['id'] или что там), взять мой копипась и сунуть в целевой скрипт, для проверки, в $msg_ids через запятую придут id, как его заюзать - в том же копипасте :)
     
  7. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    А можно попросить к этому коду пояснение немного поподробнее на русском? пожалуйста
     
  8. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    приходит Постом массив, элементы которого - id чекбоксов, собираем их в строку и записываем через запятую в переменную $msg_ids. $check_count не нужен (не дочистил :) ). Фукнция isNum() просто проверяет, является ли переменная десятичным числом (возможно велосипед, просто привык :) ):
    Код (Text):
    1. function isNum($value) {
    2.     return (preg_match("/^[0-9]+$/", $value));
    3. }
     
  9. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Я не понял вот этой строчки:
    PHP:
    1.  
    2. dbquery("DELETE FROM `".$db_pref."mail_server` WHERE mail_id IN(".$msg_ids.")");
    Что за переменная $db_pref ?
     
  10. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    префикс таблички :)
    суть не в том, условие запроса вот такое WHERE mail_id IN(1,2,5,12,15,22,23), в $msg_ids так будут перечислены нужные значения для поля mail_id
     
  11. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Префикс имени таблицы.
    my_table
    ^префикс

    Его может и не быть.
     
  12. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    А как правильно записать префикс?
     
  13. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    за это просто текст.
    для удобства, например у тебя только одна база, а захочется иметь две копии сайта, вводят разный префикс для табличек - и они не пересекаются (одни называются например db1_users, а вторые db2_users).
     
  14. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    К реальному названию значит ни коим образом не относится?
     
  15. TheShock

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

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    > Фукнция isNum() просто проверяет, является ли переменная десятичным числом (возможно велосипед, просто привык Smile )
    аха. у меня тоже до сегодняшнего дня был такой вот:
    PHP:
    1. <? function isStrInt ($str) {
    2.     return (strval(intval($str)) === $str);
    3. }
    Но сегодня узнал, что есть ctype_digit - нативная функция пхп.
    > dbquery("DELETE FROM `".$db_pref."mail_server` WHERE mail_id IN(".$msg_ids.")");
    Зачем так усложнять строку конкатенацией? "DELETE FROM `{$db_pref}mail_server` WHERE mail_id IN($msg_ids)" - так ведь намного более понятно
     
  16. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    да вообще привыкай, это не дельфи, нет тут строгой типизации, все можно перефигачить вдоль и поперек с помощью одной переменной :)
     
  17. TheShock

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

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    Димон, забей на префикс. Реально они нужны очень редко, имхо.
     
  18. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Даааааа, ребят, видно я сегодня уже не в форме - в голове каша, на часах 2.30, а ума этому чекбоксу так и не дал...:-(
     
  19. TheShock

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

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    Отложи на утро. Мучать себя - смысла нет.
     
  20. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    TheShock
    Я всегда пишу двойные кавычки.
    И работаю я в notepad.exe :)
    А более понтовые редакторы правильно строки подсветят. И еще у меня правило - строка является просто текстом, в ней я никогда не располагаю переменные для вывода (двойные кавычки), если мне надо в строку поместить значение переменной, я ее разорву на две части, как в копипасте выше :) Визуально я привык (даже без подсветок). Ненавижу когда мешают в коде хтмл и код. Строку текста я так же воспринимаю как хтмл, посему я не помещаю в нее код :)

    PS финт, как беспроблемно делать вставку :) печатаем строку, обрамленную в кавычки. Ставим курсор на нужную позицию, далее комбо "кавычки-кавычки-влево-шифт+(точка-точка)-влево" - готовая позиция для вставки имени переменной или ее набора %)) натренировано (выдрачено), занимает меньше секунды :) скобки я тоже ставлю сразу обе, и жму влево.
     
  21. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Ребят, еще один вопрс по этому-же чекбоксу (будь он не ладен). Можно ли отправить данные этого чекбокса не кнопкой, находящейса в теге форм, а ссылкой с другого края страницы?
     
  22. antonn

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

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    если тока яваскрипт написать, который форму отправит. Пусть меня поправят, если не прав :)
     
  23. TheShock

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

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    Вы, вероятно, никогда не делали достаточно крупных проектов с запутанной логикой. Я не представляю, как можно кодить монстров по несколько тысяч строк в нотепаде. (пс. У меня на компе нет notepad.exe ). ХТМЛ и ПХП вообще в одном месте собиратся не должны. А в редакторах с подсветкой синтаксиса переменные ставленные в строку намного приятнее, чем переменные вставленные через конкатенацию, потому что не надо в уме удалять "лишние" символы, которые не попадут в строку. Ну и ошибки, алля
    Код (Text):
    1. "SELECT * FROM `".$table."` WHERE `".$field1."` = "'.$value1."' and `".$field2."` = '".$value2."'";
    в редакторе без подсветки тяжело отследить. Ну и, допустим, без ошибок:

    PHP:
    1. <?
    2. "SELECT * FROM `".$table."` WHERE `".$field1."` = '".$value1."' and `".$field2."` = '".$value2."'";
    3.  
    4. "SELECT * FROM `$table` WHERE `$field1` = '$value1' and `$field2` = '$value2.'";
    5.  
    Я не могу понять, как первую запись можно считать более удобочитаемой, чем вторую
     
  24. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Я тоже об этом задумываюсь, а что если с повощью яваскрипт написать формы и на удаление и на редактирование, только иды получить...
     
  25. TheShock

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

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    Димон, да, антонн прав - ДжаваСкрипт. Ну или форму на всю страницу и кнопку-сабмит засунуть куда надо :)