За последние 24 часа нас посетил 18401 программист и 1605 роботов. Сейчас ищут 953 программиста ...

Помогите с $_POST

Тема в разделе "PHP и базы данных", создана пользователем Димон, 25 фев 2011.

  1. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Помогите с удалением нескольких последних знаков в слове, передаваемому из формы по методу ПОСТ.
    Суть такова: на форме, в выпадающий список подгружаю такой запрос:
    Код (Text):
    1.  
    2. $sql = "SELECT
    3.   *
    4.   FROM `sotrudniki`
    5.   WHERE `sotrudniki`.`dostup`= 1";
    6.   $result = mysql_query($sql)or die ("Query failed: " .mysql_error());
    7.   if ($sql)
    8.   echo "<select name = 'sotrudnik' style='height:inherit' COLS='23'> <option value='0' selected>-----Выберете сотрудника----</option>";
    9.  {
    10.   while ($row = mysql_fetch_array ($result))
    11.   {
    12.     echo "<option value ='",$row['Femyli'],"_",$row['Name']{0},".",$row['Otchestvo']{0},".","'size='30'/>",$row['Femyli'],"_",$row['Name']{0},".",$row['Otchestvo']{0},".","</option>";
    13.     }
    14.     echo "</select>";
    15.  }
    Получается типа: Иванов_И.И.

    Проблема в том, что не могу в обратном порядке выделить ID выбранной записи.
    Помогите разобраться - голову уже сломал, весь нэт перерыл, ничего не нашел...
     
  2. siiXth

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

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    это как ? обратный порядок выборки нужен ?
     
  3. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    У меня получается в передаче некая сумма полей, т.е: Иванов_И.И. а в БД Иванов / Иван / Иванович
    Как мне найти ID этого Иванова?
    Вот что я пытаюсь нарисовать:
    Код (Text):
    1.  
    2. $sql4 = "SELECT
    3.     *
    4.     FROM
    5.    `sotrudniki`
    6.     WHERE
    7.     `Femyli`='".trim($_POST ['sotrudnik'])."'";
    8.     $query4 = mysql_query($sql4);
    9.   if($query4) {
    10.       while($row4 = mysql_fetch_assoc($query4)) {
    11.              $Sotrudnik_id = $row4['Sotrudnik_id']; // Ключ массива совпадает с именем столбца в БД
    12.           }
    Как мне решить эту задачку? Ведь $_POST содержит не просто фамилию
     
  4. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Т.Е. нужно удалить из ($_POST ['sotrudnik']) последние 5 символов, но как?
     
  5. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    И еще вопрос по этой-же форме:
    В форме есть текстовое поле (только для чтения) в котором загружается текущая дата в формате ДД.ММ.ГГГГ
    А в БД (MySQL) дата хранится в формате ГГГГ-ММ-ДД
    Как преобразовать дату, для внесения данных в БД?

    Вот часть формы с текстовым полем:
    Код (Text):
    1. <input type="text" name="date_zakaz" value="<?PHP echo date("d.m.Y"); ?>" disabled="disabled" size="30">
    Вот часть исполняемого файла:
    Код (Text):
    1. if (isset ($_POST['date_zakaz']))
    2. {
    3.     $date_zakaz = $_POST['date_zakaz'];
    4.     }
     
  6. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Димон
    value ='",$row['Femyli']
    сюда нужно ставить id и уже с ним потом работать
    date("d.m.Y"); поменять местами?
     
  7. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Padaboo
    Я немного еще над этим поработаю, а пока просто добавил в таблицу БД поле, где Фамилия и просто инициалы сразу выводятся, и перенаправил запрос в форме, а из формы уже нахожу ид.
    С датой решил просто сменив формат ее отображения. В форме она нужна постольку поскольку, это поле вообще можно и скрытым сделать, все равно оператор (пользователь) не может туда внести изменения.
    Но вопрос остается открытым: Есть ли возможность из данных полученных по методу $_POST удалить несколько символов с конца слова (или строки), так как это можно сделать на PHP с данными в запросе:
    Код (Text):
    1. <td><h4>",$row['Femyli'],$row['Name']{0},$row['Otchestvo']{0},"</td>
     
  8. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Димон
    тогда и в скрытом поле нет смысла, сразу дату в бд писать
    из формы находить id, это как? а если люди с одинаковыми фамилиями и инициалами? легче же в value сразу писать
     
  9. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Padaboo
    Можно и сразу в БД дату писать по получению запроса на добавление записи вписывать текущую дату. Просто изначально я хотел юзера заставить набирать текущую дату самостоятельно, но заморочился с проверкой и т.д., потому и пришел к автозаполнению поля, мне не сложно это а юзеру лишняя деталь формы не помешает, тем более она показывает текущую дату.
    А вот с сотрудниками получается сложнее. Список пока небольшой, а ну если оооочень вырастет? Тут уж мне без помощи не обойтись. Как Вам кажется, как лучше сделать? Я пока слабоват и в PHP и MySQL не говоря уже о JS и AJAX.
     
  10. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Димон
    когда много будет сотрудников лучше сделать поиск по базе с постраничной навигацией
     
  11. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Padaboo
    Посоветуете похожее чего? Мне надо часть формы с селектом сотрудника и исполняемый файл (insert) для наглядности.
    Я смогу на форуме теперь только завтра вечером появиться - жена уже за шевелюру от компа оттягивает)))))
     
  12. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Блин, не передается вот эта строчка:
    Код (Text):
    1. <input type="text" name="date_zakaz" value="<?PHP echo date("d.m.Y"); ?>" disabled="disabled" size="30">
    Что делать?
     
  13. runner

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

    С нами с:
    16 апр 2010
    Сообщения:
    343
    Симпатии:
    1
    Адрес:
    Ташкент
    1) Вся твоя проблема надумана. Просто сформируй элемент ввода сотрудника из меню так:
    PHP:
    1.  
    2. $sql = "SELECT  *  FROM `sotrudniki`  WHERE `sotrudniki`.`dostup`= 1";
    3. $result = mysql_query($sql)or die ("Query failed: " .mysql_error());
    4. if ($result)
    5. {
    6.     $o=array();
    7.     $o[]="<select name = 'sotrudnik' style='height:inherit' COLS='23'>";
    8.     $o[]="<option value='0' selected>-----Выберете сотрудника----</option>";  
    9.     while ($row = mysql_fetch_array ($result))
    10.     {
    11.         $id=$row['Sotrudnik_id'];
    12.         $descriprion=$row['Femyli'],"_",$row['Name']{0},".",$row['Otchestvo']{0};
    13.         $o[]="<option value='$id'>$descriprion</option>";
    14.     }
    15.     $o[]="</select>";
    16.     echo implode('',$o);
    17. }
    18.  
    Тогда в переменной $_POST['sotrudnik'] будет передан код выбранного сотрудника
    2) Если элемент disabled, то он передаваться не будет. Поэтому при вставке данных
    просто вычисли сегодняшную дату в нужном формате для записи в базу данных:
    $date_zakaz=date("Y-m-d");
     
  14. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Куда и как мне встроить эту переменную? Ка ни пробую - ничего не получается
    Вот сам инсерт:
    Код (Text):
    1. "INSERT INTO zakaz (date_zakaz, FIO, avto_name, avto_model, adress, gos_numer, telephone, zayavleno, Sotrudnik_id, time_id) VALUES ('$date_zakaz', '$fio', '$avto_name_id', '$avto_model_id', '$adress', '$gos_numer', '$telephone', '$zayavleno', '$Sotrudnik_id', '0')"
     
  15. runner

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

    С нами с:
    16 апр 2010
    Сообщения:
    343
    Симпатии:
    1
    Адрес:
    Ташкент
    поставь эту строчку перед самим запросом:
    PHP:
    1.  
    2. $date_zakaz=date("Y-m-d");
    3. $q="INSERT INTO zakaz (date_zakaz, FIO, avto_name, avto_model, adress, gos_numer, telephone, zayavleno, Sotrudnik_id, time_id) VALUES ('$date_zakaz', '$fio', '$avto_name_id', '$avto_model_id', '$adress', '$gos_numer', '$telephone', '$zayavleno', '$Sotrudnik_id', '0')";
    4. $result = mysql_query($q);
    5.  
     
  16. Димон

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

    С нами с:
    12 май 2009
    Сообщения:
    152
    Симпатии:
    0
    Куда я эту строчку только не ставил, либо ругается о неизвестной переменной, либо скрипт исполняется не полностью (страница остается пустой) и не добавляется запись в БД
     
  17. Димон

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

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