Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP]dlaczego kod php wczytuje sie przy ładowaniu strony
Forum PHP.pl > Forum > Przedszkole
olszand
Mam problem przy ładowaniu strony przetwarza mi kod php i wtedy do bazy trafia pusty wpis gdzie jest jakiś bład, szukam po róznych forach ale ja go nie widzę.

Dodam nawstępię, że jestem początkujący


<!DOCTYPE html>
<html>
<head>
<meta http-equiv=content-type content="text/html; charset=iso-8859-2">
<meta http-equiv="Content-Language" content="pl">

</head

<body>

<br><br><br>


<form action="index.php?go=contakt" method="post">
Imię i Nazwisko:
<INPUT type="text" name="dane" ><br>
Rodzaj:
<select name="medium">
<option value="Prywatny">Prywatny</option>
<option value="Sluzbowy">Służbowy</option>
</select><br>
Telefon:
<input type="text" name="telefon" />
<br>
<input type="submit" name="dodaj" value="dodaj" />
</form>


<?php
if (isset($dodaj))
$dodaj = $_POST['dodaj'];
$dane = $_POST['dane'];
$medium = $_POST['medium'];
$telefon = $_POST['telefon'];
{
require_once 'include/login.php';
$conn = new mysqli($hn, $un, $pw, $db);
if ($conn -> connect_error) die ($conn->connect_error);

$sql = "INSERT INTO contakt (dane , medium , telefon) VALUES ('$dane' , '$medium' , '$telefon')";
if ($conn->query($sql) === TRUE)

echo "Dodano poprawnie";

else

echo "error: " . $sql. "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
?>

</body>
</html>
KsaR
1. Uzywaj na forum znacznikow [php ]...[/php] bo latwiej sie czyta taki kod, i są podane linijki.
2. Popraw zamkniecie </head>
3.
  1. if (isset($dodaj))
  2. $dodaj = $_POST['dodaj'];
  3. $dane = $_POST['dane'];
  4. $medium = $_POST['medium'];
  5. $telefon = $_POST['telefon'];
  6. {


Zamien na:

  1. if (isset($_POST['dodaj']))
  2. {
  3. $dodaj = $_POST['dodaj'];
  4. $dane = $_POST['dane'];
  5. $medium = $_POST['medium'];
  6. $telefon = $_POST['telefon'];


4. Poczytaj o mysqli preapred statements (lub o sql injection).
olszand
Cytat(KsaR @ 12.12.2015, 00:01:55 ) *
1. Uzywaj na forum znacznikow [php ]...[/php] bo latwiej sie czyta taki kod, i są podane linijki.
2. Popraw zamkniecie </head>
3.
  1. if (isset($dodaj))
  2. $dodaj = $_POST['dodaj'];
  3. $dane = $_POST['dane'];
  4. $medium = $_POST['medium'];
  5. $telefon = $_POST['telefon'];
  6. {


Zamien na:

  1. if (isset($_POST['dodaj']))
  2. {
  3. $dodaj = $_POST['dodaj'];
  4. $dane = $_POST['dane'];
  5. $medium = $_POST['medium'];
  6. $telefon = $_POST['telefon'];


4. Poczytaj o mysqli preapred statements (lub o sql injection).


Działa wszystko dodaje poprawnie jeszcze musze poszukac znaleść jak wykonać aby każdy wpis miał kolejne id bo narazie wyswietla 0.

Jest jakis sposób na wyswietlenie całej tabeli w html?
Bo czytam jakies manuale i example ale wszytuje mi pierwszy wers zawsze:(

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv=content-type content="text/html; charset=iso-8859-2">
  5. <meta http-equiv="Content-Language" content="pl">
  6.  
  7. </head>
  8.  
  9. <body>
  10.  
  11. <?php
  12. require_once 'include/login.php';
  13. $conn = new mysqli($hn, $un, $pw, $db);
  14. if ($conn->connect_error) die($conn->connect_error);
  15.  
  16. $query = SELECT * FROM contakt";
  17. $result = $conn->query($query);
  18. if(!$result) die ("Brak dostępu do bazy danych:" . $conn->error);
  19. $wynik = $result->num_rows;
  20.  
  21. echo '<table id="tab">
  22. <tr><td><center>ID</center></td><td>Imię i Nazwisko</td><td>Rodzaj</td><td>Telefon</td></tr>';
  23. for($i=0; $i<$wynik; $i++)
  24. {
  25. $row = $result->fetch_assoc();
  26. echo '<tr>';
  27. echo '<td>'.$row['id'].'</td>';
  28. echo '<td>'.$row['dane'].'</td>';
  29. echo '<td>'.$row['medium'].'</td>';
  30. echo '<td>'.$row['telefon'].'</td>';
  31. echo '</tr>';
  32. }
  33.  
  34. echo '</table>';
  35.  
  36.  
  37.  
  38. ?>
  39. </body>
  40. </html>



wyskakuje w apache/error.log

PHP Parse error: syntax error, unexpected 'contakt (T_STRING)
viking
Insert into zwraca numer wstawionego wiersza który możesz wyciągnąć przez http://php.net/manual/pl/mysqli.insert-id.php
Żeby iterować po prostu wrzucasz wynik do pętli np.:

  1. while ($stmt->fetch()) {...}
olszand
Cytat(olszand @ 12.12.2015, 10:19:25 ) *
Działa wszystko dodaje poprawnie jeszcze musze poszukac znaleść jak wykonać aby każdy wpis miał kolejne id bo narazie wyswietla 0.

Jest jakis sposób na wyswietlenie całej tabeli w html?
Bo czytam jakies manuale i example ale wszytuje mi pierwszy wers zawsze:(

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv=content-type content="text/html; charset=iso-8859-2">
  5. <meta http-equiv="Content-Language" content="pl">
  6.  
  7. </head>
  8.  
  9. <body>
  10.  
  11. <?php
  12. require_once 'include/login.php';
  13. $conn = new mysqli($hn, $un, $pw, $db);
  14. if ($conn->connect_error) die($conn->connect_error);
  15.  
  16. $query = SELECT * FROM contakt";
  17. $result = $conn->query($query);
  18. if(!$result) die ("Brak dostępu do bazy danych:" . $conn->error);
  19. $wynik = $result->num_rows;
  20.  
  21. echo '<table id="tab">
  22. <tr><td><center>ID</center></td><td>Imię i Nazwisko</td><td>Rodzaj</td><td>Telefon</td></tr>';
  23. for($i=0; $i<$wynik; $i++)
  24. {
  25. $row = $result->fetch_assoc();
  26. echo '<tr>';
  27. echo '<td>'.$row['id'].'</td>';
  28. echo '<td>'.$row['dane'].'</td>';
  29. echo '<td>'.$row['medium'].'</td>';
  30. echo '<td>'.$row['telefon'].'</td>';
  31. echo '</tr>';
  32. }
  33.  
  34. echo '</table>';
  35.  
  36.  
  37.  
  38. ?>
  39. </body>
  40. </html>



wyskakuje w apache/error.log

PHP Parse error: syntax error, unexpected 'contakt (T_STRING)





Dobra sam znalazłem:)
cudzysłowiu brakowało:)
polecacie jakis program do pisania danych na serwerze zdalnym?? moze byc po ssh, lftp

A tak przy okazji jak zrobić zeby dodawanie formularza było z ID ale jak zrobić zeby on zczytał jaki jest w bazie i dawał +1?
casperii
jeżeli chcesz aby ci ID się zwiększało o 1+ musisz na to pole w bazie mysql nadać AUTO_INCREMENT
olszand
Cytat(casperii @ 12.12.2015, 11:18:16 ) *
jeżeli chcesz aby ci ID się zwiększało o 1+ musisz na to pole w bazie mysql nadać AUTO_INCREMENT



Tak myslałem ale phpmyadmin mam tylko typ : INT
jak zaznacze opcje A_I
wyskakuje bład
#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

Cytat(olszand @ 12.12.2015, 11:24:48 ) *
Tak myslałem ale phpmyadmin mam tylko typ : INT
jak zaznacze opcje A_I
wyskakuje bład
#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key



mój babol nie ustawiłem kolumny klucza:P

juz działa dzieki:)

Macie jakis pomysł na program do pisania zdalnego free??

Ok wszystko działa juz prawie koncze css do tabel.

mam jeszcze jedno pytanie:
w tej chwili po nacisnieciu przycisku dodaj zostaje wykonywany skrypt dodawania i mam 'Dodano poprawnie. chciałem zrobić aby po dodaniu przekierowywało na podstrone poprzednią, jednak header wpisany na koncu skryptu który powinnien być wykonany po nacisnieciu. to mimo to header('refresh:5 ; url=index.php') wykonuje się nawet jeśli nie klikne dodaj.

to troche bez sensu moim zdaniem jeśli

  1. if (isset($_POST['dodaj']))
  2.  
  3. {
  4.  
  5. wykonywany skrypt dodania
  6. if
  7.  
  8. echo "Dodano poprawnie";
  9.  
  10. else "error";
  11.  
  12. header('refresh:5 ; url=index.php');
  13. }
casperii
czemu dajesz sprawdzenie po isset post? przecież może być tak, że błędnie wyślesz posta i co wtedy też header?
pokaż linijke gdzie dodajesz rekord do bazy. P
olszand
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv=content-type content="text/html; charset=iso-8859-2">
  5. <meta http-equiv="Content-Language" content="pl">
  6.  
  7. </head>
  8.  
  9. <body>
  10.  
  11. <br><br><br>
  12.  
  13.  
  14. <form action="index.php?go=contakt" method="post">
  15. Imię i Nazwisko:
  16. <INPUT type="text" name="dane" ><br>
  17. Rodzaj:
  18. <select name="medium">
  19. <option value="Prywatny">Prywatny</option>
  20. <option value="Sluzbowy">Służbowy</option>
  21. </select><br>
  22. Telefon:
  23. <input type="text" name="telefon" />
  24. <br>
  25. <input type="submit" name="dodaj" value="dodaj" />
  26. </form>
  27.  
  28.  
  29. <?php
  30. if (isset($_POST['dodaj']))
  31. {
  32. $dodaj = $_POST['dodaj'];
  33. $dane = $_POST['dane'];
  34. $medium = $_POST['medium'];
  35. $telefon = $_POST['telefon'];
  36.  
  37.  
  38. require_once 'include/login.php';
  39. $conn = new mysqli($hn, $un, $pw, $db);
  40. if ($conn -> connect_error) die ($conn->connect_error);
  41.  
  42. $sql = "INSERT INTO contakt (dane , medium , telefon) VALUES ('$dane' , '$medium' , '$telefon')";
  43. if ($conn->query($sql) === TRUE)
  44.  
  45. echo "Dodano poprawnie";
  46.  
  47. else
  48.  
  49. echo "error: " . $sql. "<br>" . mysqli_error($conn);
  50. }
  51. mysqli_close($conn);
  52. ?>
  53.  
  54. </body>
  55. </html>



W które miejsce wstawić przekierowanie?
casperii
sprawdź:

  1. if ($conn->query($sql)){
  2. //header();
  3. echo 'tu możesz wstawić swój komunikat';
  4. }else{
  5. echo "error: " . $sql. "<br>" . mysqli_error($conn);
  6. }
olszand
Cytat(casperii @ 12.12.2015, 18:05:31 ) *
sprawdź:

  1. if ($conn->query($sql)){
  2. //header();
  3. echo 'tu możesz wstawić swój komunikat';
  4. }else{
  5. echo "error: " . $sql. "<br>" . mysqli_error($conn);
  6. }



wstawiłem header w innym miejscu i dopiero zdziałałło tak jak chciałem.
mianowicie zrobiłem zmienna
  1. $go = header('url=....');


i w kodzie dałem


  1. if ($conn->query($sql))
  2. {
  3. echo 'Dodano poprawnie . $go ';
  4. }else{
  5. echo "error: " . $sql. "<br>" . mysqli_error($conn);
  6. }



czy ta wersja jest dopuszczalna jesli działa?
com
jesteś pewny że to działa? bo coś mi się wydaje że nie
olszand
Cytat(com @ 20.12.2015, 17:08:39 ) *
jesteś pewny że to działa? bo coś mi się wydaje że nie



  1. if ($conn->query($sql) === TRUE)
  2.  
  3. echo "Dodano poprawnie . $go ";
  4.  
  5. else
  6.  
  7. echo "error: " . $sql. "<br>" . mysqli_error($conn);
  8. }
  9.  
  10.  
  11. mysqli_close($conn);


dokładnie mam tak
i działa

com
No ok ale przekierowuje?

i pytanie czemu header chcesz przypisywać zmiennej, bo wydaje mi się że on Cie przekieruje zawsze po tym czasie a nie jak warunek się spełni, tak przynajmniej w innych metodach jest tongue.gif
olszand
Cytat(com @ 20.12.2015, 17:38:55 ) *
No ok ale przekierowuje?

i pytanie czemu header chcesz przypisywać zmiennej, bo wydaje mi się że on Cie przekieruje zawsze po tym czasie a nie jak warunek się spełni, tak przynajmniej w innych metodach jest tongue.gif



No własnie nie bo jezeli warunek sie spełni to jest echo dodano poprawnie i dopiero przetwarza header
com
no to przecież tak masz w kodzie to tak działa

robisz header z refresh to się przekieruje za x czasu
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-2025 Invision Power Services, Inc.