Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Zniką dane po przeładowaniu strony
ufo1990
post 16.07.2020, 14:49:11
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 26.07.2019

Ostrzeżenie: (0%)
-----


Mam problem z poniższym kodem ponieważ jest on częścią większego formularza i kiedy zrobię przeładowanie formularza i dostanę jakiś błąd walidacji to nie zapamiętywane są dane zaczytane z bazy danej. Proszę o jakieś sugestie co zrobić aby dane były zapamiętywane.

  1. <?php
  2. echo('<select name="name_check" >');
  3. $result = $connect->query("Select name from clients");
  4. if($result->num_rows > 0)
  5. {
  6. while($row = $result->fetch_assoc())
  7. {
  8. echo('<option value="'.$row['name'].'">'.$row['name'].' </option>');
  9. }}
  10. echo('</select>');
  11. ?>
Go to the top of the page
+Quote Post
trueblue
post 16.07.2020, 14:54:04
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


A po co używasz formularza? Chyba po to, aby przesłać jakieś dane do kodu. A skoro formularz przesyła dane do kodu, to jest tam również wybrana opcja.
https://www.w3schools.com/tags/att_option_selected.asp


--------------------
Go to the top of the page
+Quote Post
ufo1990
post 16.07.2020, 15:04:40
Post #3





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 26.07.2019

Ostrzeżenie: (0%)
-----


Z bazej danej pobieram listę osób, następnie wybieram osobę której chce pewne dane w formularzu dodać.
Go to the top of the page
+Quote Post
nospor
post 16.07.2020, 15:06:45
Post #4





Grupa: Moderatorzy
Postów: 36 441
Pomógł: 6290
Dołączył: 27.12.2004




trueblue o to nie pytal. To co teraz napisales bylo wiadome. trueblue podal ci wskazowke o ktora pytales: SELECTED - patrz link jaki ci podal trueblue


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ufo1990
post 16.07.2020, 15:09:46
Post #5





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 26.07.2019

Ostrzeżenie: (0%)
-----


Mi nawet nie chodzi o to zeby zapamiętywalo wcześniej wybraną opcje, chodzi o to że po przeładowaniu strony nie mogę wybrać żadnej osoby ponieważ lista jest pusta.
Go to the top of the page
+Quote Post
nospor
post 16.07.2020, 15:11:06
Post #6





Grupa: Moderatorzy
Postów: 36 441
Pomógł: 6290
Dołączył: 27.12.2004




No a formularz wysylasz do skryptu ktory generuje te dane ponownie do forma? Pokasz caly kod


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ufo1990
post 16.07.2020, 16:31:49
Post #7





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 26.07.2019

