probleme cu while ajutorrrrrrrr rezolvat

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator

romisori2224
PHPRomania Supporter
Mesaje: 21
Membru din: Dum Aug 19, 2007 10:43 am

probleme cu while ajutorrrrrrrr rezolvat

Mesajde romisori2224 » Vin Iul 03, 2009 10:11 am

buna am o problema cu un while, cred imi afiseaza de prea multe ori adica am doua randuri si alea mi le arata de 100 de ori cred doua cate doua

ceva de genul arata codul

<?
$sqlTranzactii = "SELECT id_tranzactie, data_tranzactie, nume_cumparator, adresa_cumparator FROM tranzactii WHERE comanda_onorata=0";
$resursaTranzactii = mysql_query($sqlTranzactii);
while($rowTranzactie = mysql_fetch_array($resursaTranzactii))
{
?>
<form action="prelucrare_comenzi.php" method="post">
<font color="#3333CC">Data comenzii</font>: <b>
<?=$rowTranzactie['data_tranzactie']?>
</b>
<div style="width:500px; border:1px solid #ffffff; background-color:#f9f1e7; padding:5px">
<b>Nume cumparator: <?=$rowTranzactie['nume_cumparator']?></b><br>
Adresa cumparator: <?=$rowTranzactie['adresa_cumparator']?>
<table border="1" cellpadding="4" cellspacing="0">
<tr>
<td align="center"><b><font color="#333399">Produs</font></b></td>
<td align="center"><b><font color="#333399">Nr. buc</font></b></td>
<td align="center"><b><font color="#3333CC">Pret</font></b></td>
<td align="center"><b><font color="#3333CC">Total</font></b></td>
</tr>
<?
$sqlProduse = "SELECT produse.nume, produse.pret,vanzari.nr_buc
FROM vanzari, produse, subcategorii
WHERE produse.produs_id=vanzari.produs_id

AND id_tranzactie=".$rowTranzactie['id_tranzactie'];
$resursaProduse = mysql_query($sqlProduse);
while ($rowProdus = mysql_fetch_array($resursaProduse))
{

print '<tr><td>'
.$rowProdus['nume'].
'</td>
<td align="right">'
.$rowProdus['nr_buc'].'</td>
<td align="right">'
.$rowProdus['pret'].'</td>';
$total = $rowProdus['pret'] * $rowProdus['nr_buc'];
print '<td align="right">'.$total.
'</td></tr>';
$totalGeneral = $totalGeneral + $total;
}

?>
<tr>
<td colspan="3" align="right"><font color="#3333CC">Total comanda</font>:
</td>
<td>
<?=$totalGeneral?>
<font color="#3333CC">lei</font></td>
</tr>
</table>
<input type="hidden" name="id_tranzactie" value="<?=$rowTranzactie['id_tranzactie']?>">
<input type="submit" name="comanda_onorata" value="Comanda onorata">
<input type="submit" name="anuleaza_comanda" value="Anuleaza comanda">
</div>
</form>
<?
}
?>


asa ca dac astiti cumva cum sa imi afiseze numai cele doua randuri
daca pun if atunci imi afiseaza doar primul rand care il gaseste in tabela
help :(
Ultima oară modificat Lun Iul 06, 2009 12:33 pm de către romisori2224, modificat 1 dată în total.



Avatar utilizator
Ctek
Senior Member
Mesaje: 310
Membru din: Dum Oct 05, 2008 12:05 am
Contact:

Mesajde Ctek » Vin Iul 03, 2009 12:48 pm


guppy
Senior Member
Mesaje: 353
Membru din: Joi Mai 03, 2007 12:14 am

Mesajde guppy » Vin Iul 03, 2009 1:40 pm


romisori2224
PHPRomania Supporter
Mesaje: 21
Membru din: Dum Aug 19, 2007 10:43 am

Mesajde romisori2224 » Vin Iul 03, 2009 3:44 pm

mersi pt raspunsuri si nu merge

deci primul while este pentru a-mi afisa mai multi cienti care au cumparat si ce au cumparat al doilea while este pentru ami afisa toate produsele care leau cumparat


daca scap de primul while atunci nu-mi afiseaza numai un cumparator pe primul
asa ca nu am cum sa sterg pe primul while la al doilea m probleme ca imi pune cele doua produse pana se "plictiseste" :)
asa ca va rog dac aaveti alte idei ............................

