Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] wyswietlanie danych z bazy
Forum PHP.pl > Forum > Przedszkole
wupasek
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 )
hondek
  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
wupasek
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 ;(
likedat
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
wupasek
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?
likedat
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ą.
wupasek
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
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.