Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Dodanie do bazy kilku wpisów naraz
Forum PHP.pl > Forum > Przedszkole
Nidrax
Moje pytanie może się wydać banalne, ale nie orientuję się jeszcze w składni wstydnis.gif

Mam następujący kod:
  1. // dodajemy rekord do bazy
  2. $ins = @mysql_query("INSERT INTO mybb_quiz1 SET Odp1='$odp1'");
  3.  
  4. if($ins) echo "<div style='text-align: center; margin: 0 auto;'><br />Dziękujemy za wzięcie udziału w quizie<br /><br /></div>";
  5. else echo "<div style='text-align: center; margin: 0 auto;'><br />Błąd, nie udało się przesłać formularza<br /><br /></div>";
  6.  
  7. mysql_close($polacz);
  8. }

Odpowiedzialny za dodanie wpisu do bazy. Chciałbym jednak dodać naraz 11 wpisów i nie wiem jak można to zrobić bez dodawania dziecięciu kolejnych ifów.
kamaZ
wpisy maja byc wszystkie te same ?
Jezeli tak - to uzyj pętli "for"
Nidrax
Cytat(kamaZ @ 17.04.2011, 16:01:09 ) *
wpisy maja byc wszystkie te same ?

Nie, po wpisie dla każdego z jedenastu pól formularza.
Hpsi
jak masz ustawione dane? , jak wyglada tabela?
najprosciej jak juz powiedziano wczeniej uzyc for

Tj chodzi mi o to
$odp1, $odp2 etc? czy jak masz to ustawione, jak wyglada tabela sql bo trudno sie domyslec jak zapytania by mialy wygladac nie znajac struktury
Nidrax
Zupełnie nie łapię działania pętli for... z tego co rozumiem, inicjuje zmienną, sprawdza warunek i modyfikuję zmienną, ale jak to ugryźć?

Zmienne:
  1. $odp1 = $_POST['Odp1'];
  2. $odp2 = $_POST['Odp2'];
  3. $odp3 = $_POST['Odp3'];
  4. $odp4 = $_POST['Odp4'];
  5. $odp5 = $_POST['Odp5'];
  6. $odp6 = $_POST['Odp6'];
  7. $odp7 = $_POST['Odp7'];
  8. $odp8 = $_POST['Odp8'];
  9. $odp9 = $_POST['Odp9'];
  10. $odp10 = $_POST['Odp10'];
  11. $username = {$mybb->user['username']};
Hpsi
daj strukture bazy danych to tez sie przyda.

co do opodiwedzi, jesli tak juz chcesz je wrzucac, wrzuc w tablice
  1. $odp[] = $_POST['odp1'];
  2. $odp[] = $_POST['odp2'];
  3. //.....
  4. $odp[] = $_POST['odp10'];

W ten sposób latwiej będzie ci działać dalej (przynajmniej wg mnie).

Idąc dalej jak zastosować tutaj fora?
przy zalozeniach ze zminialeś na tablice odp
  1. for($x=0;$x<10;$x++)
  2. {
  3. $ins = mysql_query('INSERT INTO mybb_quiz1 SET Odp1="'.$odp[$x].'");
  4. // tylko że, za każdym razem będzie ci robił wpis do pola odp1 - nie wiem jaka jest struktura to tak zrobiłem
  5. }


i po co skasowałeś kod strony przyda się w czasie analizy wink.gif i ponownie -- wklej strukturę tabeli mybb_quiz1
Nidrax
Tabela MySQL to:
Kolumna id, z auto incrementem
kolumna username, varchar(120)
i potem kolumny Odp1 do Odp 10, o maksymalnej ilości 5 znaków.
Hpsi
Cytat
A tabela, jak tabela, nic specjalnego:
Kolumna id, z auto incrementem
kolumna username, varchar(120)
i potem kolumny Odp1 do Odp 10, o maksymalnej ilości 5 znaków.

to w ten sposob zmyliles, jesli masz baze o takiej strukturze to dlaczego chcesz 10 razy wykonywac to zapytanie ? dodawaj po przecinku kolejne wartosci
np:

  1. $ins = mysql_query('INSERT INTO mybb_quiz1 SET Odp1="'.$odp[0].'",Odp2="'.$odp[1].'", Odp3="'.$odp[2].'", Odp4="'.$odp[3].'" Odp5="'.$odp[4].'", Odp6="'.$odp[5].'", Odp7="'.$odp[6].'", Odp8="'.$odp[7].'", Odp9="'.$odp[8].'", Odp10="'.$odp[9].'" );



kolejna sprawa w przypisaniu w tablic jak robisz
$odp[] = $_POST['Odp1']; // uwazaj na wielkosc znakow bo ja wczniej nie uwzględnilem jej i by mogl byc blad - dodawac pustke wink.gif
btw, sorry nie domknelem wyzej jednego apostrofu

pozatym wg mnie tworzenie kolejnej zmiennej typu $odp (obojetnie w jaki typ bylby to) jest bezensu, skoro mozesz wrzucic w zapytanie set odp1="'.$_POST['Odp1'].'" . w ten sposob nie marunujesz niepotrzebnie pamieci ...
Bags_Bunny
mysql_real_escape_string!
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.