Array fout
hey, ik krijg telkens een fout met dit, ik weet niet wat ik fout doet.
Parse error: parse error, unexpected T_WHILE, expecting ')' in D:\Webserver\Root\test_types.php on line 11
Parse error: parse error, unexpected T_WHILE, expecting ')' in D:\Webserver\Root\test_types.php on line 11
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Gewijzigd op 01/01/1970 01:00:00 door Raymen
Je kunt niet zomaar een while loop in een array zetten. Dat zou je dan zo moeten doen:
Ik zie trouwens ook niet in waarom je de key en de value van een entry in de array dezelfde waarde zou geven. Dat heb ik in bovenstaand voorbeeldje dus niet gedaan.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$aGames = array();
while($row = mysql_fetch_assoc($result))
{
$aGames[] = $row['game'];
}
?>
$aGames = array();
while($row = mysql_fetch_assoc($result))
{
$aGames[] = $row['game'];
}
?>
Ik zie trouwens ook niet in waarom je de key en de value van een entry in de array dezelfde waarde zou geven. Dat heb ik in bovenstaand voorbeeldje dus niet gedaan.
bedankt, het werkt :)
maar nu als ik 2 van die arrays wilt, krijg ik deze error:
Notice: Undefined variable: aType in D:\Webserver\Root\test_types.php on line 27
Warning: Invalid argument supplied for foreach() in D:\Webserver\Root\test_types.php on line 27
Notice: Undefined variable: aType in D:\Webserver\Root\test_types.php on line 27
Warning: Invalid argument supplied for foreach() in D:\Webserver\Root\test_types.php on line 27
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
require_once "maincore.php";
$query = "SELECT game,xgame,type FROM projects_types";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_assoc($result))
{
$aGames[$row['game']]= $row['game'];
}
echo "<select name=\"game\" class='textbox'>";
foreach($aGames AS $gKey => $gValue)
{
echo "<option value='".$gKey."'";
echo ">".$gValue."</option>";
}
while($row = mysql_fetch_assoc($result))
{
$aType[$row['type']]= $row['type'];
}
;
echo "<select name=\"type\" class='textbox'>";
foreach($aType AS $gKey => $gValue)
{
echo "<option value='".$gKey."'";
echo ">".$gValue."</option>";
}
?>
require_once "maincore.php";
$query = "SELECT game,xgame,type FROM projects_types";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_assoc($result))
{
$aGames[$row['game']]= $row['game'];
}
echo "<select name=\"game\" class='textbox'>";
foreach($aGames AS $gKey => $gValue)
{
echo "<option value='".$gKey."'";
echo ">".$gValue."</option>";
}
while($row = mysql_fetch_assoc($result))
{
$aType[$row['type']]= $row['type'];
}
;
echo "<select name=\"type\" class='textbox'>";
foreach($aType AS $gKey => $gValue)
{
echo "<option value='".$gKey."'";
echo ">".$gValue."</option>";
}
?>
Nee, dan moet je wel alles binnen die ene while loop houden:
En ik vraag me nog steeds af, waarom wil je de key van de array de zelfde waarde geven als de value? Dat is niet erg logisch ;-)
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$aGames = array();
$aType = array();
while($row = mysql_fetch_assoc($result))
{
$aGames[] = $row['game'];
$aType[] = $row['type'];
}
?>
$aGames = array();
$aType = array();
while($row = mysql_fetch_assoc($result))
{
$aGames[] = $row['game'];
$aType[] = $row['type'];
}
?>
En ik vraag me nog steeds af, waarom wil je de key van de array de zelfde waarde geven als de value? Dat is niet erg logisch ;-)
ik zou niet weten hoe ik het anders moet doen, maar dat heb ik gedaan maar nu is de 2e Row van type geen select box.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?
while($row = mysql_fetch_assoc($result))
{
$aGames[] = $row['game'];
$aType[] = $row['type'];
}
echo "<select name=\"game\" class='textbox'>";
foreach($aGames AS $gKey => $gValue)
{
echo "<option value='".$gKey."'";
echo ">".$gValue."</option>";
}
echo "<select name=\"type\" class='textbox'>";
foreach($aType AS $gKey => $gValue)
{
echo "<option value='".$gKey."'";
echo ">".$gValue."</option>";
}
[/code]
while($row = mysql_fetch_assoc($result))
{
$aGames[] = $row['game'];
$aType[] = $row['type'];
}
echo "<select name=\"game\" class='textbox'>";
foreach($aGames AS $gKey => $gValue)
{
echo "<option value='".$gKey."'";
echo ">".$gValue."</option>";
}
echo "<select name=\"type\" class='textbox'>";
foreach($aType AS $gKey => $gValue)
{
echo "<option value='".$gKey."'";
echo ">".$gValue."</option>";
}
[/code]
Dat komt omdat je de eerste <select> niet afsluit:
Daarnaast kun je bij een echo ook beter enkele quotes gebruiken. Op die manier hoef je de dubbele quotes van de html niet te escapen.
ps. Je ziet ook dat ik $gKey verwijderd heb, die bestaat nu namelijk niet meer en was identiek aan $gValue. Dus overal staat nu $gValue.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?
while($row = mysql_fetch_assoc($result))
{
$aGames[] = $row['game'];
$aType[] = $row['type'];
}
echo '<select name="game" class="textbox">';
foreach($aGames AS $gValue)
{
echo '<option value="'.$gValue.'">'.$gValue.'</option>';
}
echo '</select>';
echo '<select name="type" class="textbox">';
foreach($aType AS $gValue)
{
echo '<option value="'.$gValue.'">'.$gValue.'</option>';
}
echo '</select>';
?>
while($row = mysql_fetch_assoc($result))
{
$aGames[] = $row['game'];
$aType[] = $row['type'];
}
echo '<select name="game" class="textbox">';
foreach($aGames AS $gValue)
{
echo '<option value="'.$gValue.'">'.$gValue.'</option>';
}
echo '</select>';
echo '<select name="type" class="textbox">';
foreach($aType AS $gValue)
{
echo '<option value="'.$gValue.'">'.$gValue.'</option>';
}
echo '</select>';
?>
Daarnaast kun je bij een echo ook beter enkele quotes gebruiken. Op die manier hoef je de dubbele quotes van de html niet te escapen.
ps. Je ziet ook dat ik $gKey verwijderd heb, die bestaat nu namelijk niet meer en was identiek aan $gValue. Dus overal staat nu $gValue.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
zou het mogelijk zijn om die
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?
while($row = mysql_fetch_assoc($result))
{
$aGames[] = $row['game'];
$aType[] = $row['type'];
}
[/code]
apart te doen?, want bij game is er 1 meer dan bij type. en daardoor kunnen ze op {niks} klikken. en dat wil ik niet.
while($row = mysql_fetch_assoc($result))
{
$aGames[] = $row['game'];
$aType[] = $row['type'];
}
[/code]
apart te doen?, want bij game is er 1 meer dan bij type. en daardoor kunnen ze op {niks} klikken. en dat wil ik niet.
Nee, apart kan niet. Maar je kunt het wel op een andere manier oplossen:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
while($row = mysql_fetch_assoc($result))
{
$aGames[] = $row['game'];
if(!empty($row['type'])
{
$aType[] = $row['type'];
}
}
?>
while($row = mysql_fetch_assoc($result))
{
$aGames[] = $row['game'];
if(!empty($row['type'])
{
$aType[] = $row['type'];
}
}
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
while($row = mysql_fetch_assoc($result))
{
$aGames[] = $row['game'];
if($row['type'] != NULL){
als het type niet leeg is, dan aan array toevoegen//
$aType[] = $row['type'];
}
}
?>
while($row = mysql_fetch_assoc($result))
{
$aGames[] = $row['game'];
if($row['type'] != NULL){
als het type niet leeg is, dan aan array toevoegen//
$aType[] = $row['type'];
}
}
?>
Eventueel kan je voor het type dan nog de functie array_unique eroverheen halen, om elk type maar 1 keer in de array te krijgen.
'Blanche:
Nee, apart kan niet. Maar je kunt het wel op een andere manier oplossen:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
while($row = mysql_fetch_assoc($result))
{
$aGames[] = $row['game'];
if(!empty($row['type'])
{
$aType[] = $row['type'];
}
}
?>
while($row = mysql_fetch_assoc($result))
{
$aGames[] = $row['game'];
if(!empty($row['type'])
{
$aType[] = $row['type'];
}
}
?>
werkt niet
@robert: die doet het wel en beide bedankt :)
Mijn oplossing werkt ook, alleen een haakje te weinig:
Beide oplossingen zijn precies hetzelfde. empty(NULL); geeft immers TRUE terug.
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
while($row = mysql_fetch_assoc($result))
{
$aGames[] = $row['game'];
if(!empty($row['type']))
{
$aType[] = $row['type'];
}
}
?>
while($row = mysql_fetch_assoc($result))
{
$aGames[] = $row['game'];
if(!empty($row['type']))
{
$aType[] = $row['type'];
}
}
?>
Beide oplossingen zijn precies hetzelfde. empty(NULL); geeft immers TRUE terug.




