Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: pętle i mysql
Forum PHP.pl > Forum > PHP
EliaS
Witam
Kolejny problemiq(pewnie juz macie dosc) ale kto pyta nie błądzi winksmiley.jpg
Wiec tak mam tabele w mysql w niej pole nr_kursu, w tymze polu znajduja sie powtarzajace sie przez kilka wierszy wartosci numeru kursu np. przez kolejnych 5 wierszy pole to ma warotsc 111, pozniej 112,113 itd.
Teraz pytanie o wyswietlanie dancyh:
[php:1:639571c1de]<?php
$jakas = "SELECT * FROM cos WHERE id=$result[id_cosia] AND nr_kursu='111' ";
$bierz2 = mysql_query($jakas, $conn);
while ($result2 = @mysql_fetch_array($bierz2))
{
?>[/php:1:639571c1de]
mam sobie taka petelke ale czy jest mozliwe by ta petla powtarzala sie w zaleznosci ile roznych numerow kursu bedzie?czyli jesli beda w polu nr_kursu kolejne numery to zeby petle powtarzal tak samo ale ze zmienionym warunkiem zapytania SELECT nr_kursu='112' questionmark.gif?
licze na help smile.gif
cboot
Może po prostu najpierw pobierz numery kursów, a potem wykonuj to zapytanie dla każdego numeru kursu.
[php:1:b2f7da3d15]<?php
$jakas1 = "SELECT nr_kursu FROM cos WHERE id=".$result['id_cosia']." GROUP BY nr_kursu";
$bierz1 = myslql_query ( $jakas1, $conn );
while ( $result1 = @mysql_fetch_array( $bierz1 ) )
{
$jakas2 = "SELECT * FROM cos WHERE id=".$result['id_cosia']." AND nr_kursu=".$result1['nr_kursu'];
$bierz2 = mysql_query( $jakas2 , $conn );
while ( $result2 = @mysql_fetch_array( $bierz2 ) )
{
// tu odpowiednie instrukcje
}
}
?>[/php:1:b2f7da3d15]
lukaswoj
Ja bym zaznaczył, że bardziej poprawne pod względem manuala MySQL będzie takie zapytanie:
[sql:1:9af857a409]
SELECT DISTINCT nr_kursu FROM cos WHERE id=JAKIESTAM_ID;
[/sql:1:9af857a409]

zamiast takiego:
[sql:1:9af857a409]
SELECT nr_kursu FROM cos WHERE id=JAKIESTAM_ID GROUP BY nr_kursu";
[/sql:1:9af857a409]

Chociaż wynik ten sam smile.gif
EliaS
dzieki za podpowiedzi, ale nie wiem jak pogodzic to ze ja juz w tej chwili mam dwa zapytania mysql bo w jednym wyciagam dane z jednej tabeli a wewnatrz tejze petli wyciagam jeszcze dane z innej tabeli. wiec w tym wypadku musialbym jeszcze trzecie zapytanie wlaczyc ale czy to da rade powiazac z tym?
cboot
@lukaswoj: aaa... sorka, masz świętą rację

@Elias: Zapytań to możesz sobie robić ile chesz (owczywiście im mniej tym lepiej), byleś ich wyniki w innych zmiennych przechowywał. A czy da się je połączyć jakoś, to zależy od konkretnego przypadku.
EliaS
no w tym konkretnym przypadku biorac pod uwage Twoja propozycje grupowania nr_kursu wyglada to tak:
[php:1:58086f91e3]<?php
$sel = "SELECT nr_kursu FROM numery_kursow GROUP BY nr_kursu";
$bierz = mysql_query($sel, $conn);
while ($result = @mysql_fetch_array($bierz))
{
$dane = "SELECT * FROM numery_kursow WHERE nr_kursu=$result[nr_kursu]";
$bierz2 = mysql_query($dane, $conn);
while ($result2 = @mysql_fetch_array($bierz2))
//wyniki zapytania
?>[/php:1:58086f91e3]

Natomiast potrzebuje dołożyc jeszcze rownolegle z wyswieltaniem wynikow wyswietlenie z innej tabeli nazw miejscowosci poniewaz w tabeli numery_kursow mam tylko id_miejscowosci.Musze zatem dolozyc jeszcze zapytanie
SELECT * FROM miejscowosc WHERE id=$result[id_miejscowosci]
cboot
No to łączymy tabele w zapytaniu:
[php:1:a8cb01bf4f]<?php
$sel = "SELECT DISTINCT nr_kursu FROM numery_kursow";
$bierz = mysql_query($sel, $conn);
while ($result = @mysql_fetch_array($bierz))
{
$dane = "SELECT * FROM numery_kursow, miejscowosc WHERE numery_kursow.id_miejscowosci=miejscowosc.id AND nr_kursu=$result[nr_kursu]";
$bierz2 = mysql_query($dane, $conn);
while ($result2 = @mysql_fetch_array($bierz2))
//wyniki zapytania
}
?>[/php:1:a8cb01bf4f]
Przy założeniu, że w tabeli miejscowosc znajduje się: id | nazwa_miejscowosci

Dzięki temu połączeniu tabel do każdego wiersza zostaną dodane nazwy miejscowości, wczytane z tabeli miejscowosc.
EliaS
woow dzieki wlasnie o cos takiego mi chodzilo.
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.