Gegevens uit database vergelijken met array

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marijke Hakvoort

Marijke Hakvoort

09/12/2011 13:58:44
Quote Anchor link
Hallo,

Het algemene vrijdagmiddag probleem, ik kom er even niet uit.
Om maar meteen met de deur in huis te vallen;

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
15
16
17
18
19
20
<?php
public function getAdmin($klant){
                    $result = mysql_query("
                    SELECT
                        id,
                        name
                    FROM
                        tbl_administrations
                    WHERE
                        id IN "
.implode(",",$klant));
                  
                    
                    while($admin = mysql_fetch_object($result)) {
                    echo "<option value=".$admin->id.">".$admin->name."       </option>";
                    echo "<br>";
                      
                    }
        }


?>


In mijn class staat onder andere deze functie,
nu heb ik vanuit een vorige pagina een array klant[].
Hierin staan ID's die gekozen zijn uit een multiple select.

Aan de hand van deze ID's wil ik nu een naam en ID ophalen uit een andere tabel.
Ik krijg alleen op deze manier geen enkele output.

Wie weet er wat ik fout doe, of waar ik een rare hersenspinsel heb momenteel?
 
PHP hulp

PHP hulp

27/04/2024 20:43:44
 
Erwin H

Erwin H

09/12/2011 14:03:54
Quote Anchor link
Een echt vrijdagmiddager :-)

uit implode krijg je dit: 1,2,3,4,5,6,7,8,9,10
terwijl je dit wil hebben: (1,2,3,4,5,6,7,8,9,10)

wat is het verschil :-)
 
Marijke Hakvoort

Marijke Hakvoort

09/12/2011 14:06:15
Quote Anchor link
Met of zonder implode, het werkt beide niet.
Even kijken, ik heb bijvoorbeeld 2 records, naam en ID,
en nu wil ik alle namen selecteren die een ID hebben die in de array staan.
 
Erwin H

Erwin H

09/12/2011 14:08:48
Quote Anchor link
De haakjes helpen niet? Heb je dan wel gecontroleerd wat er in die id array staat?
 
Marijke Hakvoort

Marijke Hakvoort

09/12/2011 14:11:32
Quote Anchor link
Jazeker;

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$klant
= $_POST['klant'];
  print_r($klant);
?>


Geeft netjes als output:

Array ( [0] => 1 [1] => 2 )
 
Erwin H

Erwin H

09/12/2011 14:15:32
Quote Anchor link
Dus in plaats van dit:
SELECT id, name
FROM tbl_administrations
WHERE id IN ".implode(",",$klant));

Zou je dit moeten hebben:
SELECT id, name
FROM tbl_administrations
WHERE id IN (".implode(",",$klant)).")";

Let op de extra haakjes om de implode functie heen, die dus IN het SQL statement staan. Die heb je nodig anders gaat het niet werken.
 
Marijke Hakvoort

Marijke Hakvoort

09/12/2011 14:18:24
Quote Anchor link
Nog steeds netjes de output:

Array ( [0] => 1 [1] => 2 )

Maar deze doet het nog niet (datgene wat ik dus wil hebben..)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
<option value=".$admin->id.">".$admin->name."</option>
?>
 
Erwin H

Erwin H

09/12/2011 14:24:29
Quote Anchor link
Maar lees je wel goed? Er zit een fout in je SQL statement. Je hebt GEEN haakjes om je string met IDs staan IN JE SQL STATEMENT. Je array is wel goed, je maakt er wel een lijst van, maar er MOETEN HAAKJES OMHEEN.

Sorry voor de caps, maar ik zeg het vanaf de eerste post al, hopelijk is het nu duidelijk.....

Doe anders een echo op je SQL query nadat je de string hebt toegevoegd en kijk hoe het eruitziet. Misschien ook handig om de foutmelding van MySQL te controleren in je script, die zal het ook aangeven.
 
Marijke Hakvoort

Marijke Hakvoort

09/12/2011 14:34:31
Quote Anchor link
Ik heb het ook aangepast zoals je zei,
maar de output blijft gewoon hetzelfde,

Query nu uitgevoerd op de pagina zelf en niet in de class;
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource
 
- Ariën  -
Beheerder

- Ariën -

