Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] pobieranie z mysql w tablice
Forum PHP.pl > Forum > Przedszkole
ukaszq
W bazie danych mysql znajduje sie 5 rekordow przy wywolaniu poniższego zapytania. Chce zrobic tak, aby pobierał mi nazwe pierwszego rekordu, nastepnie drugiego, a jesli nastapi jakis warunek aby przerywal.
Kiedy wpisalem taka petle to nie mi nie wychodzi. Chyba cos nie tak z tablicami, tylko nie wiem co...?


  1. <?php
  2. $z1=mysql_query("select * from magazyn.surowce_mag where kod='$kodzik1' order by dataprzyj asc");
  3.  
  4. $t=0;
  5. while(($za1 = mysql_fetch_array($z1)) !== false ) {
  6. echo $za1[$t]['nazwa'];
  7. $t++; 
  8. }
  9. ?>
JoShiMa
To raczej powinno wyglądać tak:

  1. <?php
  2. $z1=mysql_query("select * from magazyn.surowce_mag where kod='$kodzik1' order by dataprzyj asc");
  3.  
  4. while(($za1 = mysql_fetch_array($z1)) !== false ) {
  5. echo $za1['nazwa'];
  6. }
  7. ?>


A w ogóle to może być zapisane prościej:
  1. <?php
  2. $z1=mysql_query("select * from magazyn.surowce_mag where kod='$kodzik1' order by dataprzyj asc");
  3.  
  4. while($za1 = mysql_fetch_array($z1)) {
  5. echo $za1['nazwa'];
  6. }
  7. ?>


Oczywiście zmienną $t możesz sobie inkrementować jeśli jest Ci do czegoś potrzebna. Na pewno nie jest potrzebna do odczytywania rekordów. Zmienna $za1 jest jednowymiarową tablicą zawierającą wszystkie pobrane pola z jednego rekordu. Funkcja mysql_fetch_array pobiera jeden rekord wrzuca do tej tablicy i ustawia się na następnym i przy następnym przebiegu pętli pobiera kolejny rekord itd.
pawella
Sprawdź w manualu co zwraca mysql_fetch_array bo to na pewno nie jest tablica wielowymiarowa!

  1. <?php
  2. var_dump($za1);
  3. ?>



  1. <?php
  2. while(($za1 = mysql_fetch_array($z1))) 
  3. {
  4.  
  5.  if($stop === true ) 
  6.  {
  7.  break;  
  8.  }
  9.  
  10.  echo $za1['nazwa'];
  11.  
  12. }
  13. ?>


Pozdrawiam
ukaszq
To wiem! Tylko ze jest taki problem ze potrzebuje pobrac najpierw pierwszy rekord, sciagnac z niego stan magazynowy, a pozniej nastepny (jesli jest poterzba) dlatego potrzebuje sobie to wydzielic na kazdy rekord. Bo tak to nie mam wplywu czy jest to pierwszy, czy drugi rekord. Tak??
Nie moge kontrolowac czy ten rekord jest pierwszy? Wyswietla mi wszystkie, a tak nie chce!
xbigos
jesli chcesz miec warunek to poprostu w WHILE dajesz IF i odpowiednio sobie sprawdzasz wedle zachcianek:) Najlepiej powiedz co chcesz dokładnie osiągnąć
pawella
Cytat(ukaszq @ 4.04.2008, 07:53:48 ) *
To wiem! Tylko ze jest taki problem ze potrzebuje pobrac najpierw pierwszy rekord, sciagnac z niego stan magazynowy, a pozniej nastepny (jesli jest poterzba) dlatego potrzebuje sobie to wydzielic na kazdy rekord. Bo tak to nie mam wplywu czy jest to pierwszy, czy drugi rekord. Tak??
Nie moge kontrolowac czy ten rekord jest pierwszy? Wyswietla mi wszystkie, a tak nie chce!


to wrzuć dane do tablicy

  1. <?php
  2. $dane = Array();
  3. $i = 1;
  4.  
  5. while($r = mysql_fetch_array($res)) {
  6. $dane[$i] = $r;
  7. $i++;
  8. }
  9.  
  10.  
  11.  
  12. $i = 1;
  13. foreach ($dane as $k => $v) {
  14. $n = $k - 1;
  15. echo $dane[$i]['name'];
  16. echo $dane[$n]['name'];
  17. }
  18. ?>


Edit
oczywiście w for będzie szybciej
JoShiMa
Cytat(ukaszq @ 4.04.2008, 07:53:48 ) *
To wiem! Tylko ze jest taki problem ze potrzebuje pobrac najpierw pierwszy rekord, sciagnac z niego stan magazynowy, a pozniej nastepny (jesli jest poterzba) dlatego potrzebuje sobie to wydzielic na kazdy rekord. Bo tak to nie mam wplywu czy jest to pierwszy, czy drugi rekord. Tak??
Nie moge kontrolowac czy ten rekord jest pierwszy? Wyswietla mi wszystkie, a tak nie chce!

Co to znaczy "kontrolować czy ten rekord jest pierwszy"?

Jak już radził Ci ktoś. Wczytaj jeden rekord. Sprawdź sobie warunek jaki tam chcesz i w zależności od tego czy ma czytać dalej czy nie to używasz break do przerwania pętli while i po krzyku.
net-pl
  1. <?php
  2. //Kod
  3. while($row=mysql_fetch_assoc($wyniksql)) {
  4. if($row['cos'] == '1') echo $row['cos']; /*Twoje kontrolowanie*/ 
  5. }
  6. ?>
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.