Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Select z mysql do array
grezliq
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 7.08.2011

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


Cześć

Mam następujący problem
Mam skrypt zipujący pliki. Z linkami do plików podanych na sztywno - działa:
  1. $files_to_zip = array(
  2. 'http://www.example.com/images/item/image1_thb.jpg',
  3. 'http://www.example.com/images/item/image2_thb.jpg',
  4. 'http://www.example.com/images/item/image3_thb.jpg',
  5. );


Jednak z bazy danych muszę wziąć nazwę pliku i utworzyć link, dla testów zrobiłem echo, które ładnie pokazuje mi nazwy plików:
  1. $shots = mysql_query("SELECT name, ext FROM my_images WHERE item_id=$idnumber") or die(mysql_error());
  2. while($row = mysql_fetch_assoc($shots)) {
  3. echo "http://www.example.com/images/item/";
  4. echo $row["name"];
  5. echo '_thb.';
  6. echo $row["ext"];
  7. echo '<br>';
  8. }


Pokazuje to co powinno:
http://www.example.com/images/item/image1_thb.jpg
http://www.example.com/images/item/image2_thb.jpg
http://www.example.com/images/item/image3_thb.jpg

Nie mam tylko zielonego pojęcia jak to połączyć tak aby zastąpić pliki podane na sztywno tymi które zostały pobrane z bazy.

Proszę o pomoc. Dzięki.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
SmokAnalog
post
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Użyj sobie lepiej mysqli. Tam masz też funkcję mysqli_fetch_all, która wszystkie rekordy zwróci Ci jako tablicę.
Go to the top of the page
+Quote Post
nospor
post
Post #3





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




Smoku kochany, ale ta funkcja nie polaczy mu pol, a to tez trzeba zrobic (IMG:style_emoticons/default/wink.gif)
Ponadto, mysqli to trzeba uzywac z innego powodu a nie tej funkcji.

@grezliq uzywasz rozszerzenia mysql ktore juz dawno wylecialo z php. Nie rob sobie krzywdy i przejdz jak wspomniano na mysqli lub PDO

Co do problemu
  1. $files_to_zip = array();
  2. while($row = mysql_fetch_assoc($shots)) {
  3. $files_to_zip[] = 'http://www.example.com/images/item/' . $row["name"] . '_thb.' . $row["ext"];
  4. }

I juz. Takie tam podstawy operacji na tekstach i na tablicach
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #4





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


No jasne, że z innego powodu (IMG:style_emoticons/default/biggrin.gif)

Ja jednak polecam zrobić to bez foreach. Albo złożyć odpowiedni string w zapytaniu z użyciem CONCAT(), albo w array_map. Osobiście nie lubię takiego składania tablicy w pętli, jeśli da się inaczej.
Go to the top of the page
+Quote Post
viking
post
Post #5





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


array_map będzie niepotrzebną pracą parsera. Najszybciej było by tutaj od razu w zapytaniu zwrócić cały wynik i tylko tablicę przerzucić do pliku bez żadnych iteracji.
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




Cytat
Osobiście nie lubię takiego składania tablicy w pętli, jeśli da się inacze
Tez staram sie unikac tego typu petli ale nie zawsze jest sens i potrzeba.
W tym przypadku, nie widze powodu mieszania uzytkownikowami bajerami, gdy ten nie ogarnia banalnych operacji na tekstach i tablicach. Moze wpierw niech opanuje to (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 13:12