[PHP] array problems

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • .phoz
  • Registratie: Januari 2006
  • Laatst online: 21:57
PHP:
1
2
3
4
5
6
7
 $pagearray = mysql_fetch_array(mysql_query("select naam from pages"));
  if ( !isset($_GET['pagina']) && !isset($_GET['act']) || in_array($_GET['pagina'], $pagearray) && $_GET['act'] == "")
        {
        $naam = addslashes($_GET['pagina']);
        $msg = mysql_fetch_assoc(mysql_query("Select info from pages where naam = '".$naam."'"));
        echo ($msg['info']);
        }

dit is een klein scriptje om pagina's uit een mysql database te halen, de fout zit hem bij de database type ->
Warning: in_array() [function.in-array]: Wrong datatype for second argument in
index.php on line 99 ( hier lijn 2)
Kan je me aub helpen :) alvast bedankt

Acties:
  • 0 Henk 'm!

Verwijderd

$pagearray is kennelijk geen array. Of de query returnt geen resultaten, of de query is niet geldig. En dat kun je makkelijk zelf controleren. Gewoon leren debuggen.

Acties:
  • 0 Henk 'm!

  • Gurbe de n00b
  • Registratie: Juni 2003
  • Laatst online: 08-02-2024
Is de query niet:
"Select info from pages where naam = $naam'"

Portfolio


Acties:
  • 0 Henk 'm!

  • .phoz
  • Registratie: Januari 2006
  • Laatst online: 21:57
-> cheatah
Afbeeldingslocatie: http://users.skynet.be/fa089188/ss/mijn/mysql.jpg
-> gurbe de n00b
PHP:
1
$pagearray = mysql_fetch_array(mysql_query("select naam from pages"));

[ Voor 48% gewijzigd door .phoz op 23-01-2006 21:09 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Die query haalt alle pagina's op, maar vervolgens zet je alleen het eerste record uit de resultset in $pagearray. Dat gaat natuurlijk niet goed. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • .phoz
  • Registratie: Januari 2006
  • Laatst online: 21:57
hoe zet je dat dan in een array?

Acties:
  • 0 Henk 'm!

Verwijderd

-NMe- schreef op maandag 23 januari 2006 @ 21:08:
Die query haalt alle pagina's op, maar vervolgens zet je alleen het eerste record uit de resultset in $pagearray. Dat gaat natuurlijk niet goed. ;)
Het werkt wel. Maar netjes of handig is anders.
[edit]
En het kan natuurlijk ook nog dat de TS geen goede database verbinding heeft. Maar verder ga ik niet raden. Een mysql_error() echo'en doet wonderen.

[ Voor 22% gewijzigd door Verwijderd op 23-01-2006 21:11 ]


Acties:
  • 0 Henk 'm!

  • .phoz
  • Registratie: Januari 2006
  • Laatst online: 21:57
-> cheatah
geen mysql error
[edit]
+ wel goede database verbinding

[ Voor 46% gewijzigd door .phoz op 23-01-2006 21:15 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

.phoz schreef op maandag 23 januari 2006 @ 21:09:
hoe zet je dat dan in een array?
Loopje, en dan elke iteratie je array uitbreiden.
Verwijderd schreef op maandag 23 januari 2006 @ 21:10:
Het werkt wel. Maar netjes of handig is anders.
Nee, het werkt niet. Hij haalt simpelweg het eerste record op. mysql_fetch_array geeft gewoon een array terug met daarin een aantal elementen dat even groot is aan het opgevraagde aantal kolommen, en met de waardes die die kolommen bevatten. In dit geval komt dus enkel een lege string terug, op positie 0 van het array, en dat kan niet zijn waar TS naartoe wil. Dat het verder wel "goed" moet gaan met die functie is een ander verhaal.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • .phoz
  • Registratie: Januari 2006
  • Laatst online: 21:57
-NMe- schreef op maandag 23 januari 2006 @ 21:17:

Nee, het werkt niet. Hij haalt simpelweg het eerste record op. mysql_fetch_array geeft gewoon een array terug met daarin een aantal elementen dat even groot is aan het opgevraagde aantal kolommen, en met de waardes die die kolommen bevatten. In dit geval komt dus enkel een lege string terug, op positie 0 van het array, en dat kan niet zijn waar TS naartoe wil. Dat het verder wel "goed" moet gaan met die functie is een ander verhaal.
dit is niet heel functie rest werkt allemaal perfect

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Doe een print_r($pagearray); en je zal zien waar je mee bezig bent. :)

Overigens zou ik zelf voor de leesbaarheid nog een setje haakjes gebruiken in die if conditie met al zijn boolean operatoren.

[ Voor 60% gewijzigd door Voutloos op 23-01-2006 21:22 ]

{signature}


Acties:
  • 0 Henk 'm!

Verwijderd

-NMe- schreef op maandag 23 januari 2006 @ 21:17:

Nee, het werkt niet. Hij haalt simpelweg het eerste record op. mysql_fetch_array geeft gewoon een array terug met daarin een aantal elementen dat even groot is aan het opgevraagde aantal kolommen, en met de waardes die die kolommen bevatten. In dit geval komt dus enkel een lege string terug, op positie 0 van het array, en dat kan niet zijn waar TS naartoe wil.
Technisch gezien werkt het gewoon. Dat hij er zich iets anders bij voorstelt is gewoon een staaltje slecht denk- en programmeerwerk. Het lijkt me een goed plan als de topicstarter even het script "uitelkaar trekt" en zo stap voor stap bekijkt wat er gebeurt.
Dat het verder wel "goed" moet gaan met die functie is een ander verhaal.
En dat verhaal gaat niet op door een verkeerd datatype. Een duidelijke foutmelding die je gewoon moet kunnen oplossen. Zelfs als je weinig ervaring hebt.
Doe een print_r($pagearray); en je zal zien waar je mee bezig bent. :)
Liever var_dump ipv. print_r, aangezien het datatype al niet bekend is. En ook daar zijn speciale functies voor om het te controleren.

[ Voor 12% gewijzigd door Verwijderd op 23-01-2006 21:25 ]


Acties:
  • 0 Henk 'm!

  • .phoz
  • Registratie: Januari 2006
  • Laatst online: 21:57
Voutloos schreef op maandag 23 januari 2006 @ 21:20:
Doe een print_r($pagearray); en je zal zien waar je mee bezig bent. :)

Overigens zou ik zelf voor de leesbaarheid nog een setje haakjes gebruiken in die if conditie met al zijn boolean operatoren.
Resource id #4 :p?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

.phoz schreef op maandag 23 januari 2006 @ 21:19:
dit is niet heel functie rest werkt allemaal perfect
Ik denk niet dat je begrijpt wat ik bedoel. :P

Je hebt nu dit:
PHP:
1
$pagearray = mysql_fetch_array(mysql_query("select naam from pages"));

Dat zet simpelweg één record van je resultset weg in die variabele. Eén record, en daar kun je het mee doen. Wil je die andere namen ook hebben, dan zul je wat anders moeten verzinnen:
PHP:
1
2
3
4
5
$rs = mysql_query("SELECT `naam` FROM `pages`");
$pagearray = array();
while ($row = mysql_fetch_row($rs)) {
  $pagearray[] = $row[0];
}

Op die manier heb je wèl een array zoals je dat hebben wil, en dat je daarna kan gebruiken in in_array.

.phoz: kun je trouwens iets uitgebreider zijn in je vragen en antwoorden? Zoals je nu post, met die korte berichtjes komt het net over alsof je er zo min mogelijk moeit in wil steken, en dat komt echt verschrikkelijk lam over.

[ Voor 14% gewijzigd door NMe op 23-01-2006 21:28 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • .phoz
  • Registratie: Januari 2006
  • Laatst online: 21:57
Danku -NMe-
het werkt ;)
men eerste ervaring met array :p ( i'm so noob )

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Verwijderd schreef op maandag 23 januari 2006 @ 21:24:
Liever var_dump ipv. print_r, aangezien het datatype al niet bekend is. En ook daar zijn speciale functies voor om het te controleren.
Ook goed. :P De essentie van mijn hint is gewoon dat TS gewoon wat print/test functies op $pagearray moet loslaten om te zien wat hij doet. Maar dat heb jij ook al gezegd. :)

Overigens snap ik de bedoeling van TS niet helemaal. Als je nou de 1e sql query weglaat en controleert of de select info query goedgaat, bespaar je de DB server een query waarin je alle records terug laat geven.

[ Voor 23% gewijzigd door Voutloos op 23-01-2006 21:33 ]

{signature}


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

.phoz schreef op maandag 23 januari 2006 @ 21:28:
Danku -NMe-
het werkt ;)
men eerste ervaring met array :p ( i'm so noob )
Snap je ook waarom het werkt? Anders heb je hier natuurlijk ook niet veel aan. ;)

Overigens heeft Voutloos hierboven een punt; je kan je die eerste query helemaal uitsparen.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1