Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][SQL]wysyłanie danych z formularza PHP do sql
Forum PHP.pl > Forum > Przedszkole
traczu1985
Zrobiłem prosty formularz wysyłania danych Imienia i Nazwiska do SQL.
Sprawdziłem że dodaje do bazy kolejno ale bez wartości.
Za to formularz zapamiętuje wartość Imię i Nazwisko

Za to w tabeli pokazuje 0

index.html
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <meta charset="utf-8"/>
  4. <title>Formularz Newsletter</title>
  5. <link ref="stylesheet" href="">
  6. </head>
  7. <section id="home">
  8. <div class="container">
  9. <h2> Dodaj się do bazy</h2>
  10. <form action="dodaj.php" method="post">
  11. <input type="text" name="imie" placeholder="Twoje imię..." required /><br>
  12. <input type="text" name="nazwisko" placeholder="Twoje nazwisko..." required /><br>
  13. <button type="submit">Dodaj...</button>
  14.  
  15.  
  16.  
  17.  
  18. </form>
  19. </div>
  20. </section>
  21. </body>
  22. </html>
  23.  


connect.php
  1. <?php
  2.  
  3. $conn = mysqli_connect (
  4. 'localhost',
  5. 'user',
  6. 'pass',
  7. 'dbname'
  8. );
  9. ?>


dodaj.php
  1. <?php
  2. require("connect.php");
  3.  
  4. $firstName = $_POST['imie'];
  5. $secondName = $_POST['nazwisko'];
  6. $sql= "INSERT INTO baza_newsletter(IDAutor, Imie, Nazwisko) VALUES ('','$firstName','$secondName')";
  7. $result = $conn->query($sql);
  8.  
  9. ?>

viking
Włącz wyświetlanie błędów zapytania. Dlaczego wstawiasz pusty string w kolumnę zapewne int? Pomiń ja całkowicie. Zabezpiecz to bindowaniem parametrów.
traczu1985
Cytat(viking @ 27.08.2019, 12:41:33 ) *
Włącz wyświetlanie błędów zapytania. Dlaczego wstawiasz pusty string w kolumnę zapewne int? Pomiń ja całkowicie. Zabezpiecz to bindowaniem parametrów.



Pusty aby z automatu numerował znalazłem tak w jednym z poradników.

Co to znaczy bindowanie parametrów questionmark.gif
viking
A czytałeś https://dev.mysql.com/doc/refman/8.0/en/exa...-increment.html ? Masz tam opisane dokładnie jak jest generowany AI dla zapytań.

https://www.php.net/manual/en/mysqli-stmt.bind-param.php
traczu1985
usunąłem numerowanie ale to nic nie zmienia żadnej wartości mi nie zapisuje do bazy.

Połączenie wygląda że jest ok
Nie wywala żadnego błędu


Ok znalazłem typ w tabeli był INT zamiast text biggrin.gif


Może teraz ktoś pomoże jak sprawdzić czy np jedna z wartości sie nie powtarza w bazie questionmark.gif
I wyrzuca informacje że taki zapis już jest questionmark.gif
viking
A która konkretnie wartość? Zazwyczaj unique key plus łapanie wyjątków.
traczu1985
Cytat(viking @ 27.08.2019, 13:10:19 ) *
A która konkretnie wartość? Zazwyczaj unique key plus łapanie wyjątków.



Chodzi mi o wyłapanie błędu jeśli jest taki sam adres mail już w bazie (tabeli)
viking
No to odpowiedź już masz.
traczu1985
Cytat(viking @ 27.08.2019, 13:34:06 ) *
No to odpowiedź już masz.


łatwo powiedzieć jak człowiek się porusza biegle.
znalazłem unique key definicje ale nie do końca wiem jak to zastosować
viking
Ściągasz sobie jakiś program np heidisql i w dwóch klikach dodajesz. Jak nie to polecenie alter table.
dublinka
Cytat(traczu1985 @ 27.08.2019, 12:56:33 ) *
łatwo powiedzieć jak człowiek się porusza biegle.
znalazłem unique key definicje ale nie do końca wiem jak to zastosować


  1. <?php
  2. function duplicateEmailAddress($host, $user, $pwd, $database, $str)
  3. {
  4. $mysqli = new mysqli($host, $user, $pwd, $database);
  5. if($mysqli->connect_error) {
  6. exit('Błąd polączenia z MySQL');
  7. }
  8. mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
  9. $mysqli->set_charset("utf8mb4");
  10.  
  11.  
  12. $stmt = $mysqli->prepare("SELECT email FROM email WHERE email = ?");
  13. $stmt->bind_param("s", $str);
  14. $stmt->execute();
  15. $stmt->store_result();
  16. if($stmt->num_rows > 0)
  17. {
  18. exit('Email istnieje');
  19. }
  20.  
  21. // reszta jesli ok
  22.  
  23.  
  24. $stmt->bind_result($email);
  25. $stmt->fetch();
  26.  
  27. $stmt->close();
  28. }
  29. $get = duplicateEmailAddress("localhost", "root", "password", "nazwabazy", "email@gmail.com");
  30.  
  31. echo $get;
  32. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.