Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][mysql] wyswietlanie danych z bazy, nie dziala a pozniej dziala i tak w kolko
wupasek
post 1.03.2008, 18:00:50
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 28.11.2003

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


Witam
Problem jest taki mam nastepujacy kod (show3.php)
  1. <?
  2.  
  3. //FORMULARZ WYBORU KATEGORII
  4. echo "<form method='POST' action='show3.php?ogl=$rodzaj_id' ENCTYPE='multipart/form-data'>
  5. <table width=550 align=center>
  6. <tr><td width=400>Wybierz rodzaj ogłoszenia:</td><td>
  7. <select NAME='rodzaj_id' >
  8. <option value='5' >Wybierz wszystkie</option>
  9. <option value='1' >Sprzedam samochód</option>
  10. <option value='2' >Kupię samochód</option>
  11. <option value='3' >Sprzedam części</option>
  12. <option value='4' >Kupię części</option>
  13. </select></td></tr>
  14. <tr><td width=150></td><td width=400>
  15.  <INPUT TYPE='submit' VALUE='Wybierz'>
  16. </td></tr></table></form>";
  17.  
  18. //POBIERANIE ID KATEGORII
  19. if ($_GET['ogl']==$rodzaj_id) 
  20. {
  21. //OKRESLANIE ZMIENNYCH
  22.  $user = "login";
  23.  $pass = "haslo";
  24.  $database = "baza";
  25.  $rodzaj_id = $_POST['rodzaj_id'];
  26.  $ogl_img1 = $_POST['ogl_img1'];
  27.  $ogl_nazwa_img1 = $_POST['ogl_nazwa_img1'];
  28.  $ogl_nazwa_img1 = $_FILES['ogl_img1']['name'];
  29.  $ogl_nazwa_img2 = $_POST['ogl_nazwa_img2'];
  30.  $ogl_nazwa_img3 = $_POST['ogl_nazwa_img3'];
  31.  $ogl_nazwa_img4 = $_POST['ogl_nazwa_img4'];
  32.  
  33. //POLACZENIE Z BAZA  
  34.  mysql_connect ("sql.login.nazwa.pl:3305", "$user", "$pass") or die ("Brak połączenia z MySQL");
  35.  mysql_select_db ("$database") or die ('Błąd połączenia z bazą'.': '.mysql_error());
  36.  mysql_query($query);
  37.  
  38. $cnt=0;
  39. //JESLI WYBOR WSZYSTKICH KATEGORII NA RAZ TO:
  40. if ($rodzaj_id==5)
  41. {
  42. $query = "SELECT rodzaj, data, marka, model, opis, rocznik, przebieg, cena, miasto, s
    przedajacy, email, telefon, ogl_nazwa_img1, ogl_nazwa_img2, ogl_nazwa_img3, ogl_n
    azwa_img4 FROM ogloszenia_auta ORDER BY data DESC"
    ;
  43.  }
  44. //JESLI WYBOR JEDNEJ KATEGORII TO
  45. else {
  46.  
  47. $query = "SELECT rodzaj, data, marka, model, opis, rocznik, przebieg, cena, miasto, s
    przedajacy, email, telefon, ogl_nazwa_img1, ogl_nazwa_img2, ogl_nazwa_img3, ogl_n
    azwa_img4 FROM ogloszenia_auta WHERE rodzaj LIKE $rodzaj_id ORDER BY data DESC"
    ;
  48. }
  49. $result = mysql_query($query) or die('<center>TEREFERE</center><br>'.': '.mysql_error());
  50. } 
  51.  
  52. if(mysql_num_rows($result) == 0)
  53. {
  54. echo "<center>Nie znaleziono ogłoszeń w tej kategorii.<br><br>
  55. <a href='wybor.php'>Powróć do wyboru ogłoszeń</a></center><br>";
  56. } 
  57.  
  58. else
  59.  
  60. {
  61. while(list( $rodzaj, $data, $marka, $model, $opis, $rocznik, $przebieg, $cena, $miasto, $sprzedajacy, $email, $telefon, $ogl_nazwa_img1, $ogl_nazwa_img2, $ogl_nazwa_img3, $ogl_nazwa_img4) = mysql_fetch_array($result))
  62. {
  63.  $cnt++;
  64.  
  65.  echo "<br><table width=550 cellpadding=5 bgcolor=#FFFFFF border=1px align=center >";
  66.  
  67. //JESLI KATEGORIA x TO:
  68. if ($rodzaj==1)
  69. {
  70. echo "<tr><td width=100 class=ogl>
  71.  Rodzaj: </td><td width=430 class=ogl>Sprzedam samochód<br></td></tr>";
  72. }
  73. //
  74. elseif ($rodzaj==2)
  75. {
  76. echo "<tr><td width=100 class=ogl>
  77.  Rodzaj: </td><td width=430 class=ogl>Kupię samochód<br></td></tr>";
  78. }
  79. //
  80. elseif ($rodzaj==3)
  81. { 
  82. echo "<tr><td width=100 class=ogl>
  83.  Rodzaj: </td><td width=430 class=ogl>Sprzedam części<br></td></tr>";
  84. }
  85. //
  86. elseif ($rodzaj==4)
  87. { echo "<tr><td width=100 class=ogl>
  88.  Rodzaj: </td><td width=430 class=ogl>Sprzedam części<br></td></tr>";
  89. }
  90. //WYSWIETLANIE TRESCI OGLOSZENIA
  91. echo "<tr><td width=100 class=ogl>
  92.  Dodano: </td><td width=430 class=ogl>$data<br></td></tr>
  93. //reszta tresci ogloszenia podawana tak jak data - wycialem
  94. </table>";
  95.  
  96. //JESLI SA ZDJECIA TO WYSWIETLAJ
  97. if ($ogl_nazwa_img1>'0')
  98. { echo " <table width =550 bgcolor=#FFFFFF border=1px align=center >
  99. <tr><td width=550>
  100.  <a href=up/$ogl_nazwa_img1 target='blank'><img src='up/$ogl_nazwa_img1' height=112></a> ";
  101. if ($ogl_nazwa_img2>'0')
  102. {echo "<a href=up/$ogl_nazwa_img2 target='blank'><img src='up/$ogl_nazwa_img2' height=112></a> "; 
  103.  
  104. if ($ogl_nazwa_img3>'0')
  105. {echo "<a href=up/$ogl_nazwa_img3 target='blank'><img src='up/$ogl_nazwa_img3' height=112></a> ";
  106.  
  107. if ($ogl_nazwa_img4>'0')
  108. { echo "<a href=up/$ogl_nazwa_img4 target='blank'><img src='up/$ogl_nazwa_img4' height=112></a>"; }
  109. else { }}
  110.  
  111. else { }}
  112.  
  113. else { }
  114. echo "</td></tr></table><br>"; }
  115.  else {echo "<br>"; }
  116. } 
  117.  
  118. }
  119.  ?>