Avatar utilizator
Ctek
Senior Member
Mesaje: 310
Membru din: Dum Oct 05, 2008 12:05 am
Contact:

Mesajde Ctek » Vin Iul 03, 2009 4:18 pm

iti pune rezultate "pana se plictiseste" pentru ca nu ai query-ul corect.
L-ai executat si in afara scriptului ??

romisori2224
PHPRomania Supporter
Mesaje: 21
Membru din: Dum Aug 19, 2007 10:43 am

Mesajde romisori2224 » Vin Iul 03, 2009 4:21 pm

da am facut si da nu este corect acum ma chiui sa vad cum il fac sa imi selecteze numai alea care au id_tranzactie din tabela vanzari si tranzactii egale..... queryul mi le ia pe alea egale dar le baga la un loc nu tine cont ca produsele sunt de la alt client

am facut ceva de genul
"SELECT produse.pret, produse.nume, vanzari.id_tranzactie, vanzari.nr_buc, tranzactii.id_tranzactie, vanzari.id_tranzactie, vanzari.produs_id, produse.produs_id
FROM vanzari, produse, tranzactii
WHERE vanzari.id_tranzactie=tranzactii.id_tranzactie
AND produse.produs_id=vanzari.produs_id";

numai ca am facut si mai simplu dar incerc acuma tot ce-mi trece prin cap :)
o parere please.............

Avatar utilizator
Ctek
Senior Member
Mesaje: 310
Membru din: Dum Oct 05, 2008 12:05 am
Contact:

Mesajde Ctek » Vin Iul 03, 2009 4:33 pm

pai... mai simplu e sa vezi ce campuri folosesti si numai pe alea sa le selectezi din ambele tabele
si incearca sa delimitezi operatiile cu paranteze ( )

WHERE ((vanzari.id_tranzactie=tranzactii.id_tranzactie )
AND (produse.produs_id=vanzari.produs_id))";

PS vezi ca ai scris vanzari.id_tranzactie de doua ori in select.

iti returneaza toate inregistrarile posibile pentru ca nu ai facut JOIN-ul cum trebuie

vezi ce cu ce join-uiesti si pe ce (adica: ON tabela1.camp_x=tabela_2.camp_y )

select tabela_X.camp_a,tabela_Y.camp_b,camp_c from tabela_X INNER JOIN tabela_Y INNER JOIN tabela_W ON ( tabela_X.a = tabela_Y.a) AND (tabela_X.c = tabelaW.c)) where .....

Cauta mai multe despre INNER JOIN.

Bafta

romisori2224
PHPRomania Supporter
Mesaje: 21
Membru din: Dum Aug 19, 2007 10:43 am

Mesajde romisori2224 » Vin Iul 03, 2009 5:03 pm

am reusit mersi pt raspunsuri aci este cum

<?
$sqlProduse = "SELECT produse.nume, produse.pret,vanzari.nr_buc,vanzari.id_tranzactie
FROM vanzari, produse
WHERE produse.produs_id=vanzari.produs_id
AND vanzari.id_tranzactie=".$rowTranzactie['id_tranzactie'];
$resursaProduse = mysql_query($sqlProduse);
while ($rowProdus = mysql_fetch_array($resursaProduse))
{

echo '<tr><td>'
.$rowProdus['nume'].
'</td>
<td align="right">'
.$rowProdus['nr_buc'].'</td>
<td align="right">'
.$rowProdus['pret'].'</td>';
$total = $rowProdus['pret'] * $rowProdus['nr_buc'];
echo '<td align="right">'.$total.
'</td></tr>';
$totalGeneral = $totalGeneral + $total;
}

?>



mersi

adic91
New Member
Mesaje: 1
Membru din: Sâm Mai 05, 2012 2:11 pm

Mesajde adic91 » Lun Mai 14, 2012 1:44 pm


Avatar utilizator
mihaitha
Senior Member
Mesaje: 2383
Membru din: Vin Mai 04, 2007 12:40 pm
Localitate: Sibiu
Contact:

Mesajde mihaitha » Lun Mai 14, 2012 2:29 pm



Înapoi la “PHP Incepători”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Google [Bot] și 19 vizitatori