Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] ala wyszukiwarka
Forum PHP.pl > Forum > Przedszkole
Glacier
Witam,

Nie będę się rozpisywał jaki to ciemny w tematyce php i sql jestem, bo to bez sensu, po prostu jestem i tyle - zaczynam dopiero to robić. Do sedna na czym polega problem:

Stworzyłem trzy tabele: drops, drop_list, mobs

W pierwszej tabeli dwa pola: mob_id, mob_name
W drugiej tabeli dwa pola: mob_idd, drop_idd
W trzeciej tabeli dwa pola: drop_id, drop_name

Wprowadzam do pierwszej tabeli rekordy: [1]kot, [2]pies, [3]krowa
Wprowadzam do trzeciej tabeli rekordy: [1]mleko, [2]kosc
Za pomocą formularza w drugiej tabeli umieszczam id dropa i id moba:

mob_idd drop_idd
[1] [1]
[2] [2]
[3] [1]

Kod wyszukiwarki:

  1. <?php
  2.  
  3. require_once("polaczenie_sql.php");
  4.  
  5.  
  6. if($stan=='szukaj') {
  7.  
  8. $zapytanie = "SELECT * FROM `drops` where `drop_name`='$znajdz'";
  9. $wykonaj = mysql_query ($zapytanie);
  10. while($wiersz=mysql_fetch_array ($wykonaj)) {
  11.  
  12. $wynikdropu = $wiersz['drop_id'];
  13. echo " <b> $wynikdropu </B> ";
  14. }
  15.  
  16. $pytam2 = "SELECT * FROM `drop_list` where `drop_idd`='$wynikdropu'";
  17. $wykonaj2 = mysql_query ($pytam2);
  18. while($wiersz2=mysql_fetch_array ($wykonaj2)) {
  19.  
  20. $wynikdropu2 = $wiersz2['mob_idd'];
  21.  
  22. echo " <i> $wynikdropu2 </I> ";
  23.  
  24. }
  25.  
  26. $pytam3 = "SELECT * FROM `mobs` where `mob_id`='$wynikdropu2' ";
  27. $wykonaj3 = mysql_query ($pytam3);
  28. while($wiersz3=mysql_fetch_array ($wykonaj3)) {
  29.  
  30.  
  31. $wynikdropu3 = $wiersz3['mob_name'];
  32.  
  33. echo " <u> $wynikdropu3 </U> ";
  34. }
  35.  
  36.  
  37.  
  38. }
  39.  
  40. else {
  41. echo "<center><br><form method=\"get\" action=\"szukaj.php\"><input type=\"text\" name=\"znajdz\" size=\"20\"><br><input type=\"submit\" value=\"szukaj\" name=\"stan\"></form></center>";
  42. }
  43.  
  44. ?>


Dziala to tak że po wpisaniu np kość skrypt znajduje przypisany jej ID, przechodzi do tabeli drop_list tam szuka tego ID dając wynik mob_idd, następnie za pomocą mob_idd znajduje mi w tabeli mob_id ID tego moba i wyswietla jego nazwę.

Problem w tym, że jeśli wpiszę mleko, to wyszukiwarka oddaje wynik, ale tylko ostatni, i nie wyswietla mi wyniku końcowego typu kot krowa, tylko samo krowa.

Może jakieś sugestie co robię źle? Jakieś podpowiedzi?

PS. dział przedszkole jest świetnym pomysłem smile.gif
marcio
jesli operujesz tylko na jednym wynikiem z bazy to while jest nie potrzebne i jesli uzywasz takich index'ow ['nazwa'] to zamiast mysql_fetch_array() uzywaj mysql_fetch_assoc() ale to zalezy od gustu nie ma roznicy
glacier
Cytat(marcio @ 13.12.2007, 20:15:36 ) *
jesli operujesz tylko na jednym wynikiem z bazy to while jest nie potrzebne i jesli uzywasz takich index'ow ['nazwa'] to zamiast mysql_fetch_array() uzywaj mysql_fetch_assoc() ale to zalezy od gustu nie ma roznicy


Chodzi o to, że nie jest to jeden wynik. W praktyce wygląda to następująco.

Wpisuje do wyszukiwarki "mleko", po pierwszym przeszukaniu otrzymuje wynik "1", skrypt idzie sobie dalej i przy kolejnym poszukiwaniu w tabeli drop_list znajduje mi już dwa wyniki "1" i "3", w trzeciej części skryptu powinienem otrzymać wynik odpowiadający polu mob_id czyli [1]kot i [3]krowa, a niestety otrzymuje tylko [3]krowa sad.gif

Skrypt tak jakby omijał wynik wcześniejszy (czyli [1]kot) i generuje tylko ostatni ([3]krowa)

I tu tkwi problem sad.gif
marcio
a moze program sie zapetla i dlatego tak jest czytalem ze przy jednym wyniku lepiej nie uzywac while bo sa dziwne wyniki a ty operujesz na jednej rzeczy
  1. <?php
  2. while($wiersz3=mysql_fetch_array ($wykonaj3)) {
  3.  
  4.  
  5. $wynikdropu3 = $wiersz3['mob_name'];
  6.  
  7. echo " <u> $wynikdropu3 </U> ";
  8. }
  9. ?>

Widzisz pracujesz tylko na $wynikdropu3 = $wiersz3['mob_name'];
glacier
Problem rozwiązany. Jak widzę, nauka php czy mysql to dużo kombinowania i pracy na zasadzie prób i błędów smile.gif

ZMieniony i działający kod wygląda tak:

Kod
<?php

require_once("polaczenie_sql.php");


if($stan=='szukaj') {

$zapytanie = "SELECT * FROM `drops` where `drop_name`='$znajdz'";
$wykonaj = mysql_query ($zapytanie);
while($wiersz=mysql_fetch_array ($wykonaj)) {

$wynikdropu = $wiersz['drop_id'];

}

[ZMIANA]
$pytam2 = "SELECT * FROM `drop_list`, `mobs` WHERE `drop_idd`='$wynikdropu' AND `mob_id`=`mob_idd` ORDER BY mob_lvl";
[/ZMMIANA]
$wykonaj2 = mysql_query ($pytam2);
while($wiersz2=mysql_fetch_array ($wykonaj2)) {



echo " </TR>";
}

}

else {
echo "<center><br><form method=\"get\" action=\"index.php\"><input type=\"text\" name=\"znajdz\" size=\"20\"><br><input type=\"submit\" value=\"szukaj\" name=\"stan\"></form></center>";
}

?>


temat można zamknąć smile.gif pomogłem sobie sam tongue.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.