Avatar billede Chup Nybegynder
26. januar 2011 - 12:15 Der er 7 kommentarer

PHP + MySQL, loop query

Hejsa,

Jeg har nogle problemer med mit script:
[code]
while($i < $EAN_COUNT)
{
    $i2 = $i++;
    $test2 = $EANNR[$i2];
    echo $test2; // Tester, at de rigtige data er i array.

    $XXXX = "SELECT * FROM XXXX WHERE EAN ='$test2'";
    $XXXXresult = mysql_query($XXXX) or die("Mysql Error: ".mysql_error());
    $XXXXrow = mysql_fetch_row($XXXXresult) ;
    $vareB = $XXXXrow['4'];
    $kostB = $XXXXrow['7'];
    $lagerB = $XXXXrow['5'];
    print_r($XXXXrow);

echo "
    <tr><td>$vareB</td><td><strong>Kost:</strong> $kostB,- ex moms</td><td><strong>Lager:</strong> $lagerB stk</td></tr>
    ";

}
[/code]

Mit problem er således at jeg har et array med nogle værdier i, som jeg skal have kørt ind i en MySQL query.

Men når jeg kører en query og derefter printer det array ud som den laver, virker det som om den kun kører den sidste værdi i mit $EANNR array.

Når jeg så echoer data fra array'et så er alle linjer blanke, på nær den sidste.

Det har kørt før, men fuckede et eller andet op, så startede forfra. Men nu kan jeg ikke få det til at køre ;\

Før kørte det med et foreach loop.

Er der nogle kloge hoveder herinde som vil hjælpe :D?

Mange tak på forhånd,

Daniel
Avatar billede HBP2 Praktikant
26. januar 2011 - 13:24 #1
Måske du skulle starte med at rydde lidt op i scriptet så det er til at forstå hvad der foregår - erstatte &lt; med <, &#039; med ', fjerne mærkelige XXXX i variabelnavne osv. Altså gøre det lidt nemmere for dem som du ønsker skal hjælpe dig.
Avatar billede Chup Nybegynder
26. januar 2011 - 13:30 #2
Den lavede vist ged i koden da jeg bruge [code] tagget.
Så her er den uden:


while($i < $EAN_COUNT)
{
    $i2 = $i++;
    $test2 = $EANNR[$i2];
    echo $test2;

    $b = "SELECT * FROM b WHERE EAN ='$test2'";
    $bresult = mysql_query($b) or die("Mysql Error: ".mysql_error());
    $brow = mysql_fetch_row($bresult) ;
    $vareB = $brow['4'];
    $kostB = $brow['7'];
    $lagerB = $brow['5'];
    print_r($brow);
   
       
    echo "
    <tr><td>$vareB</td><td><strong>Kost:</strong> $kostB,- ex moms</td><td><strong>Lager:</strong> $lagerB stk</td></tr>
    ";
}
    ?>
Avatar billede HBP2 Praktikant
26. januar 2011 - 13:50 #3
Kan du komme med et eksempel på output?
Avatar billede Chup Nybegynder
26. januar 2011 - 14:03 #4
Array ( [0] => 1400 [1] => Product [2] => 440527 [3] => 20958259 [4] => ProductName [5] => 4 [6] => In stock [7] => 451 [8] => 10 [9] => 5397039637679 [10] => www.1111.dk )

Når jeg kører 1 stk igennem

Når der er flere viser den kun den sidste i array.

Den giver dette resultat hvis jeg taster to forskellige ind.

    Kost: ,- ex moms    Lager: stk
ProductName    Kost: 451,- ex moms    Lager: 4 stk

Altså den kører godt nok loopet 2 gange, men den får ikke data fra de første.
Avatar billede HBP2 Praktikant
26. januar 2011 - 14:15 #5
Det er ikke hvad jeg vil kalde "output" - det er bare en del af output; du inkluderer ikke linierne med  echo $test2;  så det er ikke til at vide hvor mange gange løkken bliver gennemløbet. Skriv osse $b og $i2 ud, og en  print_r($EANNR)  ville osse være rar.
Avatar billede showsource Seniormester
26. januar 2011 - 14:20 #6
Brug
mysql_free_result( $bresult);

inden afslutning af din while-løkke
Avatar billede Chup Nybegynder
26. januar 2011 - 16:41 #7
@HBP2
Når jeg laver: echo $b; får jeg:
1) SELECT * FROM b WHERE EAN ='5397039637679 '
2) SELECT * FROM b WHERE EAN ='5390660167911'

Dvs fejlen ligger i mellemrummet. Jeg fandt en function på nettet til, at fjerne mellemrum fra alle members i et array, og nu kører det :D

Vil du smide, et svar? Så får du lige points :)


@showsource
mysql_free_result( $bresult); gjorde ingen forskel :\
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester