Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> nie wyswietlany pierwszy rekord mysql
hildek
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 20.02.2013

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


Jak w temacie mam problem z prostym menu motoryzacyjnym.
Idea jest prosta :

Nazwa działu :
-wyniki z bazy

Nazwa dziala:
-wyniki z bazy

itd...

wyniki sa w roznych tabelach poukladane tematycznie.
tabele maja nazwy nie nadajace sie do wykorzystania w "nazwa dzialau", stad sa wrzucone do jednej tabeli typ i z niej pobieram id dla calosci.

  1. function pokazMenu(){
  2. require "dane.inc.php";
  3. require "polacz.inc.php";
  4. $menu= NULL;
  5.  
  6. $query = "SELECT * FROM typ ORDER BY idTyp";
  7. $query1 = "SELECT * FROM ukladhamulcowy ORDER BY idUkladHamulcowy";
  8. $query2 = "SELECT * FROM ukladchlodzenia ORDER BY idUkladChlodzenia";
  9.  
  10. $result = mysql_query($query, $conn) or die(mysql_error());
  11. $result1 = mysql_query($query1, $conn) or die(mysql_error());
  12. $result2 = mysql_query($query2, $conn) or die(mysql_error());
  13.  
  14. if($result){
  15. while($rzad = mysql_fetch_array($result)){
  16.  
  17. if($result1){
  18. $rzad1 = mysql_fetch_array($result1);
  19. if(count($rzad1)>1){
  20. $menu.=" <p>Układ hamulcowy : </p>";
  21. }
  22. while($rzad1 = mysql_fetch_array($result1)){
  23. $menu.=" <p><a class='test' href='bleble'".$rzad['idTyp'].">".$rzad1['nazwa']."</a></p>";
  24. }
  25. }
  26.  
  27. }
  28. }
  29. echo "$menu";
  30. }


Moze banalny problem, ale przy wyswietlaniu wcina mnie pierwszy wiersz z tabeli.
Jak usune warunek wyswietlania nazwy " if(count($rzad1)>1){
$menu.=" <p>Układ hamulcowy : </p>";
}" to wyswietla poprawnie.

Nie bardzo rozumiem dlaczego tak to sie odbywa i bede wdzieczny za wyjasnienie.

Stad pytanie, jak w najprostszy sposob usystematyzowac to menu ?
Z gory dzieki za pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Ilu Was jeszcze popełni ten bład? Bo już takich jak ty było setki....

$rzad1 = mysql_fetch_array($result1);
Przecież tu pobierasz ten pierwszy rekord. Skoro go pobierasz i go nie wyświetlasz to logiczne ze go tracisz...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
hildek
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 20.02.2013

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


Cytat(nospor @ 20.02.2013, 18:07:08 ) *
Ilu Was jeszcze popełni ten bład? Bo już takich jak ty było setki....

$rzad1 = mysql_fetch_array($result1);
Przecież tu pobierasz ten pierwszy rekord. Skoro go pobierasz i go nie wyświetlasz to logiczne ze go tracisz...


da rade jakos przesunac wskaznik na poczatek tablicy przy nastepnym pobraniu?

masz jakis pomysl jak prosto rozwiazac moje menu?

btw. nie rozumiem w takim razie samego dzialania funkcji mysql_fetch_array.
Z tego co wyczytalem w manualu, to funkcja zapisuje do tablicy ($rzad1) ktora podstawimy wyniki z zapytania sql ($result1).
W takim razie dlaczego pobieram 1 rekord?

Zrozumialem to jako przypisanie wyniku do tablicy, a nie wywolanie tablicy...

sry za banal, ale chce sie czegos nauczyc.

pzdr - jeden z setek.


edit:
ok moze inaczej sformuluje pytanie :
jak sprawdzic zawartosc zwroconego wyniku przez sql. Czy sa rekordy czy nie ?

edit2:
poradzilem sobie z efektem koncowym, ale chcialbym pisac sensownie, a ten kod wyglada mnie nie za bardzo. Stad prosba o podpowiedzenie, czy mozna to zrobic prosciej, czy sa jakies funkcje minimalizujace kod.
Chodzi o to czy moge ominac ten temat nie wysylajac dodatkowego zapytania do bazy o ilosc rekordow i czy da sie to zrobic z poziomu php.
Z gory dzieki.

Kod
    function pokazMenu(){
    require "dane.inc.php";
    require "polacz.inc.php";
    $menu= NULL;
    
    $query = "SELECT * FROM typ ORDER BY idTyp";
    $query1 = "SELECT * FROM ukladhamulcowy ORDER BY idUkladHamulcowy";
    $query11 = "SELECT count(*) FROM ukladhamulcowy";
    $query2 = "SELECT * FROM ukladchlodzenia ORDER BY idUkladChlodzenia";
    
    $result = mysql_query($query, $conn) or die(mysql_error());
    $result1 = mysql_query($query1, $conn) or die(mysql_error());
    $result11 = mysql_query($query11, $conn) or die(mysql_error());
    $result2 = mysql_query($query2, $conn) or die(mysql_error());
    
    if($result){
    while($rzad = mysql_fetch_array($result)){
    
  
    if($result11){
            $ilosc_rekordow11 =  mysql_fetch_row($result11);
            if($ilosc_rekordow11>0){
     $menu.="         <p>Układ hamulcowy : </p>";    
                        }
    if($result1){
    while($rzad1 = mysql_fetch_array($result1)){    
    $menu.=" <p><a class='test' href='bleble'".$rzad['idTyp'].">".$rzad1['nazwa']."</a></p>";
    }
    }
    
    }
    }
    echo "$menu";
    }


Ten post edytował hildek 20.02.2013, 19:41:15
Go to the top of the page
+Quote Post
mar1aczi
post
Post #4





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

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


mysql_num_rows


--------------------
Szanuj innych czas! Kliknij , gdy pomocną wskazówkę otrzymasz.
Go to the top of the page
+Quote Post
abort
post
Post #5





Grupa: Zarejestrowani
Postów: 590
Pomógł: 107
Dołączył: 25.10.2011

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


Oczywiście mysql_num_rows jest jak najbardziej poprawnym rozwiązaniem. Niemniej, w przypadkach, kiedy niezależnie od ilości zwróconych wyników chcemy ZAWSZE te wyniki odczytać i dopiero potem przetwarzać, można zrobić to np. tak:

  1. $conn = mysql_connect(.......);
  2. $query = "SELECT * FROM ...........................";
  3. $result = mysql_query($query);
  4. $res = array(); // dla czytelności!
  5. while ($res[] = mysql_fetch_array ($conn)) {} // Wczytujemy wszystko
  6. $rows = count ($res);


Choć oczywiście mysql_num_rows z reguły będzie lepszym rozwiązaniem.
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 Aktualny czas: 21.08.2025 - 04:19