in_array met mysql_fetch_array

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Robert Hamers

Robert Hamers

30/09/2008 21:49:00
Quote Anchor link
Luitjes,

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
 
PHP hulp

PHP hulp

17/02/2025 15:47:28
 
Robert Deiman

Robert Deiman

30/09/2008 22:41:00
Quote Anchor link
@Robert

Je moet het zo proberen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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'];
  }

?>
 
- SanThe -

- SanThe -

30/09/2008 22:45:00
Quote Anchor link
Hier zit het gevonden record in.
$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.
 
Robert Hamers

Robert Hamers

01/10/2008 08:40:00
Quote Anchor link
Dus als ik het goed begrijp moet ik 1 voor 1 de waardes ophalen van de array en weer vullen in een array???? Ik snap er niks van.

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
 
Gerben Jacobs

Gerben Jacobs

01/10/2008 09:49:00
Quote Anchor link
Als je $order_id nou eens print_r't en dan kijkt of het überhaupt mogelijk is dat een cijfer gevonden gaat worden, dan kun je vanaf daar verder debuggen/fixen..

Want zoals SanThe zegt, het kan zo maar zijn dat je $order_id niet een valide array is..
 
Robert Deiman

Robert Deiman

01/10/2008 10:00:00
Quote Anchor link
Sterker nog, $order_id bevat in zijn script helemaal geen array.


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)
PHP script in nieuw venster Selecteer het PHP script
1
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();
    }

?>
 
Robert Hamers

Robert Hamers

01/10/2008 20:19:00
Quote Anchor link
RObert,

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
 
- SanThe -

- SanThe -

01/10/2008 20:26:00
Quote Anchor link
$row=mysql_fetch_array()

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.
 
Robert Hamers

Robert Hamers

01/10/2008 20:47:00
Quote Anchor link
SanThe, het is wel duidelijk, maar aangezien mijn sql al alleen bestond uit order_id's (en verder niks) leek het mij niet logisch om weer een nieuwe array aan te maken met de order_id's.

Maar goed, ik heb het werkend gekregen, that's all that matters.

Bedankt voor de hulp!
 
- SanThe -

- SanThe -

01/10/2008 20:57:00
Quote Anchor link
Omdat jij inderdaad alleen het id ophaalt zit in $row een array() met alleen het id. Maar het blijft een array(). Je zou, technisch gezien, in dit geval die array's aan elkaar kunnen plakken met array_merge(). Maar dit hierboven lijkt mij duidelijker en simpeler.

Edit: Niet aan te raden. Maar dan zou het zoiets worden.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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)));
?>
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.