Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobieranie pól z bazy o zmiennych nazwach kolumn
Forum PHP.pl > Forum > PHP
Aquarius
skrobnąłem sobie poniższy kod, aby pobierać rekordy z bazy z kolumn które różnią się cyframi:

  1. if ($_GET['op'] != "") {
  2. $sql_o = "SELECT * FROM ZGLOSZENIA WHERE Opcjonalne1_ID='".$_GET['op']."' OR Opcjonalne2_ID='".$_GET['op']."' OR Opcjonalne3_ID='".$_GET['op']."' OR Opcjonalne4_ID='".$_GET['op']."' OR Opcjonalne5_ID='".$_GET['op']."' OR Opcjonalne6_ID='".$_GET['op']."' OR Opcjonalne7_ID='".$_GET['op']."' OR Opcjonalne8_ID='".$_GET['op']."' OR Opcjonalne9_ID='".$_GET['op']."' OR Opcjonalne10_ID='".$_GET['op']."'";
  3. $result_o = mysql_query($sql_o);
  4. while($row = mysql_fetch_assoc($result_o)) {
  5. foreach ($row as $col => $val) {
  6. if ($val == $_GET['op']) {
  7. $endch = str_replace("ID", "Wartosc", $col);
  8. $sql_o = "SELECT ".$endch." FROM ZGLOSZENIA WHERE ".$col."='".$_GET['op']."'";
  9. $result_o = mysql_query($sql_o);
  10. while($row = mysql_fetch_row($result_o)) {
  11. $wyniki .= "<td>".$row[0]."</td></tr>";
  12. }
  13. }
  14. }
  15. }
  16. }


i co prawda pobiera dobrze, ale wykonuje się jak widać wyżej w pętli, czy da się to może zrobić jakoś inaczej aby uzyskać prawidłowe wyświetlanie?
acidm
Nie analizowałem twojego problemu, ale bardzooo proszę poczytaj o tym dlaczego teraz używa mysqli czy PDO , o filtrowaniu danych , o sql injection i o bindowaniu danych do zapytań.
Wazniak96
Nie rozumiem po co w ogóle jest to drugie zapytanie skoro pobiera te same dane. Przynajmniej według mojego rozumowania bo kod to sieczka. Według mnie cała baza jest źle zaprojektowana skoro masz 10 różnych kolumn, które potem przeszukujesz szukając tych samych danych. A wystarczyłoby po prostu jedna dodatkowa kolumna, gdzie zapisałbyś tą swoją liczbę(1-10)...

Do tego dochodzi to co napisał kolega @acidm. Nie filtrujesz w żaden sposób danych z tablicy GET.

Mniejsza o to. Wklej sobie poniższy kod i zobacz czy już czasem nie masz danych które szukasz smile.gif
  1. $sql_o = "SELECT * FROM ZGLOSZENIA WHERE Opcjonalne1_ID='".$_GET['op']."' OR Opcjonalne2_ID='".$_GET['op']."' OR Opcjonalne3_ID='".$_GET['op']."' OR Opcjonalne4_ID='".$_GET['op']."' OR Opcjonalne5_ID='".$_GET['op']."' OR Opcjonalne6_ID='".$_GET['op']."' OR Opcjonalne7_ID='".$_GET['op']."' OR Opcjonalne8_ID='".$_GET['op']."' OR Opcjonalne9_ID='".$_GET['op']."' OR Opcjonalne10_ID='".$_GET['op']."'";
  2. $result_o = mysql_query($sql_o);
  3. $row = mysql_fetch_assoc($result_o);
  4.  
  5. print_r($row);
Aquarius
drugie zapytanie pobierało wartość dla danego pola którego ID było przypisane dla tejże wartości
pól jest 2*10, Opcjonalne1_ID, Opcjonalne1_Wartosc
i teraz trzeba pobrać kolejną Wartość dla danego ID z pola Opcjonalne1_ID, tyle że może być ono zarówno w Opcjonalne1_ID jak i Opcjonalne7_ID

to że baza zrobiona jest nie tak jak powinna to swoją drogą, mówiłem osobie której to robiłem że powinno być jeszcze jedno pole (i to nie koniecznie w tej tabeli), ale uparł się że chce tak

rozwiązanie było dość proste, w drugim zapytaniu wystarczyło określić ID dla którego ma pobrać szukaną wartość
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.