stronka ma pokazywac ogloszenia z wybranej kategorii
formularz wyboru na gorze
kategoria sprzedam samochod ma np id = 1 wiec show3.php?rodzaj_id=1 powinno pokazywac ogloszenia z tej wlasnie kategorii i analogicznie pozostale 4 kategorie
wszystko dziala "niby" poprawnie ale wywala blad
"Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/login/ftp/show3.php on line 88"

wiersz 88 to "if(mysql_num_rows($result) == 0)"

blad ten pokazuje sie jesli ktoras z kategorii wybiore pierwszy raz
np wchodze na strone i wybieram sprzedam samochod, klikam wybierz i wywala ten blad, klikam drugi raz ta sama kategorie i Wybierz i pokazuje ok, jesli pozniej wybiore inna znowu jest ten blad, a po ponownym jej wybraniu pokazuje tak jak powinno byc

zauwazylem tez, ze jesli wybiore np kategorie 4 czyli Kupie czesci i klikne Wybierz pokaze sie blad a w pasku adresu jest show3.php?ogl=1 (zamiast 4)
i teraz jesli wybiore ponownie kategorie 4 to w pasku adresu pokazuje sie show3.php?ogl=4 i prawidlowe ogloszenia natomiast jesli wybiore kategorie nr 2 to wywala blad i w pasku adresu pokazuje sie nadal ?id=4 (czyli tak jakby dzialalo z opoznieniem o jeden "cykl" czy jak to tam nazwac
pewnie gdzies jest skopana kolejnos ale jako baardzo pocatkujacy tego nie widze

ponadto jesli otworze nowe okno przegladarki i wpisze w pasek adresu np www.adresstrony.pl/show3.php?ogl=3 to tez wywala mi blad

na innej stronie ten sam skrypt zachowuje sie ciut inaczej
po wyborze show3.php?ogl=2 czy tez innej kategorii, tez wywala blad ALE
- po wybraniu w formularzu kategorie wyswietla bezblednie juz za pierwszym razem(czyli tak jak powinno byc
-ale jednoczesnie w pasku adresu pokazuje show3.php?ogl= czyli bez zadnej kategorii (choc wlasnie ja przegladamy to nie mozna do niej sie dostac z paska adresu :/

nic z tego nie rozumiem
sorry, ze tak przydlugo ale chcialem dokladnie i w miare czytelnie to wszystko opisac zeby bylo latwiej zdiagnozowac
(choc i tak pewnie bedzie ciezko zrozumiec po takim zagmatwaniu sprawy tongue.gif )

Ten post edytował wupasek 1.03.2008, 18:56:00
Go to the top of the page
+Quote Post
hondek
post 1.03.2008, 18:05:48
Post #2





Grupa: Zarejestrowani
Postów: 355
Pomógł: 50
Dołączył: 20.08.2007
Skąd: Częstochowa

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


  1. <?php
  2. $query = "SELECT rodzaj, data, marka, model, opis, rocznik, przebieg, cena, miasto, s
    przedajacy, email, telefon, ogl_nazwa_img1, ogl_nazwa_img2, ogl_nazwa_img3, ogl_n
    azwa_img4 FROM ogloszenia_auta WHERE rodzaj LIKE $rodzaj_id ORDER BY data DESC"
    ;
  3. ?>


Moze WHERE rodzaj=$rodzaj_id

Wedlug mnie cos z tym zapytaniem jest nie tak smile.gif sprawdz jego poprawnosc winksmiley.jpg


--------------------
przetwornik yt na czasie :)
Go to the top of the page
+Quote Post
wupasek
post 1.03.2008, 18:48:03
Post #3





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 28.11.2003

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


podmienilem na to co proponowales, ale jest bez zmian wiec raczej nie to
zwlaszcza, ze pare linijek wczesniej przy warunku if ($rodzaj_id==5) w zapytaniu SELECT nie ma ani WHERE, ani LIKE i tez wywala blad ;(

raz dla eksperymentu skasowalem ta "problematyczna" linijke czyli mysql_num_rows i wtedy wywalalo jako wadliwa linie "mysql_fetch_array" choc oba sa powiazane z $result, a $result z query wiec moze cos w tym jest ale mysle ze to nie o WHERE i LIKE chodzi ;(
Go to the top of the page
+Quote Post
likedat
post 1.03.2008, 19:28:38
Post #4





Grupa: Zarejestrowani
Postów: 20
Pomógł: 1
Dołączył: 1.03.2008

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


Wydaje mi się, że problem polega na tym:
Jeśli warunek
Kod
//POBIERANIE ID KATEGORII
if ($_GET['ogl']==$rodzaj_id)

nie zaskoczy, to nadal przejdzie następny:
Kod
if(mysql_num_rows($result) == 0)
{


A w ramach pierwszego ustanawiasz połączenie z bazą danych, w wyniku czego zmienna $result zaczyna istnieć winksmiley.jpg
Go to the top of the page
+Quote Post
wupasek
post 1.03.2008, 20:05:46
Post #5





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 28.11.2003

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


czyli wedlug ciebie powinienem po prostu inaczej poustawiac { } ?
o ile dobrze zrozumialem podpowiedz

ale czemu raz mialby nie zaskakiwac a raz nie?

sprawdzilem i chyba masz racje ale tylko czesciowo
po usunieciu "}" z linii 50 i wstawieniu go w jedyne wg mnie mozliwe miejsce czyli na sam koniec do linii 118 blad sie nie pojawia, natomiast nadal wybor "zaskakuje" dopiero za drugim razem sad.gif

moze mam cos nie tak z GET i POST ?
tylko co, gdzie, jak?

i czemu nie "pobiera" odpowiednio kategorii po wpisaniu do paska adresu?

Ten post edytował wupasek 1.03.2008, 20:31:23
Go to the top of the page
+Quote Post
likedat
post 1.03.2008, 20:52:08
Post #6





Grupa: Zarejestrowani
Postów: 20
Pomógł: 1
Dołączył: 1.03.2008

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


Używasz tutaj zmiennej $rodzaj_id. Masz włączone register globals? Inicjalizujesz ją w innym pliku?
Kod
   echo "<form method='POST' action='show3.php?ogl=$rodzaj_id' ENCTYPE='multipart/form-data'>

Ponadto raz zmieniasz kategorię poprzez GET, a raz poprzez POST, a sprawdzasz tylko przez $_GET.

Wydaje mi się, że sprawę może załatwić zamiana powyższego kodu na:
Kod
     echo "<form method='get' action='show3.php' ENCTYPE='multipart/form-data'>

i niżej
Kod
   $rodzaj_id = $_POST['rodzaj_id'];

na

Kod
     $rodzaj_id = $_GET['rodzaj_id'];


Strasznie zagmatwany jest ten kod, swoją drogą.
Go to the top of the page
+Quote Post
wupasek
post 1.03.2008, 21:08:14
Post #7





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 28.11.2003

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


po zmianie na to co proponujesz nie wyswietla nic, poza formularzem wyboru
ani bledu, ani zawartosci
za to w pasku adresu jak wybiore kategorie 1 to pokazuje show3.php?rodzaj_id=1 czyli numer jest prawidlowy ale wczesniej bylo show3.php?ogl=jakistam_numer

co do zagmatwania to wierze na slowo, w zyciu nic nie robilem w php a i z programowaniem nie mialem praktycznie nic wspolnego sadsmiley02.gif

EDIT:
juz robi
zrobilem to co mi podpowiedziales plus jeszcze w pierwszym
if zmienilem GET['ogl'] == $rodzaj_id
na GET['rodzaj_id']==$rodzaj_id

dzieki wielkie

Ten post edytował wupasek 1.03.2008, 21:20:20
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: 24.07.2025 - 21:44