За последние 24 часа нас посетили 8150 программистов и 444 робота. Сейчас ищут 227 программистов ...

Запись значений из таблицы html в php массив и запись в эту же таблицу

Тема в разделе "PHP для новичков", создана пользователем alex.evg.ostr, 8 апр 2019.

  1. alex.evg.ostr

    alex.evg.ostr Новичок

    С нами с:
    8 апр 2019
    Сообщения:
    8
    Симпатии:
    0
    Есть таблица , где после заполнения полей и нажатии на кнопку "Добавить", должен срабатывать php - скрипт из table.php и записывать в массив значения $_GET. А оттуда, из массива, новыми значениями заполняется таблица. Т.е. нужно хранить значения этой таблице в массиве. Как лучше это реализовать? Наверное, можно с помощью увеличения на 1 последний ключ массива и запись на этот ключ значений из $_GET. Помогите правильно расписать. Только на чистом php, ,без явы и ajax.

    http://skrinshoter.ru/s/080419/xRHE0sPt
    [​IMG]

    Код (Text):
    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4.     <meta charset="UTF-8">
    5.     <title>Контроль замены ФН</title>
    6. </head>
    7. <body>
    8. <table border="3">
    9.     <tr>
    10.         <td><h2>№п/п</h2></td>
    11.         <td><h2>Торговая точка</h2></td>
    12.         <td><h2>Заводской номер ККТ</h2></td>
    13.         <td><h2>Дата замены по ОФД</h2></td>
    14.         <td><h2>Дата истечения срока ФН</h2></td>
    15.     </tr>
    16.     <form action="table.php" method="get">
    17.         <tr>
    18.             <td><input id="number" type="text" name="1"></td>
    19.             <td><input id="tradeShop" type="text" name="2"></td>
    20.             <td><input id="factoryNumber" type="text" name="3"></td>
    21.             <td><input id="dateOFD" type="date" name="4"></td>
    22.             <td><input id="dateFN" type="date" name="5"></td>
    23.             <td><input type="submit" value="Добавить"></td>
    24.         </tr>
    25.     </form>
    26. </table>
    27. </body>
    28. </html>
     
  2. Babka_Gadalka

    Babka_Gadalka Новичок

    С нами с:
    16 фев 2019
    Сообщения:
    152
    Симпатии:
    18
    Адрес:
    Москва, Пушкина, Избушкина, 2й этаж душечка.
    пустой файл с именем "db" создай рядом.
     

    Вложения:

    • index.zip
      Размер файла:
      948 байт
      Просмотров:
      11
    #2 Babka_Gadalka, 8 апр 2019
    Последнее редактирование: 8 апр 2019
    alex.evg.ostr нравится это.
  3. alex.evg.ostr

    alex.evg.ostr Новичок

    С нами с:
    8 апр 2019
    Сообщения:
    8
    Симпатии:
    0
    Огромное спасибо, осталось только разобраться, что он делает.
    Что делает
    <form action="/76105/"
    После нажатия на кнопку говорит что не найдено.
    И второе, файл db просто без расширения/формата?
     
  4. Babka_Gadalka

    Babka_Gadalka Новичок

    С нами с:
    16 фев 2019
    Сообщения:
    152
    Симпатии:
    18
    Адрес:
    Москва, Пушкина, Избушкина, 2й этаж душечка.
    удачи
     
  5. alex.evg.ostr

    alex.evg.ostr Новичок

    С нами с:
    8 апр 2019
    Сообщения:
    8
    Симпатии:
    0
    Боже, какой я недалекий)) все ок, большое спасибо (не лень было написать полностью скрипт)
     
  6. Babka_Gadalka

    Babka_Gadalka Новичок

    С нами с:
    16 фев 2019
    Сообщения:
    152
    Симпатии:
    18
    Адрес:
    Москва, Пушкина, Избушкина, 2й этаж душечка.
    с вас лайк :)
     
  7. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    513
    Симпатии:
    42
    @Babka_Gadalka думаешь в массиве может быть null?
    Там может быть пустая строка, пробелы или так <script>alert('JS!')</script>
    И file() желательно с константами раз нет проверки строк.
     
  8. alex.evg.ostr

    alex.evg.ostr Новичок

    С нами с:
    8 апр 2019
    Сообщения:
    8
    Симпатии:
    0
    Слушай, я сам ладу не дам) Что не так в этой строке?
    Появляется Warning: sprintf(): Too few arguments in C:\OSPanel\domains\fiscal\www\index.php on line 27
    upload_2019-4-9_15-7-26.png
     
  9. alex.evg.ostr

    alex.evg.ostr Новичок

    С нами с:
    8 апр 2019
    Сообщения:
    8
    Симпатии:
    0
    Код (Text):
    1. <?php
    2.  
    3. error_reporting ( E_ALL );
    4.  
    5. if ( filter_input ( INPUT_SERVER, 'REQUEST_METHOD' ) === 'POST' )
    6. {
    7.     $input = filter_input_array ( INPUT_POST, [
    8.         'number' => FILTER_DEFAULT,
    9.         'tradeShop' => FILTER_DEFAULT,
    10.         'factoryNumber' => FILTER_DEFAULT,
    11.         'dateOFD' => FILTER_DEFAULT,
    12.         'dateFN' => FILTER_DEFAULT,
    13.     ] );
    14.    
    15.     if ( !in_array ( null, $input, 1 ) )
    16.     {
    17.         file_put_contents ( __DIR__ . DIRECTORY_SEPARATOR . 'db', implode ( '☺', $input ) . PHP_EOL, FILE_APPEND );
    18.     }
    19. }
    20.  
    21. $str = '';
    22.  
    23. foreach ( file ( __DIR__ . DIRECTORY_SEPARATOR . 'db' ) AS $line )
    24. {
    25.     $a = explode ( '☺', $line );
    26.    
    27.     $str .= sprintf ( '<tr><td><h2>%s</h2></td><td><h2>%s</h2></td><td><h2>%s</h2></td><td><h2>%s</h2></td><td><h2>%s</h2></td></tr>', ...$a ) . PHP_EOL;
    28. }
    29.  
    30. ?>
    31. <!DOCTYPE html>
    32. <html lang="en">
    33. <head>
    34.     <meta charset="UTF-8">
    35.     <title>Контроль замены ФН</title>
    36. </head>
    37. <body>
    38. <table border="3">
    39.     <tr>
    40.         <td><h2>№п/п</h2></td>
    41.         <td><h2>Торговая точка</h2></td>
    42.         <td><h2>Заводской номер ККТ</h2></td>
    43.         <td><h2>Дата замены по ОФД</h2></td>
    44.         <td><h2>Дата истечения срока ФН</h2></td>
    45.     </tr>
    46.     <?= $str ?>
    47.     <form action="index.php" method="post">
    48.         <tr>
    49.             <td><input id="number" type="text" name="number"></td>
    50.             <td><input id="tradeShop" type="text" name="tradeShop"></td>
    51.             <td><input id="factoryNumber" type="text" name="factoryNumber"></td>
    52.             <td><input id="dateOFD" type="date" name="dateOFD"></td>
    53.             <td><input id="dateFN" type="date" name="dateFN"></td>
    54.             <td><input type="submit" value="Добавить"></td>
    55.         </tr>
    56.     </form>
    57. </table>
    58. </body>
    59. </html>
     
  10. Babka_Gadalka

    Babka_Gadalka Новичок

    С нами с:
    16 фев 2019
    Сообщения:
    152
    Симпатии:
    18
    Адрес:
    Москва, Пушкина, Избушкина, 2й этаж душечка.
    Да думаю, это дефолтно от меня лично идет проверка после filter_input_array
    --- Добавлено ---
    Нюансы были опущены, заполнитель вроде как один, так понимаю.
    --- Добавлено ---
    поддержка кода не осуществляется, после ее модифицирования.
    db в студию
     
  11. alex.evg.ostr

    alex.evg.ostr Новичок

    С нами с:
    8 апр 2019
    Сообщения:
    8
    Симпатии:
    0
    Я изменил лишь form action на index.php. Вот db файл
    upload_2019-4-9_17-54-18.png
     
  12. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    513
    Симпатии:
    42
    Удали эту хрень, поменяй на db.txt
    PHP:
    1. if ( is_array($input) and !in_array ( '', $input ) )
    2.     {
    3.         file_put_contents ( __DIR__ . DIRECTORY_SEPARATOR . 'db.txt', implode ( ',', $input ) . PHP_EOL, FILE_APPEND );
    4.     }
    5. }
    6. $str = '';
    7. foreach ( file ( __DIR__ . DIRECTORY_SEPARATOR . 'db.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES ) AS $line )
    8. {
    9.     $a = explode ( ',', $line );
    Хотя все равно говнокод )
     
  13. Babka_Gadalka

    Babka_Gadalka Новичок

    С нами с:
    16 фев 2019
    Сообщения:
    152
    Симпатии:
    18
    Адрес:
    Москва, Пушкина, Избушкина, 2й этаж душечка.
    @keren https://php.net/manual/ru/function.filter-input-array.php
    Возвращаемые значения какие ? и что ты в условие написал ?
    и explode с implode не стоит трогать 1 аргумент, ты же тронул...
    --- Добавлено ---
    от перемен мест... знаешь ?
    --- Добавлено ---
    @alex.evg.ostr
    удали все строки кроме 1,2
    --- Добавлено ---
    мой дб
    PHP:
    1. 111☺☺
    2. 111☺☺
    3. ☺☺☺☺
    4. ☺☺☺☺
    5. ☺☺☺☺
    6. ☺☺☺☺
    7. ☺☺☺☺
    8. 1231123121231232019-04-022019-04-24
    9. ☺☺☺☺
    10. ☺☺☺☺
    11. 11 - пустая строка
    --- Добавлено ---
    один плюс из всего кода.

    @alex.evg.ostr
    замени foreach на

    PHP:
    1. foreach ( file ( __DIR__ . DIRECTORY_SEPARATOR . 'db', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES ) AS $line )
     
  14. alex.evg.ostr

    alex.evg.ostr Новичок

    С нами с:
    8 апр 2019
    Сообщения:
    8
    Симпатии:
    0
    Все, это исправил. Спасибо!
    Буду делать кнопку удалить )
     
  15. Babka_Gadalka

    Babka_Gadalka Новичок

    С нами с:
    16 фев 2019
    Сообщения:
    152
    Симпатии:
    18
    Адрес:
    Москва, Пушкина, Избушкина, 2й этаж душечка.
    Лучше заведи базу данных , хотя бы SQLite
    --- Добавлено ---
    php PDO sqlite
     
  16. alex.evg.ostr

    alex.evg.ostr Новичок

    С нами с:
    8 апр 2019
    Сообщения:
    8
    Симпатии:
    0
    Да, и это тоже обязательно в планах. Просто хотелось узнать как можно реализовать импорт и экспорт в файл.