Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] +[mysql] nie potrafie zapisać kilku wierszy do bazy naraz
Forum PHP.pl > Forum > Przedszkole
srwsio
witam
prowadzę stronę piłkarską i tworzę sobie skrypt typera.
Otóz chodzi mi o to jak zapisać wiele danych do tej samej tabeli. Dokładnie chodzi o typowanie wyniku. tj przykładowo mamy
zespół - zespół wynik : wynik
zespół - zespół wynik : wynik
i teraz po wpisaniu w inputy typowanego przeze mnie wyniku chcę te dwa wiersze wrzucić do bazy danych ,

czy ktoś mi może pomóc
phpion
  1. INSERT INTO nazwa_tabeli (pole1, pole2, ... poleX) VALUES (wartosc11, wartosc12, ... wartosc1X), (wartosc21, wartosc22, ... wartosc2X), ... (wartoscY1, wartoscY2, ... wartoscYX);

gdzie X okresla liczbe kolumn w tabeli, natomiast Y to liczba dodawanych wierszy
srwsio
ok nie sprecyzowałem
chodzi o to że te wiersze meczy do typowania tworzę pętlą ( sa pobierane z bazy tylko nazwy drużyn)
wygląda to tak
  1. <?php
  2. echo "<form action="mojewww?name=typki" method="post"><font class="option">";
  3. echo "<input type="hidden" name="buid" value="$buid" >";
  4. echo "<input type="hidden" name="nuid" value="$nuid" >";
  5. echo "<table cellspacing="0" summary="">";
  6. echo " <thead>";
  7.  echo " <tr>";
  8. echo" <td>Gospodarz</td><td>Gość</td><td>Wynik</td>";
  9. echo" </tr>";
  10.  echo"</thead>";
  11. echo" <tbody>";
  12. while ($row = $db->sql_fetchrow($result2)) {
  13. $gid = intval($row['gid']);
  14. $sid = intval($row['sid']);
  15. $gosp = intval($row['gosp']);
  16. $gosc = intval($row['gosc']);
  17. $daynum = intval($row['daynum']);
  18. echo "<tr>";
  19. $ho=$db->sql_fetchrow($db->sql_query("select name from league_teams where id=$gosp"));
  20. $home=$ho['name'];
  21. $aw=$db->sql_fetchrow($db->sql_query("select name from league_teams where id=$gosc"));
  22. $away=$aw['name'];
  23. $buid = $cookie[0];
  24.  echo "<input type="hidden" name="buid" value="$buid">";
  25.  echo "<input type="hidden" name="gid" value="$gid">";
  26.  echo "<input type="hidden" name="daynum" value="$daynum">";
  27.  echo "<input type="hidden" name="sid" value="$sid">";
  28.  echo "<input type="hidden" name="gosp" value="$gosp">";
  29.  echo "<input type="hidden" name="gosc" value="$gosc">";
  30.  echo " <td>$home </td><td> $away</td><td>";
  31.  echo "<input type="text" name="score1[$i]" size="2" maxlength="2" value="?">";
  32.  echo "<input type="text" name="score2[$i]" size="2" maxlength="2" value="?">";
  33.  echo "</td>";
  34.  echo"</tr>";
  35.  }
  36.  echo"</tbody>";
  37.  echo"</table>";
  38.  echo "<input type="hidden" name="op" value="addbetgame">";
  39. echo "<br /><input type="submit" value="Dodaj"></form>";
  40. ?>


