Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dodawanie danych z formularza do MySQL
Forum PHP.pl > Forum > Przedszkole
plmorpheus
Witam,

dla niektórych to pytanie może wydać się banalne, ale każdy kiedyś zaczynał, więc proszę o odpowedź:

otóż interesuje mnie, jak sprawić, aby dodać dane wpisywane do formularza do bazy mysql....

Zrobiłem sobie coś takiego ale pewnie jest to totalna bzdura więc proszę o poprawienie i odpowiedź jak to zrobić,

Oto kod:

Kod
<html>
  
   <head>
     <title></title>
   </head>
  
   <body>
   <TABLE BORDER=2>
   <TR>
   <TH>Imię</TH>
   <TH>Nazwisko</TH>
   <TH>Telefon</TH>
   </TR>
  
  
   <FORM METHOD='POST'>
   Imię: <INPUT TYPE='text' NAME='imie'><BR>
   Nazwisko: <INPUT TYPE='text' NAME='nazwisko'><BR>
   Telefon: <INPUT TYPE='text' NAME='telefon'><BR>
   <INPUT TYPE='submit' VALUE='Zapodaj'>
   </FORM>
   <BR><BR>
   <?
  
   $user = "root";
   $pass = "vertrigo";
   $database = "baza2";
  
   mysql_connect ("localhost", "$user", "$pass") or die ("Brak połączenia z MySQL");
   mysql_select_db ("$database") or die ('Błąd połączenia z bazą'.': '.mysql_error());
   mysql_query($query);
  
   $query = (INSERT INTO kstel ('imie', 'nazwisko', 'telefon') VALUES ('$_POST['imie]', '$_POST['nazwisko]', '$_POST['telefon']');
  
   ?>
  
   <TR>
   <TD><? echo $imie ?></TD>
   <TD><? echo $nazwisko ?></TD>
   <TD><? echo $telefon ?></TD>
   </TR>
   </TABLE>
  
   </body>
   </html>


Nie nabijajcie się ze mnie - jestem naprawdę początkujący....
RubiX
Nie działa ponieważ niezamknąłeś 1 nawiasu w
  1. <?php
  2. $query = mysql_query("INSERT INTO kstel ('imie', 'nazwisko', 'telefon') VALUES ('$_POST['imie]', '$_POST['nazwisko]', '$_POST['telefon']')");
  3. ?>

A pozatym Proponuje tak:

  1. <?php
  2. echo "<html>
  3.  
  4.  <head>
  5.  <title></title>
  6.  </head>
  7.  
  8.  <body>";
  9.  
  10. if ($_GET['akcja']=="zapodaj") {
  11. $user = "root";
  12.  $pass = "vertrigo";
  13.  $database = "baza2";
  14.  
  15.  mysql_connect ("localhost", "$user", "$pass") or die ("Brak połączenia z MySQL");
  16.  mysql_select_db ("$database") or die ('Błąd połączenia z bazą'.': '.mysql_error());
  17.  mysql_query($query);
  18. $imie = $_POST['imie'];
  19. $nazwisko = $_POST['nazwisko'];
  20. $itelefon = $_POST['telefon'];
  21.  
  22. $query = mysql_query("INSERT INTO kstel VALUES ('$imie', '$nazwisko', '$telefon')");
  23.  
  24. if (!$query) {
  25. echo "Bład wpisu nie dodano ";
  26. } else {
  27. echo " Wpis został dodany !<br><br>Wprowadzone dane:<br>Imie: ".$imie."<br>Nazwisko: ".$nazwisko."<br>Telefon: ".$telefon."";
  28. }
  29.  
  30. } else {
  31. echo "  <FORM METHOD='POST' action='WPISZNAZWEPLIKU.php?akcja=zapodaj'>
  32.  Imię: <INPUT TYPE='text' NAME='imie'><BR>
  33.  Nazwisko: <INPUT TYPE='text' NAME='nazwisko'><BR>
  34.  Telefon: <INPUT TYPE='text' NAME='telefon'><BR>
  35.  <INPUT TYPE='submit' VALUE='Zapodaj'>
  36.  </FORM>";
  37. }
  38.  
  39.  
  40.  
  41.  
  42. echo "</body>
  43. </html>";
  44. ?>


Ale jeżeli wolisz zostać przy Twoim kodzie poprostu wklej ten kod zamiast Twojego:

  1. <?php
  2. $query = mysql_query("INSERT INTO kstel ('imie', 'nazwisko', 'telefon') VALUES ('$_POST['imie]', '$_POST['nazwisko]', '$_POST['telefon']')");
  3. ?>
cornholio666
Jak juz to

  1. <?php
  2. $query = ("INSERT INTO kstel VALUES ('$imie', '$nazwisko', '$telefon')");
  3.  mysql_query($query);
  4. ?>
plmorpheus
Niby wszystko działa, ale jak wchodze do phpmyadmina to nowe rekordy się nie pojawiają :/
RubiX
A kozystasz z Twojego kodu czy tego co ja Ci przesłałem ?

Jezeli Twojego to doklej tam :

  1. <?php
  2. $user = "root";
  3.  $pass = "vertrigo";
  4.  $database = "baza2";
  5.  
  6.  mysql_connect ("localhost", "$user", "$pass") or die ("Brak połączenia z MySQL");
  7.  mysql_select_db ("$database") or die ('Błąd połączenia z bazą'.': '.mysql_error());
  8.  mysql_query($query);
  9.  
  10. $query = mysql_query("INSERT INTO kstel ('imie', 'nazwisko', 'telefon') VALUES ('$_POST['imie]', '$_POST['nazwisko]', '$_POST['telefon']')");
  11.  
  12. if (!query) {
  13. echo "blad";
  14. } else {
  15. echo "dziala";
  16. }
  17. ?>


Jezeli pojawi sie dziala to powinno wpisać jeżeli błąd to sprawdz czy podales prawidłowe dane do sql no i powinien na stronie wyskoczyc jakis error ;p
Morfi777
Witam

Diabeł tkwi w tej linijce:

  1. <?php
  2. $query = (INSERT INTO kstel ('imie', 'nazwisko', 'telefon') VALUES ('$_POST['imie]', '$_POST['nazwisko]', '$_POST['telefon']');
  3. ?>


Powinno byc tak:

  1. <?php
  2. $query = "(INSERT INTO kstel ('imie', 'nazwisko', 'telefon') VALUES ('".$_POST['imie']."', '".$_POST['nazwisko']."', '".$_POST['telefon']."')";
  3. ?>


Zapomniałeś dodać cudzysłów i potem posklejać i źle postawione średniki.


Pozdrawiam
plmorpheus
RubiX - wkleiłem Twój kod i lipa :/
Morfi777 - po twoich poprawkach niestety też nic :/ dane zostały przekopiowane do tabeli ale do mysqla niestety się nie dopisuje :/
RubiX
ale co ? jakiś błąd sie pokazał czy cos questionmark.gif

może odświerz strone w phpmyadmin ?

Do diabeł777

Co to jest ?

  1. <?php
  2. $query = "(INSERT INTO kstel ('imie', 'nazwisko', 'telefon') VALUES ('".$_POST['imie']."', '".$_POST['nazwisko']."', '".$_POST['telefon']."')";
  3. ?>


To na 100% niezadziała pomyśl co tu napisałeś wogle niema mysql_query a po 2 nie powinno być " przed tym ...
Morfi777
Hallo ! Czy zmienna nie powinna być w cudzysłowiu/średnikach questionmark.gif (3 posty wyżej)
RubiX
Na 100% nie ! czytaj 2 posty powyzej

plmorpheus a masz dobrze baze wgraną i zinterpretowane pola auto_increment oraz PRIMARY key questionmark.gif
Morfi777
RubiX - sam dodałeś mu w porawce za nawiasem -> " <- co do mojej poprawki to ja zawsze robie tak:

  1. <?php
  2. $sql="INSERT INTO xxx ( imie, nazwisko ) VALUES ( '".$_POST["imiex"]."','".$_POST["nazwiskox"]."')";
  3. mysql_query ($sql) or die ("złe pytanie");
  4. ?>


I mnie działa, ale pewnie możliwości jest wiele smile.gif
plmorpheus
Cytat(RubiX @ 12.01.2008, 20:46:59 ) *
ale co ? jakiś błąd sie pokazał czy cos questionmark.gif

może odświerz strone w phpmyadmin ?


No właśnie nie wyświetla się żaden błąd - wyświetla się po prostu strona WPISZNAZWEPLIKU.php (zakładam, że jest to dowolna strona, która ma się wyświetlić po wykonaniu operacji), jednakże po odświeżeniu strony (tak tak odświeżam phpmyadmina biggrin.gif ) nie pojawiają się nowe wpisy..
Morfi777
A spróbuj jeszcze zamienić:

  1. <FORM METHOD='POST'>


na

  1. <FORM METHOD='POST' ACTION="twoj_plik.php">
RubiX
nie w wpisznazwepliku wpisz NAZWE Twojego pliku w którym masz formularz !

np jak mas zten formularz w pliku ksiazka.php

to zamiast wpisznazwapliku wpisz ksiazka tongue.gif
plmorpheus
No oki, czyli teraz jest tak:

plik, którego kod podałeś (z uwzględnioną nazwą nowego pliku):

Kod
<?php
echo "<html>

   <head>
     <title></title>
   </head>

   <body>";

if ($_GET['akcja']=="zapodaj") {
$user = "root";
   $pass = "vertrigo";
   $database = "baza2";

   mysql_connect ("localhost", "$user", "$pass") or die ("Brak połączenia z MySQL");
   mysql_select_db ("$database") or die ('Błąd połączenia z bazą'.': '.mysql_error());
   mysql_query($query);
$imie = $_POST['imie'];
$nazwisko = $_POST['nazwisko'];
$telefon = $_POST['telefon'];

$query = mysql_query("INSERT INTO kstel VALUES ('$imie', '$nazwisko', '$telefon')");

if (!$query) {
echo "Bład wpisu nie dodano ";
} else {
echo " Wpis został dodany !<br><br>Wprowadzone dane:<br>Imie: ".$imie."<br>Nazwisko: ".$nazwisko."<br>Telefon: ".$telefon."";
}

} else {
echo "   <FORM METHOD='POST' action='ok.php?akcja=zapodaj'>
   Imię: <INPUT TYPE='text' NAME='imie'><BR>
   Nazwisko: <INPUT TYPE='text' NAME='nazwisko'><BR>
   Telefon: <INPUT TYPE='text' NAME='telefon'><BR>
   <INPUT TYPE='submit' VALUE='Zapodaj'>
   </FORM>";
}




echo "</body>
</html>";
?>


i drugi ok.php:

Kod
<html>

<head>
  <title></title>
</head>

<body>

<?php

echo 'Imię'.' ';
echo $_POST['imie'];
echo "<BR>";
echo 'Nazwisko'.' ';
echo $_POST['nazwisko'];
echo "<BR>";
echo 'Telefon'.' ';
echo $_POST['telefon'];
echo "<BR>";


?>

</body>

</html>


I niby wszystko jest git, plik ok.php wyswietla wpisane dane, ale do mysqla sie to nie dodaje sadsmiley02.gif
A żeby było lepiej, to nie wyświetla się żaden bład blink.gif
RubiX
Źle plik z moim kodem nazwij ok.php

Musisz miec tylko 1 plik i nic wiecej

Plik ok.php:

  1. <?php
  2. echo "<html>
  3.  
  4.  <head>
  5.  <title></title>
  6.  </head>
  7.  
  8.  <body>";
  9.  
  10. if ($_GET['akcja']=="zapodaj") {
  11. $user = "root";
  12.  $pass = "vertrigo";
  13.  $database = "baza2";
  14.  
  15.  mysql_connect ("localhost", "$user", "$pass") or die ("Brak połączenia z MySQL");
  16.  mysql_select_db ("$database") or die ('Błąd połączenia z bazą'.': '.mysql_error());
  17.  mysql_query($query);
  18. $imie = $_POST['imie'];
  19. $nazwisko = $_POST['nazwisko'];
  20. $telefon = $_POST['telefon'];
  21.  
  22. $query = mysql_query("INSERT INTO kstel VALUES ('$imie', '$nazwisko', '$telefon')");
  23.  
  24. if (!$query) {
  25. echo "Bład wpisu nie dodano ";
  26. } else {
  27. echo " Wpis został dodany !<br><br>Wprowadzone dane:<br>Imie: ".$imie."<br>Nazwisko: ".$nazwisko."<br>Telefon: ".$telefon."";
  28. }
  29.  
  30. } else {
  31. echo "  <FORM METHOD='POST' action='ok.php?akcja=zapodaj'>
  32.  Imię: <INPUT TYPE='text' NAME='imie'><BR>
  33.  Nazwisko: <INPUT TYPE='text' NAME='nazwisko'><BR>
  34.  Telefon: <INPUT TYPE='text' NAME='telefon'><BR>
  35.  <INPUT TYPE='submit' VALUE='Zapodaj'>
  36.  </FORM>";
  37. }
  38.  
  39.  
  40.  
  41.  
  42. echo "</body>
  43. </html>";
  44. ?>
plmorpheus
To teraz rozmawiamy treściwie snitch.gif
Tylko że po wybraniu "Zapodaj" pojawia się komunikat:

Cytat
Bład wpisu nie dodano


Co jest nie tak?
RubiX
No jezeli to wyskoczyło to znaczy ze źle jest baza wgrana moze masz w niej wiecej wartosci czy tylko imie , nazwiko i telefon niemasz id czy cos ?
plmorpheus
No jest pole "nr" które jest kluczem głównym z opcją "auto_increment"
RubiX
No w takim bądź razie wklej ten kod:

<?php
echo "<html>

<head>
<title></title>
</head>

<body>";

if ($_GET['akcja']=="zapodaj") {
$user = "root";
$pass = "vertrigo";
$database = "baza2";

mysql_connect ("localhost", "$user", "$pass") or die ("Brak połączenia z MySQL");
mysql_select_db ("$database") or die ('Błąd połączenia z bazą'.': '.mysql_error());
mysql_query($query);
$imie = $_POST['imie'];
$nazwisko = $_POST['nazwisko'];
$telefon = $_POST['telefon'];

$query = mysql_query("INSERT INTO kstel VALUES ('', '$imie', '$nazwisko', '$telefon')");

if (!$query) {
echo "Bład wpisu nie dodano ";
} else {
echo " Wpis został dodany !<br><br>Wprowadzone dane:<br>Imie: ".$imie."<br>Nazwisko: ".$nazwisko."<br>Telefon: ".$telefon."";
}

} else {
echo " <FORM METHOD='POST' action='ok.php?akcja=zapodaj'>
Imię: <INPUT TYPE='text' NAME='imie'><BR>
Nazwisko: <INPUT TYPE='text' NAME='nazwisko'><BR>
Telefon: <INPUT TYPE='text' NAME='telefon'><BR>
<INPUT TYPE='submit' VALUE='Zapodaj'>
</FORM>";
}




echo "</body>
</html>";
?>
plmorpheus
Hmmm nie widzę za bardzo różnicy w tym kodzie - zresztą jego wklejenie daje ten sam efekt sad.gif

Nie wiem, czy nie ma to cos wspólnego ze składnią MySQL-a - gdyby dodawać ręcznie z poziomy phpmyadmina, to wpisuje on w takim formacie:

Kod
INSERT INTO `baza2`.`kstel` (
`nr` ,
`imie` ,
`nazwisko` ,
`telefon`
)
VALUES (
NULL , 'Jan', 'Kowalski', '606854598'
);
RubiX
a co to jest baza2 ? prefiks do tabeli czy co ?
nospor
Cytat
a co to jest baza2
Jak nazwa wskazuje jest to nazwa bazy danych.... POczytaj troche w manualu o skladni.

  1. <?php
  2. $query = mysql_query("INSERT INTO kstel VALUES ('', '$imie', '$nazwisko', '$telefon')");
  3.  
  4. if (!$query) {
  5. echo "Bład wpisu nie dodano ";
  6. } else {
  7. echo " Wpis został dodany !<br><br>Wprowadzone dane:<br>Imie: ".$imie."<br>Nazwisko: ".$nazwisko."<br>Telefon: ".$telefon."";
  8. }
  9. ?>

No ale panowie, co to ma byc? "Bład wpisu nie dodano" czy ten tekst cos mowi konkretnego? Nic nie mowi konkretnego. Bójacie sie i bójacie a wystarczy zrobic mysql_error() by zobaczyc co jest nie tak:
  1. <?php
  2. $q = "INSERT INTO kstel VALUES (null, '$imie', '$nazwisko', '$telefon')";
  3. $query = mysql_query($q);
  4.  
  5. if (!$query) {
  6. echo "Bład wpisu nie dodano. Zapytanie: $q --- Tresc bledu: ".mysql_error();
  7. } else {
  8. echo " Wpis został dodany !<br><br>Wprowadzone dane:<br>Imie: ".$imie."<br>Nazwisko: ".$nazwisko."<br>Telefon: ".$telefon."";
  9. }
  10. ?>
maciasgta
Witam

Ja mam problem nastepujący , mam formularz potem skrypt sprawdza czy jest wpisane tyle znakow ile potrzeba itp, oraz czy login jest w bazie . Skrypt oczywiście wszystko ok sprwadza ale potem nie dodaje do bazy danych takie zapytanie mam:

mysql_query("INSERT INTO uzytkownicy VALUES ('', '".$_POST['login']."', '".$_POST['haslo']."', '".$_POST['mail']."', '".$_POST['imie']."', '".$_POST['nazwisko']."', '".mktime()."')");

Coś źle dałem??
Maxik
  1. <?php
  2. $login = $_POST['login'];
  3. $haslo = $_POST['haslo'];
  4. $mail = $_POST['mail'];
  5. $imie = $_POST['imie'];
  6. $nazwisko = $_POST['nazwisko'];
  7. $time = mktime();
  8.  
  9.  
  10. mysql_query("INSERT INTO uzytkownicy(`login`, `haslo`, `mail`, `imie`, `nazwisko`, `czas`) VALUES ($login, $haslo, $mail, $imie, $nazwisko, $time)") or die("Zapytanie niepoprawne");
  11. ?>
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.