in_array met mysql_fetch_array
Ik ben er een tijdje uitgeweest wat php betreft en kom er niet uit (kan op het forum ook niet echt een antwoord vinden).
Ik heb de volgende code:
$order_id_sql="SELECT order_id FROM showroom ORDER BY order_id";
$order_id_result=mysql_query($order_id_sql);
$order_id=mysql_fetch_array($order_id_result);
De SQL levert een array op van het getal 1 tot en met 21
Ik wil vervolgens checken of een bepaalde waarde voorkomt in de array, bijvoorbeeld 5:
if (in_array(5, $order_id)){
echo "JA";
}else{
echo "NEE";
}
Bovenstaande levert alleen maar een JA op als ik check op de waarde 1. Zie ik iets over het hoofd?
Gr,
Robert
Gewijzigd op 01/01/1970 01:00:00 door Robert Hamers
Je moet het zo proberen:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$order_id_sql="SELECT order_id FROM showroom ORDER BY order_id";
$order_id_result=mysql_query($order_id_sql);
//vergeet echter de foutafhandeling niet, vroeg of laat gaat dit een keer fout)
$order_id = array();
while($row=mysql_fetch_array($order_id_result)){
$order_id[] = $row['order_id'];
}
?>
$order_id_sql="SELECT order_id FROM showroom ORDER BY order_id";
$order_id_result=mysql_query($order_id_sql);
//vergeet echter de foutafhandeling niet, vroeg of laat gaat dit een keer fout)
$order_id = array();
while($row=mysql_fetch_array($order_id_result)){
$order_id[] = $row['order_id'];
}
?>
$order_id=mysql_fetch_array($order_id_result);
Het id zit dus in $order_id['order_id']
De SQL levert een array op van het getal 1 tot en met 21
Nee, want je haalt maar één record op.
En hoe kan dit vroeg of laat een keer fout gaan. Het enige wat toch fout kan gaan is dat de query helemaal geen data oplevert. Bedoel je dat ook Robert?
Gr,
Robert
Want zoals SanThe zegt, het kan zo maar zijn dat je $order_id niet een valide array is..
Dat bedoel ik inderdaad Robert, als er geen data terugkomt, dan geeft het script een eigen error, dat moet je af proberen te vangen, zodat bezoekers dit niet zien.
Overigens als je wilt kijken of order_id = 5 voorkomt in je database (daar lijkt het op nu ik wat beter kijk in je vraagstelling) kan je toch ook:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$order_id_sql="SELECT order_id FROM showroom WHERE order_id = ".mysql_real_escape_string($_GET['id']);
if($order_id_result=mysql_query($order_id_sql)){
if(mysql_num_rows($order_id_result) == 1){
echo 'order_id bestaat';
}
else{
echo 'order_id niet gevonden';
}
}
else{
echo 'er is een fout opgetreden bij de query: <br />'.$sql.'<br />'.mysql_error();
}
?>
$order_id_sql="SELECT order_id FROM showroom WHERE order_id = ".mysql_real_escape_string($_GET['id']);
if($order_id_result=mysql_query($order_id_sql)){
if(mysql_num_rows($order_id_result) == 1){
echo 'order_id bestaat';
}
else{
echo 'order_id niet gevonden';
}
}
else{
echo 'er is een fout opgetreden bij de query: <br />'.$sql.'<br />'.mysql_error();
}
?>
Jouw eerste stukje php gecombineerd met mijn in_array geeft het gewenste resultaat maar snappen doe ik het nog niet helemaal.
Ik dacht dat mysql_fetch_array het ophalen van een array was en dat je dan vervolgens data daaruit kan trekken. Maar in jouw script lijkt het alsof je een nieuwe array aanmaakt met de while-functie.
Gr,
Robert
Hierdoor is $row een array().
Jij wilt een array met de id's er in.
Dus haal je uit het array() ($row) het id en die stop je in een nieuw array().
Zo hou je dus een array() over waar alleen alle id's in staan.
Beetje duidelijker hoop ik.
Maar goed, ik heb het werkend gekregen, that's all that matters.
Bedankt voor de hulp!
Edit: Niet aan te raden. Maar dan zou het zoiets worden.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$order_id_sql="SELECT order_id FROM showroom ORDER BY order_id";
$order_id_result=mysql_query($order_id_sql);
//vergeet echter de foutafhandeling niet, vroeg of laat gaat dit een keer fout)
$order_id = array();
while(array_merge($order_id, mysql_fetch_array($order_id_result)));
?>
$order_id_sql="SELECT order_id FROM showroom ORDER BY order_id";
$order_id_result=mysql_query($order_id_sql);
//vergeet echter de foutafhandeling niet, vroeg of laat gaat dit een keer fout)
$order_id = array();
while(array_merge($order_id, mysql_fetch_array($order_id_result)));
?>
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -