Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][mysql]problem z mysql_fetch_array
-kartez-
post 28.03.2008, 17:08:12
Post #1





Goście







  1. <html>
  2. <head>
  3. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2">
  4. <center>
  5. Klinkij na zdjęcie, aby zobaczyć je w pełnych wymiarach.<br>
  6. </head>
  7. <?
  8. $db = mysql_connect('blablabla', 'blablabla', 'blablabla');
  9. mysql_select_db ("blablabla");
  10.  
  11. $zapytanie = 'SELECT Max(id) FROM foto1 ;';
  12. $zaznacz = mysql_query($zapytanie);
  13. $tab = mysql_fetch_array($zaznacz);
  14. $MaxId = $tab[0];
  15.  
  16. $zapytanie = 'SELECT link FROM foto1;';
  17. $zaznacz = mysql_query($zapytanie);
  18. $link = mysql_fetch_array($zaznacz);
  19.  
  20. $zapytanie = 'SELECT linkm FROM foto1;';
  21. $zaznacz = mysql_query($zapytanie);
  22. $linkm = mysql_fetch_array($zaznacz);
  23.  
  24. for ($i = 0;$i < $MaxId; $i++)
  25. {
  26. // if (isset ($link[i]) && isset ($linkm[i]) )
  27. // {
  28.  echo '<br><a target="_blank" href="';
  29.  echo $link[$i];
  30.  echo '"><img src="';
  31.  echo $linkm[$i];
  32.  echo '" border="0" align="middle" ></a><br>';
  33. // }
  34. }
  35.  
  36. ?>
  37. </center>
  38. </html>


Witam!
Skrypcik w powyższym kodzie powinien w założeniu wyświetlać na ekranie zdjęcia.
Niestety wyświetla on tylko pierwsze zdjęcie wraz z jego miniaturką (adres z $link[0] i $linkm[0])

Pozostałe zdjęcia nie wyświetlają się, tj. html wygląda tak:
  1. <a target="_blank" href=""><img src="" border="0" align="middle" ></a><br><br><a target="_blank" href=""><img src="" border="0" align="middle" ></a>

(wcina zawartości zmiennych $link[$i], $linkm[$i], gdy $i ma wartość inną niż 0).

Czy ktoś z Was wie może co robię nie tak?
Będę bardzo wdzięczny za wszelkie odpowiedzi...

I przy okazji: w komentarzu występuje if mający sprawdzać, czy wyświetlane dane nie są pozostałością z wykasowanego zdjęcia (klucz podstawowy 'id' jest auto_increament, więc po usunięciu jakiegoś rekordu zostaje jego id). Niestety zawsze, kiedy go stosuję nie wyświetla się nic, nawet to pierwsze, zwykle działające zdjęcie...
Powód edycji: dodalem tag i lekko zmieniłem temat (cysiaczek)
Go to the top of the page
+Quote Post
Trobin
post 28.03.2008, 17:32:39
Post #2





Grupa: Zarejestrowani
Postów: 82
Pomógł: 6
Dołączył: 23.03.2008
Skąd: Szczecin

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


Spróbuj
  1. <?php
  2. $MaxId=$tab['0'];
  3. ?>

a tak w ogóle to nie wygodniej odwoływać się do danych z tabeli przez nazwy pól? winksmiley.jpg
poza tym chyba lepiej napisać
  1. <?php
  2. echo "<br><a target=\"_blank\" href=\" .$zmienna. \"><img src=\". $zmienna2 .\" inne=\"ciekawostki\">";
  3. ?>


Ten post edytował Trobin 28.03.2008, 17:36:03


--------------------
Pracuję na: Apache 2.2.4, MySQL 5.0.20a, PHP 5.3.0
Go to the top of the page
+Quote Post
-Gość-
post 28.03.2008, 17:52:22
Post #3





Goście







Zmieniłem, nic nie dało.
Z $MaxId ogólnie chyba nie ma problemu...

Przez nazwy pól? Nie jestem pewien co masz na myśli - przecież używam tych danych w pętelce for, która za każdym razem odwołuje się do danych z innego rekordu (co coraz to większym id)...
A poza tym nazwy pół wchodzą w grę chyba tylko wtedy, gdy odwołuję się jedynie do pół w jednym konkretnym rekordzie...
Jeśli się mylę, będę wdzięczny za sprostowanie...
Go to the top of the page
+Quote Post
Trobin
post 28.03.2008, 18:00:56
Post #4





Grupa: Zarejestrowani
Postów: 82
Pomógł: 6
Dołączył: 23.03.2008
Skąd: Szczecin

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


  1. <?php
  2. while ($row = mysql_fetch_array($result)) {
  3. printf("ID: %s Name: %s", $row["id"], $row["name"]);
  4. }
  5. ?>

Mowiłem o czymś takim winksmiley.jpg . Ale to jest raczej kwestia przyzwyczajeń.
Nie mam pewności, ale chyba tyle średników jest niepotrzebne?
  1. <?php
  2. $zapytanie = 'SELECT Max(id) FROM foto1 ;';
  3. ?>


Ten post edytował Trobin 28.03.2008, 18:02:34


--------------------
Pracuję na: Apache 2.2.4, MySQL 5.0.20a, PHP 5.3.0
Go to the top of the page
+Quote Post
nevt
post 28.03.2008, 18:31:27
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


ogólnie cały ten kod wymaga sporej optymalizacji, coś w rodzaju:
  1. <?php
  2. $db = mysql_connect('...', '...', '...');
  3. mysql_select_db ('...');
  4.  
  5. $sql = 'SELECT link, linkm FROM foto1;';
  6. $result = mysql_query($sql);
  7. while($row=mysql_fetch_assoc($result))
  8. echo '<br /><a target="_blank" href="'.$row['link'].
  9. '"><img src="'.$row['linkm'].'" border="0" align="middle" ></a><br />';
  10.  
  11. ?>


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

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
-Gość-
post 28.03.2008, 18:35:29
Post #6





Goście







jeden średnik do zapytania, drugi do php-cza... W każdym razie usunąłem po jednym, (nie)działa tak jak wcześniej

Wybacz ignorancję i brak wiedzy, ale co właściwie robi twój kod (ten z pętelką while) i jak go użyć?
W ogóle to dzięki wielkie za odpowiedzi...
Go to the top of the page
+Quote Post
-Gość-
post 28.03.2008, 18:39:56
Post #7





Goście







działa. jesteście boscy.
wielkie dzięki...
Go to the top of the page
+Quote Post
-Gość-
post 28.03.2008, 19:14:42
Post #8





Goście







niestety jako gość nie mogę edytować moich postów, sry za ten lekki spam

chciałem zapytać na czym właściwie polega działanie tego kodu:

while($row=mysql_fetch_assoc($result))
echo '<br /><a target="_blank" href="'.$row['link'].
'"><img src="'.$row['linkm'].'" border="0" align="middle" ></a><br />';

niezabardzo w nim mogę zauważyć jakąkolwiek inkrementację (aż wstyd pytać, ale nawet google mi nie pomogły...)
Go to the top of the page
+Quote Post
Trobin
post 28.03.2008, 19:19:55
Post #9





Grupa: Zarejestrowani
Postów: 82
Pomógł: 6
Dołączył: 23.03.2008
Skąd: Szczecin

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


Bo jej tu nie ma.
Ten kod po prostu zwraca wszystkie rekordy z bazy wyświetlając je w dany sposób (czyli wkładając zmienne w atrybuty np. linka). To jest przerobiona pod Twój skrypt wersja tego o czym pisałem wcześniej, ale w innym kontekście.


--------------------
Pracuję na: Apache 2.2.4, MySQL 5.0.20a, PHP 5.3.0
Go to the top of the page
+Quote Post
nevt
post 28.03.2008, 20:32:03
Post #10





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


  1. <?php
  2. while($row=mysql_fetch_assoc($result))
  3. ?>

while(warunek) - pętla, powtarza się dopóki warunek = TRUE
mysql_fetch_assoc($result) - odczytuje kolejny wiersz z rezultatu zapytania, po kolei od pierwszego do ostatniego, po ostatnim zwraca wartość FALSE
$row=mysql_fetch_assoc($result) - przypisuje kolejny wiersz do zmiennej $row
kiedy już nie ma kolejnego wiersz, $row przyjmuje wartość FALSE i pętla while() przestaje się powtarzać..

jaśniej już nie potrafię...


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

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
-Gość-
post 29.03.2008, 10:51:26
Post #11





Goście







Dzięki wielkie panowie
Myślałem (sam nie wiem czemu), że mysql_fetch_assoc($result) działa raz dla wszystkich wierszy od razu...
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: 18.08.2025 - 23:19