Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z przypisywaniem zmiennych z wyniku zapytania sql
Forum PHP.pl > Forum > Bazy danych > MySQL
EliaS
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
echo $select2;

sprawdz czy sie co sie Tobie wyswietli

chyba nie musza byc apostrofy '

Lukasz
kszychu
A może napisz WYRAŹNIE gdzie się ta pętla zaczyna i gdzie się kończy, bo zaakończenia jakoś nie widzę.
stoprocent
[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
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
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
to jest zle:

$stacja = "$result1[nr_porzadkowy]";

powinno byc: $stacja = $result1["nr_porzadkowy"];

Kossa
kszychu
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
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
Czytaj post powyżej, masz tam jasno napisane.
EliaS
to tez nie dziala wciaz mam tylko wartosc z danego przebiegu a nie z obu w jednej tablicy.
kszychu
Sorry, ale nie wierzę! Wyświetl za pętlą coś takiego:

print_r($stacja);

i powiedz co widzisz.
EliaS
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
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
wyciagnełem zupełnie przed wszystkie while i działa!!!! Wielkie dzięki oczywiscie punkt dla Ciebie! biggrin.gif
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.