Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql] ala wyszukiwarka, problem z wynikami
-Glacier-
post 13.12.2007, 20:05:36
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 smile.gif
Go to the top of the page
+Quote Post
marcio
post 13.12.2007, 20:15:36
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


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
glacier
post 13.12.2007, 20:26:33
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 sad.gif

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

I tu tkwi problem sad.gif

Ten post edytował glacier 13.12.2007, 20:28:19
Go to the top of the page
+Quote Post
marcio
post 13.12.2007, 20:29:32
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


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
glacier
post 14.12.2007, 18:02:07
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 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

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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 20:18