Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Formularz zapisujący odpowiedzi w bazie MySQL.
Forum PHP.pl > Forum > Przedszkole
Makciek
Witam
Jestem początkujący, w sumie to nie umiem nic :/ (jeśli chodzi o PHP), więc proszę o wyrozumiałość.

Więc potrzebuję skryptu/kodu/wytłumaczenia co zrobić ,aby dane podane w formularzu były zapisywane w Bazie MySQL w postaci rekordu (szok!:P) tongue.gif

Jeśli jest to potrzebne mogę podać kod tego formularza w HTML.
Proszę o pomoc, i z góry dziękuję za pomoc.
Pozdrawiam Makciek
Quider
  1. <form action = 'dodaj.php' method='post'>
  2. <input type='text' name='imie'>
  3. <input type='submit' value='ok'>
  4. </form>

Natomiast dodaj.php musi wyglądać w następujący sposób:

  1. <?php
  2. mysql_connect('localhost','user','haslo');
  3. mysql_select_db('baza_danych');
  4.  
  5. $sql = "INSERT INTO twoja_tabela VALUES('','".$_POST[imie]."')";
  6. ?>


powinno działać zrób analogicznie.
erix
Poproszę o tag tematu.
Makciek
Dziękuję smile.gif

I mam problem wszystko pięknie zrobiłem ale rekordy się nie wpisują :/.
Próbowałem wielu możliwości ale rekord nie jest dodawany :/


Kod html formularza:
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" />
  3. <meta http-equiv="Reply-to" content="makciek@gmail.com" />
  4. <meta http-equiv="content-language" content="pl" />
  5. <title>Ankieta</title>
  6.  
  7. <style type="text/css">
  8. body {
  9. font: 100% Verdana, Arial, Helvetica, sans-serif;
  10. background: #8DB1FF;
  11. margin: 0;
  12. padding: 0;
  13. color: #000000;
  14. }
  15.  
  16.  
  17. </head>
  18.  
  19. Proszę wypełnić poniższy formularz, żeby dodać firmę do naszej bazy danych.
  20.  
  21. <form action = 'ankieta.php' method='post'>
  22.  
  23. Wpisz nazwę swojej firmy
  24. <input name="id" type="text" value="Nazwa Firmy"><br/>
  25. Wpisz adres twojej firmy
  26. <input type='text' name='adres' value='Adres'><br/>
  27. Wpisz telefon swojej firmy
  28. <input type='text' name='tel' value='Telefon'><br/>
  29. Wpisz E-mail swojej formy
  30. <input type='text' name='e-mail' value='E-Mail'><br/>
  31. Wpisz adres strony internetowej twojej firmy*
  32. <input type='text' name='www' value='http://www. dokończ'><br/>
  33. Wpisz login SKYPE twojej firmy*
  34. <input type='text' name='skype' value='Login SKYPE'><br/>
  35. Wpisz numer GaduGadu twojej firmy*
  36. <input type='text' name='gg' value='numer GaduGadu'><br/>
  37. Wpisz przedstawicielstwo zagraniczne twojej firmy*
  38. <input name='zagraniczne' type='text' value='Przedstawicielstwo Zagraniczne' size="50"><br/>
  39. Wpisz kto jest właścicielem twojej firmy
  40. <input type='text' name='wlascicel' value='Właściciel'><br/>
  41.  
  42. <br/>
  43. <font size="1">*Jeśli taki numer, login lub przedstawicielstwo istnieje.</font>
  44. <br/><br/>
  45.  
  46. <input type="checkbox" name="nazwa" value="Wyślij dane do naszej bazy!" onclick="this.form.elements['potwierdz'].disabled = !this.checked" />
  47. <font size='2'>Jeśli zgadzasz się na <a href='warunki.html'>podane warunki</a> naciśnij poniższy przycisk.</font><br/>
  48. <input type='submit' value='Wyślij dane do naszej bazy!' disabled='disabled' id='potwierdz'>
  49. </form>
  50.  
  51.  
  52.  
  53. </body>
  54. </html>


