Zapytanie SQL, pętla, wyświetlanie dla wartości > 0

Odpowiedz Nowy wątek
2018-11-15 10:39
0

Cześć wszystkim,

Wygląd tabeli w bazie danych:

id wartosc1 wartosc2 wartosc3 wartosc4
1 23 0 1 0

Skrypt ma mieć za zadanie, wyświetlanie w znacznikach ul /ul wartości dla danego ID większych od 0. W tym przykładzie będzie to podobne do:

  • wartosc1
  • wartosc3

W przypadku kolumn wartosc2 oraz wartosc4 nie wyświetlamy nic, ponieważ ich wartość == 0.

Oto co mam do tej pory:

if($result = $polaczenie->query("SELECT * FROM table WHERE id='$mojeid'")){
                       while($w = $result->fetch_assoc()){ 
                       if ($w['wartosc1'] != 0) {                        
                        echo "<li><a><i class='fa fa-university'></i> Projekty <span class='fa fa-chevron-down'></span></a>
                          <ul class='nav child_menu'>
                            <form action='test.php' method='post' >     
                              <input type='text' id='' name='wart' value=".$w['wartosc1']." hidden>        
                              <li><input type='submit' class='btn-link' value=Wartość 1'></li>                      
                            </form>
                          </ul>
                        </li>";
                        }elseif ($w['wartosc1'] == 0) {
                          echo "";
                        }

W tym przykładzie to działa, tylko musiałbym kompiować ten skrypt pomiędzy ul /ul tyle razy ile jest kolumn, a kolumny później będą dodawane, więc bez sensu.
Chciałbym to wszystko robić w pętli, i na tym etapie się zatrzymąłem.

Próbowałem robić to również za pomocą zapytania, do listowania nazw kolumn ale też nie wiem co dalej.

Proszę o pomoc w dojścciu do rozwiązania, nie proszę jednak o gotowca, ponieważ sam też chcę się przyuczyć.

Dziękuję i pozdrawiam

edytowany 4x, ostatnio: Michal Robak, 2018-11-15 10:49

Pozostało 580 znaków

2018-11-15 10:52
0

zamiast fetch_assoc użyj fetch_row - dostaniesz tablicę indeksowaną, gdzie możesz sprawdzić przez count ile ma elementów. Jedyna niedogodność jest taka, że wypadało by zamiast * w zapytaniu wymienić po kolei kolumny aby zawsze były zwracane w tej samej kolejności


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.

Pozostało 580 znaków

2018-11-15 10:55
0

Dziękuję za odpowiedź,

A gdybym zrobił tak, że w pierwszym zapytaniu wyciągam kolumny np tak:

SELECT column_name FROM information_schema.columns  WHERE  table_name = 'table' AND table_schema = 'data base'

To zapytanie robię w foreach:

foreach ($polaczenie->query("SELECT column_name FROM information_schema.columns  WHERE  table_name = 'table' AND table_schema = 'data base'") as $row)

Wynik foreach ładuję do zmiannej, a później w zapytaniu z głownego postu zamian * daję tą zmienną?
Trochę kombinowania, ale może się coś uda ;)

Pozostało 580 znaków

2018-11-15 10:57
0

może być i tak - jeśli coś Ci nie będzie wychodzi z tak przygotowanym zapytaniem to zanim zapytasz tu to wyświetl sobie to zapytanie i popatrz czy jest OK


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.

Pozostało 580 znaków

2018-11-15 10:59
0

Ok zobaczę co i jak i dam znać :)

Pozostało 580 znaków

2018-11-15 11:58
0

Udało się. Wyciągnąłem wszystkie kolumny, z wyjątkiem kolumny 'id'. Wynik zapytania ubrałem w zmienna, Potem do głównego selectu gdzie wpisuje wcześniej stworzoną zmienną i działa ;)
Dziękuję za pomoc !
Temat do zamknięcia ;)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0