Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] explode w tablicy
Forum PHP.pl > Forum > Przedszkole
-Grzegorz-
Witam,

mam następujący problem: w tabeli MySQL jedną z kolumn jest ciąg id, oddzielonych np. ";". Jakiego polecenia powinienem użyć żeby wśród tych ciągów znaleźć wszystkie wiersze, w których pojawia się określone id?

Przykład:
Baza danych sieci sklepów ma tabelę z produktami. Do każdego produktu przyporządkowana jest grupa sklepów (w kolumnie "id_sklepu": "Warszawa;Wroclaw;Krakow;"). Jakiego polecenia powinienem użyć, żeby dowiedzieć się, jaki asortyment (wszystkie produkty) oferuje np. sklep w Krakowie? Wiem, że powinienem użyć funkcji explode() do rozdzielenia poszczególnych $id_sklepu, ale jak to zrobić, żeby funkcja zadziałała w całej tablicy, a później jeszcze przyporządkowała określone wyniki do danego $produkt?

Pozdrawiam,
Grzegorz
trafas
Witam.

Ja bym to zrobił w trochę prostszy sposób.

Jeżeli chcesz wzbierać produkty należące tylko do danego sklepu, to proponowałbym zrobienie dodatkowej tabeli z identyfokatorami sklepów i ich nazwami. Zrobić funkcję generującą pole wyboru (<select></select>) z nazwami sklepów typu:

<select name="opcje">
<option id="0" value="krak" selected>Kraków</option>
<option id="1" value="wawa">Warszawa</option>
<option id="2" value="wroc">Wrocław</option>
...itd
</select>

Wtedy w kolumnie "id_sklepu": trzymasz wartości "wawa;wroc;krak;")

Następnie robisz sobie funkcję jak poniżej:

  1. <?php
  2. function szukaj1($sklep)
  3. {
  4.  
  5. $zapytanie = mysql_query("select produkt from produkty where id_sklepu like '%$sklep%'") or die(mysql_error());
  6. $wiersze = mysql_num_rows($zapytanie);
  7.  
  8. echo "Ilosc wynikow : ".$wiersze."<br/>";
  9.  
  10. for($i = 0; $i <= $wiersze; $i++)
  11. {
  12. $prz = mysql_fetch_array($zapytanie);
  13. echo $prz[0]."<br/>";
  14. }
  15. }
  16.  
  17. $wartosc_pobrana = $_POST['opcje'];
  18. echo "Produkty w sklepie : ".$wartosc."<br/>";
  19.  
  20.  if($wartosc != "")
  21. {
  22. szukaj1($wartosc);
  23. }else{echo "brak produktów";}
  24. ?>


Ważne jest żeby przypadkiem identyfikatory sklepów Ci się nie pomyliły.
To by było na tyle.
Pozdro.
-Grzegorz-
Dziękuję, trafas. Pozdrawiam smile.gif
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.