Tu jest kod php:
  1. <?php
  2.  
  3. $baza = mysql_connect('localhost', 'tu wpisalem login', 'a tu haslo') or die ("Nie moglem sie polaczyc z serwerem");
  4.  
  5. mysql_select_db('baza danych') or die ("Nie moglem znalesc bazy danych");
  6.  
  7. $sql = "INSERT INTO podkarpackie VALUES('','".$_POST[id]."')";
  8. or die("Nie udalo się dorzucic rekordu");
  9.  
  10. $sql = "INSERT INTO podkarpackie VALUES('','".$_POST[adres]."')";
  11. or die("Nie udalo się dorzucic rekordu");
  12.  
  13. $sql = "INSERT INTO podkarpackie VALUES('','".$_POST[tel]."')";
  14. or die("Nie udalo się dorzucic rekordu");
  15.  
  16. $sql = "INSERT INTO podkarpackie VALUES('','".$_POST[e-mail]."')";
  17. or die("Nie udalo się dorzucic rekordu");
  18.  
  19. $sql = "INSERT INTO podkarpackie VALUES('','".$_POST[www]."')";
  20. or die("Nie udalo się dorzucic rekordu");
  21.  
  22. $sql = "INSERT INTO podkarpackie VALUES('','".$_POST[skype]."')";
  23. or die("Nie udalo się dorzucic rekordu");
  24.  
  25. $sql = "INSERT INTO podkarpackie VALUES('','".$_POST[gg]."')";
  26. or die("Nie udalo się dorzucic rekordu");
  27. ?>
guilty82
nie $_POST[id]
a $_POST['id']

zamiast
  1. <?php
  2. or die("Nie udalo się dorzucic rekordu");
  3. ?>


daj
  1. <?php
  2. mysql_query($sql) or die("Nie udalo się dorzucic rekordu. Błąd: ".mysql_error());
  3. ?>
Makciek
wyskakuje błąd:
"Nie udalo sie dorzucic rekordu. Blad: Column count doesn't match value count at row 1"
golaod
No to skoro masz błąd, to na co czekasz ? Jedyne, co Ci mogę doradzić to sprawdzenie konstrukcji tabelki z tym co insertujesz...
Makciek
na to że nie znam się na MySQL i nie wiem o co do końca chodzi :/

Chodzi tu chyba o złą budowę tabeli.
guilty82
to znaczy ze ilosc kolumn w zapytaniu nie pasuje do ilosci kolumn w bazie.. jak wyglada ta tabela?
golaod
Nie trzeba się znać na MySQL, żeby wiedzieć co ten błąd reprezentuje. Ty w ogóle wiesz jak wygląda Twoja tabelka podkarpackie ? Podaj mi jej konstrukcję.
Makciek
Baza wygląda tak i jak dla mnie jest ok jeśli chodzi o ilość pól:


A tak wyglądają detale:
pablo_83
przede wszystkim masz złe typy w bazie nie możesz adresu czy maila zapisać w int. W int zapisujesz tylko liczby. Zmień typy na poprawne.
Proponuje zmianę zapisu dodawania do bazy na krótszą (jest bardziej przejrzysta)

