Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql+php]Pobieranie nazw kategorii
Forum PHP.pl > Forum > PHP
gandziorz
Witam,
Mam 2 tabele (`kategorie`, `newsy`).

W `kategorie` mam 3 rekordy:
1 Ogolne
2 Motoryzacja
3 Sport

A w `newsy` mam 1 rekord.
Przy tabelce "kategorie" jest 1,3.

Teraz jak powinno wygląda zapytanie które mi pobiera nazwy tych kategorii czyli jak mam 1,3 pobierze mi nazwe Ogolne, Sport.

Pomocy,
Z gory dziekuje
dadexix
hm?
  1. SELECT * FROM `kategorie` WHERE `id`='1' OR `id`='3'


http://webmade.org/kursy-online/kurs-mysql.php pocztyaj
gandziorz
Taki bystry to ja też jestem.
Bawie sie sporo czasu w sql i php.

Chodzi mi ze to ma byc za pomoca funkcji.

  1. <?php
  2. function kategoria ($zmienna) {
  3. $query = "SELECT * FROM `kategorie` WHERE `id` = '$zmienna'";
  4. $result = mysql_query($query);
  5. $kategoria = mysql_fetch_array($result);
  6. return $kategoria['nazwa'];
  7. }
  8. ?>

Funkcja w/w działa pod warunkiem ze mamy tylko jedna kategorie wpisana, nie dziala gdy mamy wiecej oddzielonych przecinkiem (1,2,3 itp.).
dadexix
  1. <?php
  2. function kategoria ($zmienna) {
  3. $arr = explode(",", $zmienna);
  4. $start = 0;
  5. foreach($arr as $a){
  6. if($start ==0){
  7. $query = "SELECT * FROM `kategorie` WHERE `id` = '$a' ";
  8. }else{
  9. $query .= " OR `id`='$a' ";
  10. }
  11. $start++
  12. }
  13. $result = mysql_query($query);
  14. $kategoria = mysql_fetch_array($result);
  15. return $kategoria['nazwa'];
  16. }
  17. ?>


Powinno chodzić... innego pomysłu nie mam
gandziorz
Cytat(dadexix @ 6.01.2008, 14:48:56 ) *
  1. <?php
  2. function kategoria ($zmienna) {
  3. $arr = explode(",", $zmienna);
  4. $start = 0;
  5. foreach($arr as $a){
  6. if($start ==0){
  7. $query = "SELECT * FROM `kategorie` WHERE `id` = '$a' ";
  8. }else{
  9. $query .= " OR `id`='$a' ";
  10. }
  11. $start++
  12. }
  13. $result = mysql_query($query);
  14. $kategoria = mysql_fetch_array($result);
  15. return $kategoria['nazwa'];
  16. }
  17. ?>


Powinno chodzić... innego pomysłu nie mam

Nie pomogło ale już sobie sam poradziłem.

Taki kod mi wyszedł:
  1. <?php
  2. function kategoria($a) {
  3. $arr = explode(",", $a);
  4. $txt = "";
  5. foreach($arr as $b){
  6. $query = "SELECT * FROM `kategorie` WHERE `id` = '$b'";
  7. $result = mysql_query($query);
  8. $kategoria = mysql_fetch_array($result);
  9. $txt .= $kategoria['nazwa'].", ";
  10. }
  11. return $txt;
  12. }
  13. ?>
dadexix
nie wiedziałem jak Ty chcesz to hm... wykorzystać...
Troche dużo zapytań wykonuje...;/

  1. <?php
  2. function kategoria ($zmienna) {
  3. $arr = explode(",", $zmienna);
  4. $start = 0;
  5. $txt = '';
  6. foreach($arr as $a){
  7. if($start ==0){
  8. $query = "SELECT * FROM `kategorie` WHERE `id` = '$a' ";
  9. }else{
  10. $query .= " OR `id`='$a' ";
  11. }
  12. $start++
  13. }
  14. $result = mysql_query($query);
  15. while($kategoria = mysql_fetch_array($result)){
  16. $txt .= $kategoria['nazwa'].", "; 
  17. }
  18. return $txt;
  19. }
  20. ?>
gandziorz
Cytat(dadexix @ 6.01.2008, 15:26:19 ) *
nie wiedziałem jak Ty chcesz to hm... wykorzystać...
Troche dużo zapytań wykonuje...;/

  1. <?php
  2. function kategoria ($zmienna) {
  3. $arr = explode(",", $zmienna);
  4. $start = 0;
  5. $txt = '';
  6. foreach($arr as $a){
  7. if($start ==0){
  8. $query = "SELECT * FROM `kategorie` WHERE `id` = '$a' ";
  9. }else{
  10. $query .= " OR `id`='$a' ";
  11. }
  12. $start++
  13. }
  14. $result = mysql_query($query);
  15. while($kategoria = mysql_fetch_array($result)){
  16. $txt .= $kategoria['nazwa'].", "; 
  17. }
  18. return $txt;
  19. }
  20. ?>

Niczym się nie różni pod względem ilości zapytań.
dadexix
u mnie wykonuje jedno zapytanie z kilkma OD `id`[..] u Ciebie na każde id jedno zapytanie - jak masz 3 id to 3 zapytania itd.
zimi
sugeruje przeczytać o IN
Kod
SELECT (...) WHERE id IN (1,3)
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.