Array uitlezen
Situatie
Ik heb een array aangemaakt in PHP.
De naam van het array is $Totaal_Voorraad[] = array($totaal);
Dit array heeft de volgende inhoud Array ( [0] => Array ( [0] => 30 ) [1] => Array ( [0] => 0 ) )
Nu wil ik via de volgende code het array uitlezen (deze code zorgt er ook voor dat er een aantal database velden opgehaald en getoond worden. Het is overigens maar een gedeelte van de code. Ik heb o.a. de SQL query code weglaten om het niet te complex te maken. Wat ik wil is dat hij bij het eerste record 30 weer geeft en bij het volgende record 0
echo "<table border='1' >";
echo "<tr><th>TEST ARRAY</th> </tr>";
foreach($Totaal_Voorraad as $index => $value) {
while($row_voorraad = mysql_fetch_array( $result_voorraad )) {
echo "<td>";
print_r($Totaal_Voorraad);
echo "</td>";
}
}
echo "</table>";
}
Output van de print_r($Totaal_Voorraad); is tevens Array ( [0] => Array ( [0] => 30 ) [1] => Array ( [0] => 0 ) )
Gewijzigd op 01/01/1970 01:00:00 door Piet
geeft???
deze even door als je wilt, ik denk dat je dan wel inziet wat je fout doet. of deze.
Neem Gewijzigd op 01/01/1970 01:00:00 door Mr.Moe
koen schreef op 22.01.2010 16:04:
print_r($totaal_vooraad[1]);
geeft???
geeft???
Ik krijg dan netjes 0 terug en als ik print_r($totaal_vooraad[0]); doe krijg ik 30 terug....
Gewijzigd op 01/01/1970 01:00:00 door piet
Mr.Moe schreef op 22.01.2010 16:07:
Als ik dit er van maak
while($row_voorraad = mysql_fetch_array( $result_voorraad )) {
while(list($key, $val) = each($Totaal_Voorraad)) {
echo $key . " bevat de waarde " . $val . "<br>\n";
Krijg ik netjes 0 en 1 terug (hoe kan ik de echte array waarde afdrukken?
Maar als ik de while omdraai dan krijg ik maar 2 database record terug. Hij gaat dus niet meer door mijn 2de while lus heen.....
Gewijzigd op 01/01/1970 01:00:00 door piet
Dus de eerste waarde in array is een nieuwe array...
koen schreef op 22.01.2010 16:54:
Array[] = new array,
Dus de eerste waarde in array is een nieuwe array...
Dus de eerste waarde in array is een nieuwe array...
Jouw antwoord snap ik niet helemaal?
Vult de eerste plaats van je array,
Als je daarin new array plaats, heb je een array in je eerste plek van je array.
Haal die [] eens weg bij die declaratie, en try again
Voor duidelijkheid, doel op je totaalarray
Gebruikte dummy-namen lette niet erg goed op.
Gewijzigd op 01/01/1970 01:00:00 door koen
koen schreef op 22.01.2010 17:00:
Array[] =...
Vult de eerste plaats van je array,
Als je daarin new array plaats, heb je een array in je eerste plek van je array.
Haal die [] eens weg bij die declaratie, en try again
Vult de eerste plaats van je array,
Als je daarin new array plaats, heb je een array in je eerste plek van je array.
Haal die [] eens weg bij die declaratie, en try again
Ik kan even geen [] vinden in mijn code? Behalve in mijn array declaratie
$Totaal_Voorraad[] = array($totaal); <-- maar volgens de gegeven link moet ik hem zo definieren..toch?
echo "<h1>Voorraad </h1>";
if (mysql_num_rows($result_voorraad) >= 1) {
echo "<table border='1'>"; //deze regel
echo "<tr><th>">TEST</th></tr>";
while(list($key, $val) = each($Totaal_Voorraad)) {
while($row_voorraad = mysql_fetch_array( $result_voorraad )) {
echo "<td style=\"width: 7.6em\">";
echo '<p>'.$Totaal_Voorraad.'</p>';
echo "</td>";
}
}
echo "</table>";
}
Gewijzigd op 01/01/1970 01:00:00 door piet
Je voorbeeld bovenin bevatte []
Nu moet je $row als je array beschouwen, doe eens print_r($row_vooraad);
Gewijzigd op 01/01/1970 01:00:00 door koen
koen schreef op 22.01.2010 17:06:
Ohw nu zie ik t,
Je voorbeeld bovenin bevatte []
Nu moet je $row als je array beschouwen, doe eens print_r($row_vooraad);
Je voorbeeld bovenin bevatte []
Nu moet je $row als je array beschouwen, doe eens print_r($row_vooraad);
$Totaal_Voorraad = array($totaal); geeft dit resultaat ( [0] => 0 )
$Totaal_Voorraad[] = array($totaal); geeft dit resultaat ( [0] => Array ( [0] => 30 ) [1] => Array ( [0] => 0 ) )
$Totaal_Voorraad[] = array($totaal); lijkt goed te zijn...
koen schreef op 22.01.2010 17:06:
Ohw nu zie ik t,
Je voorbeeld bovenin bevatte []
Nu moet je $row als je array beschouwen, doe eens print_r($row_vooraad);
Je voorbeeld bovenin bevatte []
Nu moet je $row als je array beschouwen, doe eens print_r($row_vooraad);
Dan krijg ik alleen maar de waarde uit mijn database query. Ofwel de verkeerde array..
Gewijzigd op 01/01/1970 01:00:00 door piet
In je eerste post heb je een array() in een array() in een array().
SanThe schreef op 22.01.2010 19:27:
Misschien duidelijker uitleggen wat de bedoeling is?
In je eerste post heb je een array() in een array() in een array().
In je eerste post heb je een array() in een array() in een array().
Je hebt helemaal gelijk over die array declaratie. Ik had hem per ongeluk verkeerd geknipt/geplakt
$Totaal_Voorraad[] = $totaal; <-- zo moet de declaratie zijn
Wat ik probeer (en dus wat ik wil) is dat van de beide array's de waardes worden weergegeven ($result_voorraad en van $Totaal_Voorraad) in 1 tabel.
Nu ben ik ondertussen zover dat ik de waarde uit de array van $Totaal_Voorraad[] te zien krijg als een getal ( via de regel echo '<p>'.$val.'</p>'; de getallen 0 en 30) maar dan krijg ik alleen het eerste record te zien van mijn mysql_fetch_array( $result_voorraad )), en niet de rest.
Als ik de while(list($key, $val) = each($Totaal_Voorraad)) omdraai krijg ik wel weer het resultaat van mijn mysql_fetch_array te zien maar weer niet de waarde uit het (andere) array.
Ik weet dat
mysql_fetch_array( $result_voorraad )) en $Totaal_Voorraad[] = $totaal; beiden array's zijn dat!
Zit het probleem in mijn if statement? if (mysql_num_rows($result_voorraad) >= 1 && $Totaal_Voorraad[] >=1 ) { werkt overigens niet.....weet ook niet of dit zo mag? Misschien dat een van jullie dit weet?
stuk code
---------------------------------------------------------------
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if (mysql_num_rows($result_voorraad) >= 1) {
echo "<table border='1' class=\"sortable\" cellspacing=\"2\" width=\"650\" >"; //deze regel
echo "<tr><th>aantal 1</th> <th>aantal 2</th> </tr>";
while($row_voorraad = mysql_fetch_array( $result_voorraad )) {
while(list($key, $val) = each($Totaal_Voorraad)) {
echo "<td style=\"width: 7.6em\">";
echo "$row_voorraad[aantal1]";
echo "</td>";
echo "<td style=\"width: 7.6em\">";
echo '<p>'.$val.'</p>';
echo "</td>";
}
}
echo "</table>";
}
echo "<table border='1' class=\"sortable\" cellspacing=\"2\" width=\"650\" >"; //deze regel
echo "<tr><th>aantal 1</th> <th>aantal 2</th> </tr>";
while($row_voorraad = mysql_fetch_array( $result_voorraad )) {
while(list($key, $val) = each($Totaal_Voorraad)) {
echo "<td style=\"width: 7.6em\">";
echo "$row_voorraad[aantal1]";
echo "</td>";
echo "<td style=\"width: 7.6em\">";
echo '<p>'.$val.'</p>';
echo "</td>";
}
}
echo "</table>";
}
Gewijzigd op 01/01/1970 01:00:00 door piet
&& vervangen met 'and'
koen schreef op 25.01.2010 12:13:
&& vervangen met 'and'
Nee, dat is dus niet waar. Ze doen ongeveer hetzelfde, maar ze vervangen elkaar niet. Je kunt niet in elke situatie && i.p.v. AND doen en andersom.
Zie daarvoor dit topic en het voorbeeld van Richard van Velzen.
echo "<table border='1' class=\"sortable\" cellspacing=\"2\" width=\"650\" >";
echo "<tr><th>aantal 1</th> <th>aantal 2</th> </tr>";
while($row_voorraad = mysql_fetch_array( $result_voorraad ) AND (list($key, $val) = each($Totaal_Voorraad)) ) {
echo "<td style=\"width: 7.6em\">";
echo "$row_voorraad[aantal1]";
echo "</td>";
echo "<td style=\"width: 7.6em\">";
echo '<p>'.$val.'</p>';
echo "</td>";
}
echo "</table>";
}
Er zit inderdaad verschil tussen && en AND :) hahahaha
Als ik het via bovenstaande code doe lijkt het te werken. Maar als ik meer dan 1 record terug krijg van mijn database query dan draait hij de waardes om uit het array $Totaal_Voorraad. Is er een mogelijkheid om dit te synchroniseren. Dus dat record 1 uit de ene array (($result_voorraad) gelijk gesteld wordt met record 1 uit het tweede array ($Totaal_Voorraad)?
Gewijzigd op 01/01/1970 01:00:00 door piet
Karl schreef op 25.01.2010 12:34:
Nee, dat is dus niet waar. Ze doen ongeveer hetzelfde, maar ze vervangen elkaar niet. Je kunt niet in elke situatie && i.p.v. AND doen en andersom.
Zie daarvoor dit topic en het voorbeeld van Richard van Velzen.
koen schreef op 25.01.2010 12:13:
&& vervangen met 'and'
Nee, dat is dus niet waar. Ze doen ongeveer hetzelfde, maar ze vervangen elkaar niet. Je kunt niet in elke situatie && i.p.v. AND doen en andersom.
Zie daarvoor dit topic en het voorbeeld van Richard van Velzen.
Bedankt dit heeft wel geholpen