$wynik = mysql_query("INSERT INTO podkarpackie (id, adres,tel, e-mail, ...)
VALUES ('$id, ... ----tutaj wartości z formularza')")
or die(mysql_error());

warto też wartością z formularza przypisać zmienne, bo jeśli gdzieś w kodzie bedziesz chciał jakąś weryfikacje dac czy coś to wpiszesz zmienne sobie po prostu

np.
$id = $_POST['id'];
itp
Makciek
a jaki typ obsługuje i liczby i tekst?
pablo_83
w char możesz zapisać liczby i litery ale to kiepski pomysł. Bo ktoś w nr tel może wpisać Ci wtedy litery i jest lipa.

Co do zmiennych zapytaj google exclamation.gif

"typy zmiennych " i wszystko jasne
Makciek
char dałem wszędzie oprócz telefonu i gg
zaraz zrobię test czy działa

dalej ten sam błąd :/
pablo_83
jeszcze masz źle ustawiony klucz główny w bazie, spróbuj dodać pole IdPodkarpackie typ int i opcje autoincrement, na to pole ustaw primary key, a z id proponuje zmienić nazwę na "nazwa" i usuń z tego pola primary key
Makciek
zrobione i teraz znowu kolumny nie pasują :/:
Column count doesn't match value count at row 1

Błąd jest wtedy kiedy mam dodatkowe pole "IdPodkarpackie" i wtedy kiedy go nie ma sad.gif. Zrobilem wszystko co napisales.
pablo_83
  1. <?php
  2. ("INSERT INTO podkarpackie (id, adres,tel, e-mail, ...)
  3.            VALUES ('$id lub $_POST['id'], ... itd  ----tutaj wartości z formularza')")
  4. ?>


nie deklarujesz kolumn do jakich za zostać wykonany wpis, wskazujesz mu tylko tabele, sprobuj to zmienić na taki jak wyżej...
i zobaczymy

oczywiście $id wykorzystujesz jeśli wcześniej przypisałeś zmienne do danych z formularza
Makciek
TERAZ TAKI BŁĄD:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/www/virtual/iit.cba.pl/ankieta.php on line 8

A TU KOD PHP:
  1. <?php
  2.  
  3. $baza = mysql_connect('serwer', 'login', 'haslo') or die ("Nie moglem sie polaczyc z serwerem");
  4.  
  5.  
  6. $wynik = mysql_query("INSERT INTO podkarpackie (nazwa, adres,tel, mail, www, skype, gg, zagraniczne, wlasciciel)
  7. VALUES ('$_POST['nazwa'], $_POST['adres'], $_POST['tel'], $_POST['mail'], $_POST['www'], $_POST['skype'], $_POST['gg'], $_POST['zagraniczne'], $_POST['wlasciciel']')")
  8.  
  9. mysql_close($baza);
  10.  
  11. ?>
pablo_83
za dużo ' (apostrofów)
  1. <?php
  2. $wynik = mysql_query("INSERT INTO podkarpackie (nazwa, adres,tel, mail, www, skype, gg, zagraniczne, wlasciciel)
  3. VALUES  ($_POST['nazwa'], $_POST['adres'], $_POST['tel'], $_POST['mail'],  $_POST['www'], $_POST['skype'], $_POST['gg'], $_POST['zagraniczne'],  $_POST['wlasciciel'])")
  4. ?>


spróbuj teraz
Makciek
to samo :/

poprawa teraz już tylko błąd :
"
Parse error: syntax error, unexpected T_STRING in /var/www/virtual/iit.cba.pl/ankieta.php on line 8
"
szczabik
Daj tak
  1. <?php
  2. $baza = mysql_connect('serwer', 'login', 'haslo') or die ("Nie moglem sie polaczyc z serwerem");
  3.  
  4.  
  5. $wynik = mysql_query("INSERT INTO podkarpackie
  6. (nazwa, adres,tel, mail, www, skype, gg, zagraniczne, wlasciciel)
  7. VALUES
  8. ('".$_POST['nazwa']."', '".$_POST['adres']."', '".$_POST['tel']."', '".$_POST['mail']."', '".$_POST['www']."', '".$_POST['skype']."', '".$_POST['gg']."',
  9. '".$_POST['zagraniczne']."', '".$_POST['wlasciciel']."')")
  10.  
  11. mysql_close($baza);
  12. ?>
Makciek
EUREKA biggrin.gif yahoo.gif exclamation.gif exclamation.gif exclamation.gif
Działa biggrin.gif
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.