Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql] ala wyszukiwarka, problem z wynikami
-Glacier-
post
Post #1





Goście







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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
marcio
post
Post #2





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post
glacier
post
Post #3





Grupa: Zarejestrowani
Postów: 17
Pomógł: 1
Dołączył: 13.12.2007

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

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

I tu tkwi problem (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Ten post edytował glacier 13.12.2007, 20:28:19
Go to the top of the page
+Quote Post
marcio
post
Post #4





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


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'];

Ten post edytował marcio 13.12.2007, 20:30:13
Go to the top of the page
+Quote Post
glacier
post
Post #5





Grupa: Zarejestrowani
Postów: 17
Pomógł: 1
Dołączył: 13.12.2007

Ostrzeżenie: (0%)
-----


Problem rozwiązany. Jak widzę, nauka php czy mysql to dużo kombinowania i pracy na zasadzie prób i błędów (IMG:http://forum.php.pl/style_emoticons/default/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ąć (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) pomogłem sobie sam (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Ten post edytował glacier 14.12.2007, 18:04:51
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 17:21