Ostrzeżenie: (0%)
-----


  1. <?php
  2.  
  3. if (!isset($_SESSION['logged']))
  4. {
  5. header('Location: index.php');
  6. exit();
  7. }
  8. else
  9. {
  10. if ($_SESSION['roles'] == "1")
  11. {
  12.  
  13. require_once "connect.php";
  14. $connect = @new mysqli($host, $db_user, $db_password, $db_name);
  15. mysqli_report(MYSQLI_REPORT_STRICT);
  16.  
  17. if (isset($_POST['name']))
  18. {
  19.  
  20. $all_ok=true;
  21. $id_clients=$_SESSION['id'];
  22. $name = $_POST['name'];
  23. if ((strlen($name)<5))
  24. {
  25. $all_ok=false;
  26. $_SESSION['e_name']="Nazwa miejscowości jest zbyt krótkie !";
  27. }
  28.  
  29. $check_all = empty($_POST['check_all']) ? array() : (array)$_POST['check_all'];
  30.  
  31. if(!isset($_POST['check_all']))
  32. {
  33. $all_ok=false;
  34. $_SESSION['e_checkbx_number']="Potwierdz poprawność wprowadzonych danych !";
  35. }
  36. $check_all = empty($_POST['check_all']) ? array() : (array)$_POST['check_all'];
  37.  
  38. $_SESSION['fr_name'] = $name;
  39.  
  40. try
  41. {
  42. if ($connect->connect_errno!=0)
  43. {
  44. throw new Exception(mysqli_connect_errno());
  45. }
  46. else
  47. {
  48.  
  49. if ($all_ok==true)
  50. {
  51. if ($connect->query("INSERT INTO `agreement` (`id`, `name_a`, `id_clients`) VALUES (NULL, '$name','$id_clients')"))
  52.  
  53. {
  54. $_SESSION['well_done']=true;
  55. header('Location: register_confirm.php');
  56. }
  57. else
  58. {
  59. throw new Exception($connect->error);
  60. }
  61. }
  62. $connect->close();
  63. }
  64. }
  65. catch(Exception $e)
  66. {
  67. echo '<span style="color:#FF0000;">Błąd serwera! Przepraszamy za niedogodności i prosimy o rejestrację w innym terminie!</span>';
  68. echo '<br />Informacja developerska: '.$e;
  69. }
  70. }
  71. }
  72. else
  73. {
  74. header('Location: index.php');
  75. }}
  76. ?>
  77. <!DOCTYPE HTML>
  78. <html lang="pl">
  79. <head>
  80. <meta charset="utf-8" />
  81. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
  82. <title>Rejestracja klienta</title>
  83. <link rel="stylesheet" href="../css/style.css" type="text/css" />
  84. <link href="https://fonts.googleapis.com/css?family=Open+Sans&display=swap" rel="stylesheet">
  85. <meta name="viewport" content="width=device-width, initial-scale=1">
  86. <script src="js/add_field.js"></script>
  87. </head>
  88. <body>
  89. <div id="container">
  90. <form method="post" enctype="multipart/form-data">
  91. <?php
  92. echo('<select name="name_check" >');
  93. $result = $connect->query("Select id, name from clients");
  94. if($result->num_rows > 0)
  95. {
  96. while($row = $result->fetch_assoc())
  97. {
  98. echo('<option value="'.$row['name'].'">'.$row['name'].' </option>');
  99. }}
  100. echo('</select>');
  101. ?>
  102. <br>
  103. <input type="text" value="<?php
  104. if (isset($_SESSION['fr_name']))
  105. {
  106. echo $_SESSION['fr_name'];
  107. unset($_SESSION['fr_name']);
  108. }
  109. ?>" name="name" placeholder="Miejscowość:"><br />
  110. <?php
  111. if (isset($_SESSION['e_name']))
  112. {
  113. echo '<div class="error">'.$_SESSION['e_name'].'</div>';
  114. unset($_SESSION['e_name']);
  115. }
  116. ?>
  117. <br>
  118. Sprawdzenie danych:<input class="checkbox" type="checkbox" value="0" name="check_all">
  119. <br>
  120. <?php
  121. if (isset($_SESSION['e_checkbx_number']))
  122. {
  123. echo '<div class="error">'.$_SESSION['e_checkbx_number'].'</div>';
  124. unset($_SESSION['e_checkbx_number']);
  125. }
  126. ?>
  127. <?php
  128. if (isset($_SESSION['e_bot']))
  129. {
  130. echo '<div class="error">'.$_SESSION['e_bot'].'</div>';
  131. unset($_SESSION['e_bot']);
  132. }
  133. ?>
  134.  
  135. <input type="submit" value="Zarejestruj" />
  136. </form>
  137. </div>
  138. </body>
  139. </html>
Go to the top of the page
+Quote Post
nospor
post 16.07.2020, 16:36:36
Post #8





Grupa: Moderatorzy
Postów: 36 441
Pomógł: 6290
Dołączył: 27.12.2004




sprawdz czy to
$result = $connect->query("Select id, name from clients");
nie zwraca ci jakiegos bledu


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ufo1990
post 16.07.2020, 16:46:47
Post #9





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 26.07.2019

Ostrzeżenie: (0%)
-----


kod zawiera więcej walidacji, ale skróciłem go żeby nie był taki długi. Kod sam w sobie działa, aktualizuje dane w bazie danych jednak tak jak pisałem problem pojawia się kiedy formularz zawiera jakiś błąd to wtedy nie zapamiętuje się poniższy kod w formularzu.

  1. <?php
  2. echo('<select name="name_check" >');
  3. $result = $connect->query("Select id, name from clients");
  4. if($result->num_rows > 0)
  5. {
  6. while($row = $result->fetch_assoc())
  7. {
  8. echo('<option value="'.$row['name'].'">'.$row['name'].' </option>');
  9. }}
  10. echo('</select>');
  11. ?>
