Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Добавление данных в БД

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Nameless95
Отправлено: 09 Декабря, 2015 - 13:16:15
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




Здравствуйте! Помогите решить проблему. Есть такая задача: нужно сделать добавление данных из формы в базу mysql. Но возникает следующая трудность: при обновлении страницы дублируется последнее введенное значение. Если добавлять редирект или условия для проверки заполнения, то добавление перестает работать вообще. Помогите, пожалуйста, решить проблему.

Код страницы с формой:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. header('Content-Type: text/html; charset=utf-8');
  3. require_once "modules.php";
  4. ?>
  5.  
  6. <!DOCTYPE html>
  7. <html lang="en">
  8. <meta charset="UTF-8">
  9. <link href='https://fonts.googleapis.com/css?family=Roboto&subset=cyrillic,latin' rel='stylesheet' type='text/css'>
  10.  
  11. <title></title>
  12. <body>
  13.  
  14. <div class="head-title">
  15.     <div class="top">Профессорско-преподавательский состав</div>
  16.     <div class="bottom"></div>
  17. </div>
  18.  
  19. <div class="tabl">
  20.  
  21.     <div class="tab-header">
  22.         <div class="number"></div>
  23.         <div class="fio">Ф.И.О</div>
  24.         <div class="dolj">Должность</div>
  25.         <div class="monday">Понедельник</div>
  26.         <div class="tues">Вторник</div>
  27.         <div class="wedn">Среда</div>
  28.         <div class="thur">Четверг</div>
  29.         <div class="friday">Пятница</div>
  30.     </div>
  31.     <?php
  32.    echo get_data();
  33.    ?>
  34. </div>
  35.  
  36. <form name="insert" action="index.php" method="post" >
  37.  
  38.     <br /><font color="white" >Введите фамилию </font>    <input name="fam" type="text" value="">
  39.     <br /><font color="white" >Введите имя</font>     <input name="nam" type="text" value="">
  40.     <br /><font color="white" >Введите отчество</font>     <input name="ot" type="text" value="">
  41.     <br /><font color="white" >Введите должность</font>     <input name="job" type="text" value="">
  42.     <br /><font color="white" >Понедельник</font>     <input name="mon" type="text" value="">
  43.     <br /><font color="white" >Вторник</font>     <input name="tue" type="text" value="">
  44.     <br /><font color="white" >Среда</font>     <input name="wed" type="text" value="">
  45.     <br /><font color="white" >Четверг</font>     <input name="thu" type="text" value="">
  46.     <br /><font color="white" >Пятница</font>     <input name="fri" type="text" value="">
  47.     <button type="submit">Сохранить</button>    
  48. </form>
  49.  
  50.  
  51.  
  52. <?php
  53. // connect to the "tests" database
  54. $conn = new mysqli(', '', '', '');
  55. mysqli_set_charset($conn, "utf8");
  56. $sql = "insert INTO `preps`(`fam`, `nam`, `ot`)
  57. VALUES ('".$_POST["fam"]."','".$_POST["nam"]."','".$_POST["ot"]."')";
  58. // Performs the $sql query on the server to insert the values
  59. if ($conn->query($sql) === TRUE) {
  60.    echo '';
  61. }
  62. else {
  63.    echo 'Error: '. $conn->error;
  64. }
  65. exit();
  66. ?>
  67.  
  68. </body>


Код modules.php:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. header('Content-Type: text/html; charset=utf-8');
  3.  
  4. function get_data(){
  5.    $db = mysqli_connect('', '', '','');
  6.    mysqli_set_charset($db, "utf8");
  7.    $q = mysqli_query($db,"SELECT * FROM preps ORDER BY fam");
  8.  
  9.        echo '<b>'.$i++.'</b>'.$row['title'].'<br>';
  10.    $s='<table>';
  11.    for($i=0;$i<mysqli_num_rows($q);$i++){
  12.        $res = mysqli_fetch_assoc($q);
  13.        if($res['data_begin'] == 0){}
  14.        $s.='<tr>';
  15.        $s.='<div class="tab-h">'.
  16.            '<div class="number">'.$res['number'].'</div>'.
  17.            '<div class="fio">'.$res['fam'].'&nbsp'.$res['nam'].'&nbsp'.$res['ot'].'</div>'.
  18.            '<div class="dolj">'.$res['job'].'</div>'.
  19.            '<div class="monday">'.$res['mon'].'</div>'.
  20.        '<div class="tues">'.$res['tue'] .'</div>'.
  21.        '<div class="wedn">'.$res['wed'].'</div>'.
  22.        '<div class="thur">'.$res['thu'] .'</div>'.
  23.       '<div class="friday">'.$res['fri'].'</div>'.
  24.            '</div>';
  25.        $row_index = 1;
  26.    }
  27.    return $s.'</table>';
  28. }
  29. ?>

(Отредактировано автором: 10 Декабря, 2015 - 18:26:29)

 
 Top
lastdays
Отправлено: 09 Декабря, 2015 - 14:09:34
Post Id



Частый гость


Покинул форум
Сообщений всего: 220
Дата рег-ции: Март 2013  


Помог: 7 раз(а)




Доступ к базе уберите из скрипта
 
 Top
popover
Отправлено: 09 Декабря, 2015 - 14:10:22
Post Id



Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Дек. 2015  


Помог: 2 раз(а)




PHP:
скопировать код в буфер обмена
  1. if ($conn->query($sql) === TRUE) {
  2.    //redirect...
  3. }
 
 Top
Nameless95
Отправлено: 09 Декабря, 2015 - 14:25:31
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




lastdays пишет:
Доступ к базе уберите из скрипта


Перестает вообще что-либо добавлять

popover пишет:
CODE (htmlphp):
скопировать код в буфер обмена
  1. if ($conn->query($sql) === TRUE) {
  2.    //redirect...
  3. }


Редирект не срабатывает
 
 Top
popover
Отправлено: 09 Декабря, 2015 - 14:32:02
Post Id



Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Дек. 2015  


Помог: 2 раз(а)




http://php.net/manual/ru/function.header.php пишет:
Помните, что функцию header() можно вызывать только если клиенту еще не передавались данные. То есть она должна идти первой в выводе, перед ее вызовом не должно быть никаких HTML тэгов, пустых строк и т.п. Довольно часто возникает ошибка, когда при чтении кода файловыми функциями, вроде include или require, в этом коде попадаются пробелы или пустые строки, которые выводятся до вызова header(). Те же проблемы могут возникать и при использовании одиночного PHP/HTML файла.

(Отредактировано автором: 09 Декабря, 2015 - 14:33:40)

 
 Top
Faraon-san
Отправлено: 09 Декабря, 2015 - 16:08:14
Post Id



Посетитель


Покинул форум
Сообщений всего: 318
Дата рег-ции: Сент. 2013  


Помог: 8 раз(а)




Делал на коленке, попробуй:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. header('Content-Type: text/html; charset=utf-8');
  4.  
  5. $mysqli = new mysqli('91.226.116.42', 'laba1', 'GmCFd9tURnpLs9PK', 'laba1');
  6. $mysqli->set_charset("utf8");
  7.  
  8. function get_data($db){
  9.    $query = $mysqli->query("SELECT * FROM preps ORDER BY fam");
  10.  
  11.    $data = '';
  12.    while($row = $result->fetch_assoc()){
  13.        if($row['data_begin'] == 0){}
  14.         $data .= '<tr>';
  15.             $data .= '<td class="number">'.$row['number'].'</td>';
  16.             $data .= '<td class="fio">'.$row['fam'].'&nbsp'.$row['nam'].'&nbsp'.$row['ot'].'</td>';
  17.             $data .= '<td class="dolj">'.$row['job'].'</td>';
  18.             $data .= '<td class="monday">'.$row['mon'].'</td>';
  19.             $data .= '<td class="tues">'.$row['tue'] .'</td>';
  20.             $data .= '<td class="wedn">'.$row['wed'].'</td>';
  21.             $data .= '<td class="thur">'.$row['thu'] .'</td>';
  22.             $data .= '<td class="friday">'.$row['fri'].'</td>';
  23.         $data .= '</tr>';
  24.    }
  25.    return $data;
  26. }
  27.  
  28. if($_SERVER['REQUEST_METHOD'] == 'POST'){
  29.     $fam = $mysqli->real_escape_string(trim(strip_tags($_POST['fam'])));
  30.     $nam = $mysqli->real_escape_string(trim(strip_tags($_POST['nam'])));
  31.     $ot = $mysqli->real_escape_string(trim(strip_tags($_POST['ot'])));
  32.     $job = $mysqli->real_escape_string(trim(strip_tags($_POST['job'])));
  33.     $mon = $mysqli->real_escape_string(trim(strip_tags($_POST['mon'])));
  34.     $tue = $mysqli->real_escape_string(trim(strip_tags($_POST['tue'])));
  35.     $wed = $mysqli->real_escape_string(trim(strip_tags($_POST['wed'])));
  36.     $thu = $mysqli->real_escape_string(trim(strip_tags($_POST['thu'])));
  37.     $fri = $mysqli->real_escape_string(trim(strip_tags($_POST['fri'])));
  38.  
  39.     $res = $mysqli->query("INSERT INTO `preps` (`fam`, `nam`, `ot`, `job`, `mon`, `tue`, `wed`, `thu`, `fri`) VALUES ('$fam', '$nam', '$ot', '$job', '$mon', '$tue', '$wed', '$thu', '$fri')");
  40.     if(!$res){
  41.        header('Location: '.$_SERVER['HTTP_REFERER']);
  42.        exit();
  43.     }else{
  44.         echo 'Error: '. $conn->error;
  45.     }
  46. }
  47. ?>
  48.  
  49. <!DOCTYPE html>
  50. <html lang="ru">
  51. <head>
  52.    <meta charset="utf-8">
  53.     <link href='https://fonts.googleapis.com/css?family=Roboto&subset=cyrillic,latin' rel='stylesheet' type='text/css'>
  54.     <title>Профессорско-преподавательский состав</title>
  55. </head>
  56. <body>
  57. <div class="head-title">
  58.     <div class="top">Профессорско-преподавательский состав</div>
  59.     <div class="bottom"></div>
  60. </div>
  61.  
  62. <table class="tabl">
  63.     <thead>
  64.         <tr>
  65.             <th class="number">№</th>
  66.             <th class="fio">Ф.И.О</th>
  67.             <th class="dolj">Должность</th>
  68.             <th class="monday">Понедельник</th>
  69.             <th class="tues">Вторник</th>
  70.             <th class="wedn">Среда</th>
  71.             <th class="thur">Четверг</th>
  72.             <th class="friday">Пятница</th>
  73.         </tr>
  74.     </thead>
  75.     <tbody>
  76.     <?PHP echo get_data($mysqli); ?>
  77.     </tbody>
  78. </table>
  79.  
  80.     <form name="insert" action="index.php" method="post">
  81.         <div>
  82.             <label style="color:white;">Введите фамилию</label>
  83.             <input name="fam" type="text">
  84.         </div>
  85.         <div>
  86.             <label style="color:white;">Введите имя</label>
  87.             <input name="nam" type="text">
  88.         </div>
  89.         <div>
  90.             <label style="color:white;">Введите отчество</label>
  91.             <input name="ot" type="text">
  92.         </div>
  93.         <div>
  94.             <label style="color:white;">Введите должность</label>
  95.             <input name="job" type="text">
  96.         </div>
  97.         <div>
  98.             <label style="color:white;">Понедельник</label>
  99.             <input name="mon" type="text">
  100.         </div>
  101.         <div>
  102.             <label style="color:white;">Вторник</label>
  103.             <input name="tue" type="text">
  104.         </div>
  105.         <div>
  106.             <label style="color:white;">Среда</label>
  107.             <input name="wed" type="text">
  108.         </div>
  109.         <div>
  110.             <label style="color:white;">Четверг</label>
  111.             <input name="thu" type="text">
  112.         </div>
  113.         <div>
  114.             <label style="color:white;">Пятница</label>
  115.             <input name="fri" type="text">
  116.         </div>
  117.         <button type="submit">Сохранить</button>
  118.     </form>
  119. </body>
  120. </html>

(Отредактировано автором: 09 Декабря, 2015 - 16:43:37)

 
 Top
popover
Отправлено: 09 Декабря, 2015 - 16:22:50
Post Id



Новичок


Покинул форум
Сообщений всего: 23
Дата рег-ции: Дек. 2015  


Помог: 2 раз(а)




Faraon-san, как это избавит от дублирования записей?
 
 Top
Faraon-san
Отправлено: 09 Декабря, 2015 - 16:44:01
Post Id



Посетитель


Покинул форум
Сообщений всего: 318
Дата рег-ции: Сент. 2013  


Помог: 8 раз(а)




popover точно подмечено =) поправил пост выше
 
 Top
Nameless95
Отправлено: 09 Декабря, 2015 - 18:15:50
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Дек. 2015  


Помог: 0 раз(а)




Всем спасибо за подсказки) Удалось избавиться от дублирования, все работает
 
 Top
lastdays
Отправлено: 09 Декабря, 2015 - 23:12:08
Post Id



Частый гость


Покинул форум
Сообщений всего: 220
Дата рег-ции: Март 2013  


Помог: 7 раз(а)




Nameless95 пишет:
lastdays пишет:
Доступ к базе уберите из скрипта


Перестает вообще что-либо добавлять



[/quote]

ВЫ это серьёзно?
В теме письма оставлен айпи/пароль (доступ открытый) к бд. Его я имел ввиду убрать.
Ппц. )))

(Отредактировано автором: 09 Декабря, 2015 - 23:12:32)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB