EliaS
3.06.2004, 23:33:49
Mam takie cosik:
[php:1:9703af67a9]<?php
while ($result = @mysql_fetch_array($do))
{
$check = "SELECT * FROM trasy WHERE id_miejscowosci=$result[id] AND
id_trasy='$trasa' ORDER BY nr_porzadkowy";
$do1 = mysql_query($check, $conn);
$result1 = @mysql_fetch_array($do1);
$stacja_poczatkowa = $result1[nr_porzadkowy];
$result2 = @mysql_fetch_array($do1);
$stacja_koncowa = $result2[nr_porzadkowy];
$select2 = "SELECT * FROM trasy WHERE id_trasy='$trasa' AND nr_porzadkowy BETWEEN
'$stacja_poczatkowa' AND '$stacja_koncowa' ";
?>[/php:1:9703af67a9]
jednak zmiennych $stacja_poczatkowa oraz _koncowa nie podstawia mi w tejze pętli do kolejnego zapytania.w petli tej wiem ze jednak dobrze wyswietla obie zmienne,natomiast poza petla jest juz widoczna tylko zmienna $stacja_koncowa.
Czy można jakoś tak przypisac wynik zapytania do zmiennych zeby byla widoczna kazda zmienna, i dlaczego nie chce mi podstawic tych zmiennych do tego drugiego zapytania?
?>[/php]
kossa
4.06.2004, 09:20:38
echo $select2;
sprawdz czy sie co sie Tobie wyswietli
chyba nie musza byc apostrofy '
Lukasz
kszychu
4.06.2004, 09:25:16
A może napisz WYRAŹNIE gdzie się ta pętla zaczyna i gdzie się kończy, bo zaakończenia jakoś nie widzę.
stoprocent
4.06.2004, 09:26:27
[php:1:6405f6894a]<?php
while ($result = @mysql_fetch_array($do))
{
$check = "SELECT * FROM trasy WHERE id_miejscowosci='".$result['id']."' AND
id_trasy='".$trasa."' ORDER BY nr_porzadkowy";
$do1 = mysql_query($check, $conn);
$result1 = @mysql_fetch_array($do1);
$stacja_poczatkowa = $result1['nr_porzadkowy'];
$result2 = @mysql_fetch_array($do1);
$stacja_koncowa = $result2['nr_porzadkowy'];
$select2 = "SELECT * FROM trasy WHERE id_trasy='".$trasa."' AND nr_porzadkowy BETWEEN
'".$stacja_poczatkowa."' AND '".$stacja_koncowa."' ";
?>[/php:1:6405f6894a]
Ale nie rozumiem tu kilku rzeczy , np tego :
[php:1:6405f6894a]<?php
$do1 = mysql_query($check, $conn);
$result1 = @mysql_fetch_array($do1);
$stacja_poczatkowa = $result1['nr_porzadkowy'];
$result2 = @mysql_fetch_array($do1);
$stacja_koncowa = $result2['nr_porzadkowy'];
?>[/php:1:6405f6894a]
result1 i result2 to sa te same informacje .
Podaj wiecej kodu .
EliaS
4.06.2004, 12:26:56
Kod już troszke ewaluował ale i tak nie moge zrobić tego co chce czyli cale petle od poczatku wygladaja tak:
[php:1:5c22934652]<?php
$city = "SELECT * FROM miejscowosci WHERE miejscowosc='$odjazd' || miejscowosc='$przyjazd'";
$do = mysql_query($city, $conn);
while ($result = @mysql_fetch_array($do))
{
$check = "SELECT * FROM trasy WHERE id_miejscowosci=$result[id] AND id_trasy='$trasa' ORDER BY nr_porzadkowy";
$do1 = mysql_query($check, $conn);
$result1 = @mysql_fetch_array($do1))
$stacja = "$result1[nr_porzadkowy]";
}
echo ("$stacja[0]<br>$stacja[1]");
if (isset($stacja[1]))
włączyłem jeszcze instrukcje if z myślą zeby wykonał poniższe polecenie dopiero za drugim przebiegiem pętli czyli wtedy gdy już oba elementy tablicy $stacja beda ustawione
{
$select2 = "SELECT * FROM trasy WHERE nr_porzadkowy BETWEEN '$stacja[0]' AND '$stacja[1]' AND id_trasy='$trasa'";
$do2 = mysql_query($select2, $conn);
while ($result3 = mysql_fetch_array($do2))
{
echo $result3[id_miejscowosci];
$upd = "UPDATE rezerwacje SET miejsca = miejsca -'$osoby' WHERE id_miejscowosci='$result3[id_miejscowosci]' AND data='$data'";
mysql_query($upd, $conn);
}
}else{
echo "dupa";
}
}
?>[/php:1:5c22934652]
niestety dalej nie wykonuje mi zapytania z warunkiem BETWEEN a z kolei calkowicie poza petla tablica $stacja ma przypisana tylko jedna wartość z ostatniego przebiegu petli.
kszychu
4.06.2004, 12:30:17
Cytat
[php:1:d5719feffd]<?php
//....
$stacja = "$result1[nr_porzadkowy]";
//.....
?>[/php:1:d5719feffd]
a z kolei calkowicie poza petla tablica $stacja ma przypisana tylko jedna wartość z ostatniego przebiegu petli.
Jeśli to jest tablica to traktuj ją jak tablicę. Pewnie się obraziła, że traktujesz ją jak zwykłego stringa i za każdym przebiegiem zmieniasz jej wartość.
I popraw to:
[php:1:d5719feffd]<?php
$select2 = "SELECT * FROM trasy WHERE nr_porzadkowy BETWEEN '$stacja[0]' AND
'$stacja[1]' AND id_trasy='$trasa'";
?>[/php:1:d5719feffd]
tak
[php:1:d5719feffd]<?php
$select2 = "SELECT * FROM trasy WHERE nr_porzadkowy BETWEEN '".$stacja[0]."' AND
'".$stacja[1]."' AND id_trasy='$trasa'";
?>[/php:1:d5719feffd]
kossa
4.06.2004, 13:05:23
to jest zle:
$stacja = "$result1[nr_porzadkowy]";
powinno byc: $stacja = $result1["nr_porzadkowy"];
Kossa
kszychu
4.06.2004, 13:12:20
Cytat
to jest zle:
$stacja = "$result1[nr_porzadkowy]";
powinno byc: $stacja = $result1["nr_porzadkowy"];
Kossa
Jednakowoż jeśli to ma być tablica to ja zrobiłbym:
[php:1:58131f713b]<?php
$stacja[$i++] = $result1['nr_porzadkowy'];
?>[/php:1:58131f713b]
A przed while ustawiłbym jeszcze $i = 0;
EliaS
4.06.2004, 13:29:45
No faktycznie z ta tablica przegiolem ale sek w tym ze nawet prawidlowo przypisana tablica tez mi cos nie dziala...tzn. elementy sa widoczne wewnatrz petli a poza nia jest tylko ostatnia czyli za kazdym przebiegiem petli do tablicy przypisuje wartosci z danego przebiegu wwwrrr a ja chce zeby ustawil i jedna i druga wartosc w tej tablicy tak zebym obie mial poza petla widoczne.
Moglbys napisac jak odpowiednio przypisac do tej tablicy za pierwszym przebiegiem -pierwsza wartosc zapytania w pierwszym elemencie tablicy i za drugim przebiegiem druga wartosc jako drugi element? PLEAASEEE HELP ME bo juz mi sie mozg przegrzewa aaa
kszychu
4.06.2004, 13:31:17
Czytaj post powyżej, masz tam jasno napisane.
EliaS
4.06.2004, 13:50:31
to tez nie dziala wciaz mam tylko wartosc z danego przebiegu a nie z obu w jednej tablicy.
kszychu
4.06.2004, 13:54:12
Sorry, ale nie wierzę! Wyświetl za pętlą coś takiego:
print_r($stacja);
i powiedz co widzisz.
EliaS
4.06.2004, 14:12:41
Wyswietla tylko: Array ( [0] => 3 )
a cały kod w tej chwili wyglada tak:
[php:1:4c6ab36aa4]<?php
$city = "SELECT * FROM miejscowosci WHERE miejscowosc='$odjazd' || miejscowosc='$przyjazd'";
$do = mysql_query($city, $conn);
while ($result = @mysql_fetch_array($do))
{
$check = "SELECT * FROM trasy WHERE id_miejscowosci=$result[id] AND id_trasy='$trasa' ORDER BY nr_porzadkowy";
$do1 = mysql_query($check, $conn);
$i = "0";
while ($result1 = @mysql_fetch_array($do1))
{
$stacja[$i++] = $result1['nr_porzadkowy'];
}
if (isset($stacja[koniec]))
{
$select2 = "SELECT * FROM trasy WHERE nr_porzadkowy BETWEEN '".$stacja[poczatek]."' AND '".$stacja[koniec]."' AND id_trasy='$trasa'";
$do2 = mysql_query($select2, $conn);
while ($result3 = mysql_fetch_array($do2))
{
echo "$result3[id_miejscowosci]";
$upd = "UPDATE rezerwacje SET miejsca = miejsca -'$osoby' WHERE id_miejscowosci='$result3[id_miejscowosci]' AND data='$data'";
mysql_query($upd, $conn);
}
}else{
echo "dupa";
}
}
print_r($stacja);
?>[/php:1:4c6ab36aa4]
?>[/php]
kszychu
4.06.2004, 14:19:02
A mówiłem: $i = 0 przed while! O przepraszam.... on jest przed while, ale jest też za. Nic nie rozumiem. MOgę wiedzieć co ma na celu umieszczenie tego drugiego while w pierwszym?
I wywal $i = 0 prezed pierwszego while!
Wywal to w ogóle na początek skryptu!
Wywal to w ogóle!..... tego nie rób, zagalopowałem się.
EliaS
4.06.2004, 15:33:31
wyciagnełem zupełnie przed wszystkie while i działa!!!! Wielkie dzięki oczywiscie punkt dla Ciebie!
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.