Go to the top of the page
+Quote Post
nospor
post 16.07.2020, 16:52:49
Post #10





Grupa: Moderatorzy
Postów: 36 441
Pomógł: 6290
Dołączył: 27.12.2004




Prosilem o cos


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ufo1990
post 16.07.2020, 17:01:03
Post #11





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 26.07.2019

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 16.07.2020, 17:52:49 ) *
Prosilem o cos


Kod nie zwraca żadnych błędów
Go to the top of the page
+Quote Post
nospor
post 16.07.2020, 17:01:42
Post #12





Grupa: Moderatorzy
Postów: 36 441
Pomógł: 6290
Dołączył: 27.12.2004




A jak to sprawdziles? Pokaz kod, ktory sprawdza czy ten kawalek zapytania, ktory ci podalem, nie zwraca bledu


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
ufo1990
post 16.07.2020, 17:31:43
Post #13





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 26.07.2019

Ostrzeżenie: (0%)
-----


Sprawdziłem w taki sposób że skoro następuje
  1. header('Location: register_confirm.php');
tzn ze kod nie zwiera błędów, chyba że się mylę...

Problem rozwiązany okazało się że brakowalo
  1. require_once "connect.php";
  2. $connect = @new mysqli($host, $db_user, $db_password, $db_name);
Go to the top of the page
+Quote Post
viking
post 16.07.2020, 19:13:19
Post #14





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Na przyszłość nie używaj nigdy @ tym bardziej że masz włączone wyjątki. Dodatkowi nigdy nie wstawaj danych od użytkownika bezpośrednio do zapytania tak jak to robisz z name. Dobrze by też było rozdzielić ten kod html od reszty.


--------------------
Go to the top of the page
+Quote Post
ufo1990
post 17.07.2020, 07:22:30
Post #15





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 26.07.2019

Ostrzeżenie: (0%)
-----


Mógł byś mi wytłumaczyć dlaczego nie używać @? Rozumiem że nie powinno się wstawiać danych od użytkownika jednak nie widzę inne rozwiązania żeby wiedzieć komu aktualizuję dane.
Go to the top of the page
+Quote Post
viking
post 17.07.2020, 07:36:49
Post #16





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Bo ukrywasz bez sensu błędy a potem są takie kwiatki że nie wiesz że coś nie działa. Programując powinieneś mieć włączone maksymalne raportowanie i usunąć wszystkie najdrobniejsze nawet notice. Nie zdawać się na przypadek.
https://www.php.net/manual/en/mysqli.prepare.php

  1. mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

A tutaj mieszasz styl obiektowy z proceduralnym dodatkowo.

Ten post edytował viking 17.07.2020, 07:38:22


--------------------
Go to the top of the page
+Quote Post
nospor
post 17.07.2020, 08:03:43
Post #17





Grupa: Moderatorzy
Postów: 36 441
Pomógł: 6290
Dołączył: 27.12.2004




Cytat
Sprawdziłem w taki sposób że skoro następuje

[PHP] pobierz, plaintext

header('Location: register_confirm.php');

tzn ze kod nie zwiera błędów, chyba że się mylę...

No to przeciez sie wykonuje gdy walidacja ok. Sam pisales,ze nie dziala gdy walidacja NIE OK...

Chodzilo mi bys wyswietluil BLAD BAZY DANYCH. To by ci od razu pokazalo ze masz zwalone cos. W dziale PRZEDSZKOLE masz przypiety temat JAK ZADAC PYTANIE. Tam masz to wszystko opisane. Zapoznaj sie z tym i nie marnuj swojego i naszego czasu na przyszlosc.


Cytat
Problem rozwiązany okazało się że brakowalo

Poprostu nie potrzebnie wczesniej zamykasz polaczenie:
$connect->close();
Ale jak juz pisalem wczesniej: to bys od razu wykryl jakbys wyswietlil blad bazy danych o ktory prosilem od paru postow


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.04.2024 - 20:18