09/12/2011 14:35:56
Quote Anchor link
En pas foutafhandeling toe.
 
Erwin H

Erwin H

09/12/2011 14:40:54
Quote Anchor link
Dan is het resultaat van je query dus blijkbaar false. Je hebt wel een connectie neem ik aan?
De id's in de string bestaan wel in je database?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

09/12/2011 14:50:38
Quote Anchor link
Er staat ook een sluithaakje te veel bij $klant. Zoals Erwin als voorstelde zet je query in een var en echo hem
 
Marijke Hakvoort

Marijke Hakvoort

09/12/2011 15:00:13
Quote Anchor link
Ik heb een connectie, de ID's in de string kloppen (er staan er sowieso maar 2 in),
en ik probeerde de query te echoën, maar toen was de output weer niets. Ik krijg niet mijn query te zien, dus ik maak waarschijnlijk een hele grote fout.
 
Erwin H

Erwin H

09/12/2011 15:03:33
Quote Anchor link
Weten we in elk geval waar we het moeten zoeken.
Dan even via een omweg. Maak de query eerst aan in een string variabele, echo die en plaats hem dan in de mysql functie om uit te voeren.
Omweg, zou niet nodig moeten zijn, maar kan je in elk geval zorgen dat de query goed is.
 
Marijke Hakvoort

Marijke Hakvoort

09/12/2011 15:12:01
Quote Anchor link
Dit is de output als ik de query echo in een string:
SELECT id, name FROM tbl_administrations WHERE id IN (1,2)
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

09/12/2011 15:17:11
Quote Anchor link
@Marijke: kijk eens naar mijn vorige post, ik krijg nl een parse error op de regel:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$sql
= "SELECT id, name FROM tbl_administrations
    WHERE id IN ("
. implode(",",$klant)) .")";
//haal een haakje weg achter $klant
?>
Gewijzigd op 09/12/2011 15:18:28 door Ger van Steenderen
 
Erwin H

Erwin H

09/12/2011 15:17:41
Quote Anchor link
dat zou goed moeten gaan, maar hem daarna in de mysql functie stoppen helpt nog niet?
(domme vraag, maar tbl_administrations is wel echt de naam van de tabel mag ik aannemen, en niet een constante?)
 
Marijke Hakvoort

Marijke Hakvoort

09/12/2011 15:19:17
Quote Anchor link
Dit komt omdat ik hem anders heb Ger:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$result
= mysql_query("SELECT id,name FROM tbl_administrations WHERE id IN (".implode(",",$klant)).")" or die (mysql_error());")";
?>


Als ik dat haakje weghaal dan sluit hij de mysql_query niet af.

Toevoeging op 09/12/2011 15:19:55:

tbl_administrations is echt de naam ja :)

Toevoeging op 09/12/2011 15:23:26:

Hij doet het!

Ik had de query maar even op een andere schrijfwijze gedaan,
en nu werkt ie!

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
 $query
= "SELECT id,name FROM tbl_administrations WHERE id IN (".implode(",",$klant).")";
                $result = mysql_query($query) or die(mysql_error());

?>


Waarom doet hij het op de andere manier niet, terwijl dit normaal wel gewoon goed gaat?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

09/12/2011 15:27:19
Quote Anchor link
Omdat er haakjes verkeerd staan in de
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$result
= mysql_query("SELECT id,name FROM tbl_administrations WHERE id IN (".implode(",",$klant)).")" or die (mysql_error());")";
//moet zijn
$result = mysql_query("SELECT id,name FROM tbl_administrations WHERE id IN (".implode(",",$klant).")") or die (mysql_error();
?>

Gewijzigd op 09/12/2011 15:30:05 door Ger van Steenderen
 
Erwin H

Erwin H

09/12/2011 15:28:03
Quote Anchor link
Marijke Hakvoort op 09/12/2011 15:19:17:
tbl_administrations is echt de naam ja :)

Ik had al zo'n idee, alleen ik gebruik de TBL prefix altijd voor mijn tabel constantes, vandaar. Zou voor mij niet de eerste keer zijn :-)

Maar waarom die andere schrijfwijze het niet deed.... geen idee. Misschien ergens een raar teken ertussen dat je niet ziet, maar wel de DB over zijn nek doet gaan.
 



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.