Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] wyciaganie danych z bazy
Forum PHP.pl > Forum > Przedszkole
kebq
witam,
oto fragment mojego "kodu" powodujący problemy, zaznaczam ze jestem początkujący
  1. <?php
  2. $getWord=mysql_query("SELECT nazwisko,imie,memo,adres FROM dziennik WHERE nazwisko LIKE '$letter%' ORDER BY nazwisko", $db);
  3.  
  4. if($getWordArray=mysql_fetch_array($getWord))
  5. {
  6. echo "Oto wyniki wyszukiwania dla litery <b>$letter</b><br><dl>";
  7. do
  8. {
  9. echo "<br><dt><b>";
  10. printf($getWordArray["nazwisko"]);
  11. echo "</b></dt><dd>";
  12. printf($getWordArray["imie"]);
  13. echo "</b></dt><dd>";
  14. printf($getWordArray["adres"]);
  15. echo "</b></dt><dd>";
  16. printf($getWordArray["memo"]);
  17. echo "</dd>";
  18. }
  19. while($getWordArray=mysql_fetch_array($getWord));
  20. echo "</dl>";
  21. }
  22. else
  23. {
  24. echo "Niestety, nie ma na razie uczniów na literę <b>$letter</b>";
  25. }
  26. ?>


z niewiadomych przyczyn drukuje mi tylko pola nazwiska i memo
dlaczego?
gebp
zajrzyj:
if
while

  1. <?php
  2. ...
  3. $getWordArray=mysql_fetch_array($getWord)
  4. if($getWordArray!="")
  5. {
  6. echo "Oto wyniki wyszukiwania dla litery <b>$letter</b><br>
  7. <table >
  8. <tr>
  9. <td>Nazwisko</td>
  10. <td>imie</td>
  11. <td>adres</td>
  12. <td>memo</td>
  13. </tr";
  14. while($getWordArray=mysql_fetch_array($getWord));
  15. { $nazwisko=$getWordArray["nazwisko"];
  16.  $imie=$getWordArray["imie"];
  17.  $adres=$getWordArray["adres"];
  18.  $memo=$getWordArray["memo"];
  19.  echo"<tr>
  20.  <td>$nazwisko</td><td>$imie</td><td>$adres</td><td>$meme</td>
  21.  </tr>";
  22.  }
  23. echo"</table>";
  24.  
  25. }
  26. else ...
  27. ?>
kebq
po zmianie drukuje mi tylko część tabeli z "Nazwisko imie adres memo" a nie wartości tych zmiennych :|
tzn cześć gdzie powinny być wartości zmiennych są puste


btw po
  1. <?php
  2. $getWordArray=mysql_fetch_array($getWord)
  3. ?>
postawiłem średnik bo wywalało parse error smile.gif
gebp
Mój błąd (tak to jest jak się je i pisze), ale jakbyś zajrzał do manual to byś wiedział.

Zamień
  1. <?php
  2. $nazwisko=$getWordArray["nazwisko"]; // błędne !!!
  3. $nazwisko=$getWordArray['nazwisko']; // poprawne
  4. ?>


Cytat
  1. <?php
  2. $getWordArray=mysql_fetch_array($getWord)
  3. ?>

Faktycznie mój błąd

Jak by były problemy wyświetl sobie co zawiera $getWordArray
  1. <?php
  2. print_r($getWordArray);
  3. ?>


Powinno pomóc.
Kicok
To nie ma znaczenia czy pisze się $tablica['klucz'] czy $tablica["klucz"]. W tym przypadku problemy stwarza średnik umieszczony zaraz za instrukcją while()
kebq
ale nawet usuwając średnik na końcu
  1. <?php
  2. while($getWordArray=mysql_fetch_array($getWord));
  3. ?>

wyrażenie
  1. <?php
  2. while($getWordArray=mysql_fetch_array($getWord))
  3. { $nazwisko=$getWordArray['nazwisko'];
  4.  $imie=$getWordArray['imie'];
  5.  $adres=$getWordArray['adres'];
  6.  $memo=$getWordArray['memo'];
  7.  echo"<tr>
  8.  <td>$nazwisko</td><td>$imie</td><td>$adres</td><td>$memo</td>
  9.  </tr>";
  10. ?>

nie drukuje mi wartości zmiennych
dlaczego?
gebp
a sprawdziłeś czy mysql_fetch_array($getWord) coś pobiera questionmark.gif?
Jeżeli pobiera to powinno wyświetlić. Tak jak proponowałem sprawdź co zawiera tablica
  1. <?php
  2. $getWordArray=mysql_fetch_array($getWord);
  3. print_r ($getWordArray);
  4. ?>

Może jest błąd w zapytaniu i nie pobiera żadnych wyników.
Co do drukowania, to wyświetl sobie każdą zmienną
  1. <?php
  2. $nazwisko=$getWordArray['nazwisko'];
  3. echo ($nazwisko);
  4. ?>

Jeżeli pokaże się coś to możesz jeszcze zrobić to tak:
  1. <?php
  2. echo"<tr>
  3. <td>".$nazwisko."</td><td>".$imie."</td><td>".$adres."</td><td>".$memo."</td>
  4. </tr>";
  5. ?>

Choć ten wcześniejszy zapis też powinien być poprawny.
Ostatnie co przychodzi mi na myśl to to iż $getWordArray=mysql_fetch_array($getWord) jest puste i pętla while nie wykonuję się.
Sprawdź to, tzn czy nie jest pusta.
kebq
drukuje sobie zawartość pętli w ten sposób:
  1. <?php
  2. echo '<pre>';
  3. print_r($getWordArray);
  4. echo '</pre>';
  5. ?>

i widać że wartości są
sprawdzę jeszcze $getWordArray=mysql_fetch_array($getWord)
aha zaznaczam że korzystam z pakietu krasnala (którego nie lubię jednak warunkiem jest że "to" ma działać na krasnalu :/)

stara konstrukcja:
  1. <?php
  2. $getWordArray=mysql_fetch_array($getWord);
  3. if($getWordArray!="")
  4. {do
  5. {
  6. echo "<br><dt><b>";
  7. printf($getWordArray['nazwisko']);
  8. echo "</b></dt><dd>";
  9. printf($getWordArray['imie']);
  10. echo "</b></dt><dd>";
  11. printf($getWordArray['adres']);
  12. echo "</b></dt><dd>";
  13. printf($getWordArray['memo']);
  14. echo "</dd>";
  15. }
  16. while($getWordArray=mysql_fetch_array($getWord));
  17. echo "</dl>";
  18. }
  19. ?>

po tych poprawkach działa całkiem sprawnie smile.gif
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.