Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Insert w pętli
Forum PHP.pl > Forum > Przedszkole
jacusek
Witam.
Mam przesyłane za pośrednictwem checkboxów id. Chciałem, żeby to id było wpisywane do tabeli. Wpadłem na pomysł, żeby było wpisane przez pętlę. Mam taki kawałek kodu:
  1. <?php
  2.  
  3. include('connect.php');
  4. for($i=0; $i<100; $i++)
  5. {
  6. $_POST['wiz'][$i];
  7.  
  8. $sql='insert into wizytowki_kopia (id_usr,id_pac) values
  9. ('.$_SESSION['id'].',
  10. '.$_POST['wiz'][$i].')';
  11. $res=mysqli_query($mysqli,$sql);
  12. echo $sql.'<br/>';
  13. }

No właśnie. Liczba przekazywanych id będzie różna - na ogół nie większa iż 20 - 25. Aktualnie po wykonaniu kodu (specjalnie zostawiłem echo) pokazuje mi coś takiego:

insert into wizytowki_kopia (id_usr,id_pac) values (4, 6946)
insert into wizytowki_kopia (id_usr,id_pac) values (4, 6957)
insert into wizytowki_kopia (id_usr,id_pac) values (4, )
insert into wizytowki_kopia (id_usr,id_pac) values (4, )
insert into wizytowki_kopia (id_usr,id_pac) values (4, )
......
......
......
insert into wizytowki_kopia (id_usr,id_pac) values (4, )
i tak do 100 linijek. Oczywiście przekazane były tylko 2 id i one wpisują się do bazy. Jednak mnie to nie satysfakcjonuje.
Pomysł na który wpadłem to może w przypadku pętli, w drugim warunku policzyć ile checkboxów zostało zaznaczone, jednak nie bardzo wiem jak to zrobić.
Z kolei następująca opcja o której pomyślałem, też niestety nic nie zmienia
  1. for($i=0; $i<100; $i++)
  2. {
  3. $_POST['wiz'][$i];
  4. if(isset($i)){
  5. $sql='insert into wizytowki_kopia (id_usr,id_pac) values
  6. ('.$_SESSION['id'].',
  7. '.$_POST['wiz'][$i].')';
  8. $res=mysqli_query($mysqli,$sql);
  9. }
  10. if(!isset($i)){
  11. break;
  12. }
  13. echo $sql.'<br/>';
  14. }

Nie wiem czy gdzieś popełniam logiczny błąd w rozumowaniu? Co powinienem zmienić, żeby php generowało tylko te pytania które mnie interesują?
nospor
if(isset($i))
Przecież $i masz zawsze ustawione :/


if (isset($_POST['wiz'][$i]))
i już.


A na przyszłość rób
print_r($_POST['wiz']);
i używaj foreach - wowczas lecisz tylko po tym co jest.
jacusek
Dzięki. Wcześniej na to wpadłem, ale gdzie musiałem mieć jakiś błąd składniowy, albo logiczny bo mi wówczas kompletnie nie szło.
A tak na marginesie jak to można było zrobić z foreach? Bo z tym też kombinowałem, ale nie wymyśliłem.
nospor
Przecież powiedziałem ci:
print_r($_POST['wiz']);

i co widzisz? Widzisz, że jest tam zwykła tablica. A foreach lata po tablicy. Jak nie wiesz jak lata to zajrzyj do manuala - masz tam przykłady i opis.
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.