i jak teraz ilość powstałych wierszy bo może być różna zapisac do bazy
mike
To wykonaj tyle insertów ile masz wierszy do zapisania.
Nie do końca wiem w czym masz problem?
srwsio
hm.... pewnie jest to banalne ale dla mnie niezrozumiałe
postaram się wytłumaczyć jaknajdokładniej
baza do której zapisuje wygląda tak
  1. CREATE TABLE `league_bet_games` (
  2. `bgid` int(3) NOT NULL AUTO_INCREMENT,
  3. `buid` int(4) NOT NULL DEFAULT '',
  4. `daynum` int(2) NOT NULL DEFAULT '',
  5. `lnid` int(3) NOT NULL DEFAULT '',
  6. `bscore1` int(2) NOT NULL DEFAULT '',
  7. `bscore2` int(2) NOT NULL DEFAULT '',
  8. `pts` int(10) NOT NULL DEFAULT '',
  9. PRIMARY KEY (`bgid`),
  10. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=1 ;

i teraz tak po kliknięciu na submit/dodaj chcę aby wrzuciło mi do bazy wszystkie rekordy wyciągnięte pętlą , a może być ich nawet 10 np .
i tak mi się wydaje że musze to zrobić foreach lub while tylko nie za bardzo potrafię się za to zabrać.
Niestety nie za bardzo te funkcje rozumiem.
a może mam to zrobić tak??
  1. <?php
  2. INSERT INTO league_bet_season (bgid, buid, daynum, lnid, bscore1, bscore2, pts) VALUES ('', '$buid', '$daynum', '$lnid', '$score1[$i]', '$score2[$i]', '' );
  3. ?>
sticker
a w mysql > 5 można już dodać kilka wierszy jednym zapytaniem, przykład poniżej:

INSERT INTO `tabelka` VALUES ('1', '1', '1', '1', '1', '1', '12.00', '0000-00-00', 0),
('', '', '', '', '', '', '0.00', '0000-00-00', 0),
('2', '2', 'qe', 'qweqweqw', 'eqwe', '', '0.00', '0000-00-00', 0);

btw. wie ktos jak w mysql zrobić prepared statement? (czy moze nie ma jeszcze takiej możliwości)
srwsio
w wersji mysql > 4 też można
btw a co ma Twój post związanego z moim??
sticker
Mike napisał To wykonaj tyle insertów ile masz wierszy do zapisania.

Cytat
w wersji mysql > 4 też można
btw a co ma Twój post związanego z moim??


a ja mowie że można w jednym :]

dzięki za sprostowanie w sprawie inserta wieloargumentowego tyle ze ja to probowałem zrobić na mysql 4 i nie dałem rady hmm
srwsio
Cytat
Mike napisał To wykonaj tyle insertów ile masz wierszy do zapisania

no dobra ale jak questionmark.gif
jak bym wiedizął jak to bym to zrobił - logiczne nie questionmark.gif sorki za zgryźliwość no ale jeśli zadaje pytanie to raczej dlatego ze nie znam odpowiedzi
zabacz tutaj Temat: formularz checkboxmysqlphp -> zadałem pytanie i teraz wiem potrafię to zrobić
free
Po nazwach tabel i zmiennych widze ze to nie twoj skrypt, wiec radze
- napisac swoj wlasny - ciezko poprawiac i modyfikowac kogos obszerny kod
- skorzystac z czyjegos kodu, ktory bedzie ci wpełni odpowiadal
srwsio
Cytat
Po nazwach tabel i zmiennych widze ze to nie twoj skrypt, wiec radze
- napisac swoj wlasny - ciezko poprawiac i modyfikowac kogos obszerny kod
- skorzystac z czyjegos kodu, ktory bedzie ci wpełni odpowiadal

to jest mój własny skrypt, dlaczego sądzisz że jest nie mój nie wiem ale nie o tym jets ten topic
ja chcę tylko uzyskać konkretną odpowiedź z przykładem jak to ma wyglądać
btw. i już nie przeciągajcie proszę bo się off robi
phpion
Tak jak Mike ci napisal - co petla INSERT - albo tak jak ja - w jednym zapytaniu. Wtedy po prostu tworz zapytanie dynamicznie tzn. dopisuj do niego kolejne wartosci (operator .=) i dopiero po wyjsciu z petli wykonaj mysql_query(). Chyba lepiej wykonac 1 zapytanie (dluzsze) niz kilka(nascie) krotszych.
srwsio
phpion.com a mógłbyś podać wzór przykładowy lub obojętnie kto jak to zrobić konkretnie - uwierzcie ja jestem naprawdę laikiem i osobą która do póki nie zobaczy jak to działa nie zrozumie - wiem sa manuale ale one tylko mówią co dana funkcja robi - niestety nie potrafię się w tym połapać
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.