Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Nie działająca pętla :(
Forum PHP.pl > Forum > Przedszkole
natomiast
Witam,
Nie wiem patrze sie w to od dwóch dni i nie wiem czemu tak jest. Mam coś takiego:
  1. <?php>
  2.  $j=1;
  3.  $i=1;
  4. require "./konekt.inc";
  5.  
  6. $w= mysql_query ("SELECT nazwa_przedmiotu FROM przedmioty ORDER BY nazwa_przedmiotu");
  7.  echo '<table border="0">';  //dane pobrane z bazy wyświetlane sa za pomocą tablei
  8. while($xx=mysql_fetch_assoc($w))
  9.  {
  10. echo '<tr>';
  11.  $przedmiot_nazw[$j]=$xx["nazwa_przedmiotu"];
  12. echo '<td width="10px"><input type="checkbox" name="'.$i.'" /"></td>';
  13. echo '<td width="150px" ><b>'.$xx["nazwa_przedmiotu"].'</b></td>';
  14. $j++;
  15. $i++;
  16. echo '</tr>';
  17. }
  18.  echo'</table>';
  19.  ?>

rzecz w tym, że nie działa mi pętla for.
  1. <?php
  2. if($_POST["dodaj_nauczyciel"])
  3. {
  4. generuj_id(5);
  5. mysql_query("INSERT INTO users(username, password, redirect) VALUES('".$_POST["nazwisko_nauczyciela"]."','".$id."','/nauczyciel.php')");  
  6. mysql_query ( "INSERT INTO nauczyciel(naucz_id, imie, nazwisko, adres, telefon) values( '".$id."','".$_POST ["imie_nauczyciela"]."','".$_POST ["nazwisko_nauczyciela"]."','".$_POST ["adres_nauczyciela"]."','".$_POST ["telefon_nauczyciela"]."') ");
  7.  
  8. echo 'Identyfikator logowania dla nauczyciela: '.$_POST["nazwisko_nauczyciela"].'<br />';
  9. echo 'Hasło logowania: '.$id;
  10.  
  11.  for($i=1;$i<10;$i++)
  12.  {
  13. if($_POST[$i]=="on")
  14. {
  15. mysql_query("INSERT INTO przedmioty_n(naucz_id, przedmiot) VALUES('".$id."','".$przedmiot_nazw[$i]."') ");
  16. }
  17. }
  18. }
  19. ?>

jeśli zaznaczy się np 4 pozycje to zapytanie w pętli wykona się tylko dla pierwszej napotkanej pozycji, która jest zaznaczona i ....koniec pozostałych trzech nie wpisuje. Mam podobną konstrukcję w innym pliku i tam działa to bez problemu. Pewnie to jak zwykle błachstka, ale cóż takie rzeczy chyba najtrudniej znaleźć :/
Dzieki za pomoc Pzdr
JoShiMa
A wyświetl sobie przed tą pętlą
  1. <?php
  2. var_dump{$_POST[$i]}
  3. ?>


albo przed ifem

  1. <?php
  2. echo $_POST[$i]
  3. ?>


I zobacz, czy warunek: if($_POST[$i]=="on") ma szanse być spełniony we wszystkich przypadkach w których byś chciał.
natomiast
  1. <?php
  2. for($i=1;$i<10;$i++)
  3.  { echo $_POST[$i];
  4.  //  if($_POST[$i]=="on")
  5.  // {
  6.  
  7. mysql_query("INSERT INTO przedmioty_n(naucz_id, przedmiot) VALUES('asdf','asdf') ");
  8.  // }
  9. }
  10. ?>

Nie wyświetla żadnych wyników sad.gif. Leo WHY?
sniezny_wilk
Cytat(natomiast @ 11.06.2008, 08:22:38 ) *
  1. <?php
  2. for($i=1;$i<10;$i++)
  3.  { echo $_POST[$i];
  4.  //  if($_POST[$i]=="on")
  5.  // {
  6.  
  7. mysql_query("INSERT INTO przedmioty_n(naucz_id, przedmiot) VALUES('asdf','asdf') ");
  8.  // }
  9. }
  10. ?>

Nie wyświetla żadnych wyników sad.gif. Leo WHY?


Zrób jak radziła JoShiMa. A czemu $_POST[$i] ? nie powinno być $_POST['nazwa_pola'][$i] ?
JoShiMa
Cytat(sniezny_wilk @ 11.06.2008, 08:24:31 ) *
nie powinno być $_POST['nazwa_pola'][$i] ?

To chyba tylko autor wie. Żeby to zgadnąć trzeba by było poznać formularz, który wysyła dane do $_POST.

Cytat(natomiast)
Nie wyświetla żadnych wyników sad.gif. Leo WHY?

Pewno dlatego, że $_POST[$i] = NULL.
natomiast
Link do kodu do całej strony:
http://areksmolarek.republika.pl/naucz.php
JoShiMa
Faktycznie powinno być $_POST[$i] a może $_POST['$i'] ?

A możesz podejrzeć jak wygląda kod HTML (źródło strony), kiedy wyświetlasz na niej formularz?
natomiast
Źródło strony po wyświetleniu formularza:
http://areksmolarek.republika.pl/widok.php
Próbowałem juz opcji $_POST[$i], $_POST['$i'], $_POST["$i"] i nic sad.gif
batman
@natomiast
1.
  1. <?php
  2. echo '<td width="10px"><input type="checkbox" name="pole'.$i.'" value="1" /"></td>';
  3. ?>

2.
  1. <?php
  2. foreach($_POST as $k => $v) {
  3.  
  4. if(strstr($k, 'pole') !== false && (int)$v == 1) {
  5. // wykonujesz zapytanie
  6. }
  7. }
  8. ?>
natomiast
Niestety nadal wykonuje zapytanie tylko raz. sciana.gif sad.gif axesmiley.png
batman
A ile checkboxów zaznaczasz?
natomiast
wszystkich mam w tej chwili 8 ale zaznaczam róznie 2,3, 4 ..... dodaje pierwszy zaznaczony a reszty nie
batman
A skąd bierze się ta zmienna: $przedmiot_nazw?
natomiast
Link do kodu całej strony

http://areksmolarek.republika.pl/naucz.php

A tu link do strony króta działa z podobnym mechanizmem
http://areksmolarek.republika.pl/oceny.php

Nie, wiem ja nie widze różnicy pomiędzy obiema stronami która powoduję ze to nie działa
JoShiMa
A zrobiłeś tak jak Ci napisałam:
  1. <?php
  2. var_dump{$_POST[$i]}
  3. ?>

Przed pętlą for?
nospor
A skad wiesz ze dziala ci tylko raz? Tylko jeden insert do bazy sie wykonal? To może wykonalo sie wiele razy, ale poprostu pozostale inserty byly bledne. Sprawdz to.
Pozatym nie: $_POST[$i]=="on" a isset($_POST[$i])
Raz ze nie generuje masy noticow, ktore teraz c sie generuja, dwa ze "on" nie zawsze jest.
  1. <?php
  2. for($q=1;$q<30;$q++)
  3. {
  4. if(isset($_POST[$q]))
  5. {
  6. mysql_query("INSERT INTO przedmioty_n(naucz_id, przedmiot) VALUES('".$id."','".$przedmiot_nazw[$q]."') ") or die (mysql_error());
  7.  }
  8. }
  9. ?>
JoShiMa
Oczywiście możesz sobie ułatwić sprawę i zamiast
  1. <?php
  2. <input type="checkbox" name="'.$i.'" /">
  3. ?>


dać

  1. <?php
  2. <input type="checkbox" name="przedmiot['.$i.']"/">
  3. ?>


Wtedy w pętli for będziesz się odwoływał do zmiennej nie tak:
  1. <?php
  2. if($_POST[$i]=="on")
  3. ?>


tylko tak:
  1. <?php
  2. if($_POST['przedmiot'][$i]== 'on')
  3. ?>
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.