[PHP] Resource id #5

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben de volgende query in mijn pagina aan het hangen:

PHP:
1
2
3
if (!isset($datum)) $datum = mysql_query("SELECT max(datum) FROM weblog WHERE naam='trijn'");
  echo "$datum";
  $result = mysql_query("SELECT * FROM weblog WHERE naam='trijn' AND datum='$datum' ORDER BY id DESC");


De echo heb ik ertussen gezet om te kijken wat er in de variabele datum wordt gezet...
En aangezien daar 'Resource id #5' uitkomt werkt mijn scipt niet...
Heeft iemand een idee wat 'Resource id #5' wil zeggen en waar de evntuele fout dus kan zitten?

Acties:
  • 0 Henk 'm!

  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 17-09 08:05

Acties:
  • 0 Henk 'm!

  • 4Real
  • Registratie: Juni 2001
  • Laatst online: 14-09-2024
PHP:
1
 print_r(mysql_fetch_assoc($datum));

Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
$datum is nu een resultset. Daar moet je nog wat nuttigs mee doen.

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 02 december 2003 @ 10:22:
Ik ben de volgende query in mijn pagina aan het hangen:

PHP:
1
2
3
if (!isset($datum)) $datum = mysql_query("SELECT max(datum) FROM weblog WHERE naam='trijn'");
  echo "$datum";
  $result = mysql_query("SELECT * FROM weblog WHERE naam='trijn' AND datum='$datum' ORDER BY id DESC");
Trijn, ik denk dat je net begint dus een kleine uitleg over het selecteren van data in een DB:

Dit gaat in mijn opinie in 3 stappen.
Eerst selecteer je de data met een zogeheten Query:

PHP:
1
$selectQuery = "SELECT max(datum) FROM weblog WHERE naam='trijn'";


Vervolgens stop je deze data in een Result-set (wat jij op je beeldscherm kreeg, Result ID #5 etc.) met de functie mysql_query():

PHP:
1
$selectQueryResult = mysql_query($selectQuery) or die (mysql_error());


Hierna ga je iets met deze Result-set doen, aangezien je hem niet gewoon kunt echo'en. Je kunt er van alles mee doen. Zie onder andere

mysql_fetch_array
mysql_fetch_row
mysql_num_rows (tellen van de rijen bijv.)
etc. etc.

Voorbeeldje:

PHP:
1
2
3
4
5
6
7
// data in een array zetten
$data = mysql_fetch_array($selectQueryResult);

// data weergeven, alle velden zitten nu in de array '$data'
echo '<pre>';
print_r($data);
echo '</pre>';


En zo kun je op talloze manieren je data verwerken. Suc6!

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP:
1
2
3
if (!isset($datum)) $resultd = mysql_query("SELECT max(datum) FROM weblog WHERE naam='trijn'");
  $datum = mysql_fetch_array($resultd);
  echo "$datum[datum]";


Dit levert nu een leeg resultaat op terwijl ik zeker weet dat er wat in zou moeten zitten...

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 02 december 2003 @ 10:39:
[...] code [...]

Dit levert nu een leeg resultaat op terwijl ik zeker weet dat er wat in zou moeten zitten...
Wel even netjes PHP schrijven:

PHP:
1
 echo $datum['datum'];


;)

[ Voor 29% gewijzigd door Verwijderd op 02-12-2003 10:42 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Sorry...;)

Acties:
  • 0 Henk 'm!

Verwijderd

Je hoeft je niet te verontschuldigen, zo werkt t tenminste :p

Acties:
  • 0 Henk 'm!

  • DizzyWeb
  • Registratie: Februari 2001
  • Laatst online: 05-09 14:30

DizzyWeb

Ondertiteld

Verwijderd schreef op 02 december 2003 @ 10:39:
PHP:
1
2
3
if (!isset($datum)) $resultd = mysql_query("SELECT max(datum) FROM weblog WHERE naam='trijn'");
  $datum = mysql_fetch_array($resultd);
  echo "$datum[datum]";


Dit levert nu een leeg resultaat op terwijl ik zeker weet dat er wat in zou moeten zitten...
Je select ook max(datum) en niet datum.

PHP:
1
2
3
if (!isset($datum)) $resultd = mysql_query("SELECT max(datum) FROM weblog WHERE naam='trijn'");
  $datum = mysql_fetch_array($resultd);
  echo "$datum[0]";


Btw, als je associatieve arrays gebruikt, besef je wel dat de index een string is en dus tussen aanhalingstekens moet. $datum[datum] geeft een waarschuwing, het moet $datum['datum'] zijn, mits je natuurlijk wel een kolom 'datum' hebt.

Andere mogelijkheid:

PHP:
1
2
3
if (!isset($datum)) $resultd = mysql_query("SELECT max(datum) as datum FROM weblog WHERE naam='trijn'");
  $datum = mysql_fetch_array($resultd);
  echo "$datum['datum']";

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Maar ik denk dat het ligt aan de 'max(datum)'...

Zodra ik een print_r($datum) doe, krijg ik het volgende op het scherm:

Array ( [0] => 2004-08-09 [max(datum)] => 2004-08-09 )

Aangezien dit geen 1 waarde is kan mijn vervolg querie er niets mee...

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 02 december 2003 @ 10:44:
Maar ik denk dat het ligt aan de 'max(datum)'...

Zodra ik een print_r($datum) doe, krijg ik het volgende op het scherm:

Array ( [0] => 2004-08-09 [max(datum)] => 2004-08-09 )

Aangezien dit geen 1 waarde is kan mijn vervolg querie er niets mee...
Wat wil je er mee gaan doen dan? Het werkt prima hoor.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik wil die waarde die uit mijn querie komt gebruiken voor een volgende querie...

PHP:
1
$result = mysql_query("SELECT * FROM weblog WHERE naam='trijn' AND datum='$datum' ORDER BY id DESC");

[ Voor 43% gewijzigd door Verwijderd op 02-12-2003 10:47 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Zoals DizzyWeb zegt, gebruik maken van AS:

PHP:
1
2
3
4
5
if (!isset($datum)) $resultd = mysql_query("SELECT max(datum) AS typhierjevarnaam FROM weblog WHERE naam='trijn'"); 
  $datum = mysql_fetch_array($resultd); 


$result = mysql_query("SELECT * FROM weblog WHERE naam='trijn' AND datum='" . $datum['typhierjevarnaam'] . "' ORDER BY id DESC");


Edit:
ik zal je maar niet vermoeien met joins ... :)

Edit2:
Ik zie nu pas dat je twee keer in dezelfde tabel bezig bent..

[ Voor 51% gewijzigd door Verwijderd op 02-12-2003 10:52 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Thanx it works!!!!

Acties:
  • 0 Henk 'm!

  • darkrain
  • Registratie: Augustus 2001
  • Laatst online: 14:53

darkrain

Moderator Discord

Geniet

En waarom dan niet dit gebruiken:

PHP:
1
$result = mysql_query("SELECT * FROM weblog WHERE naam='trijn' AND datum = MAX(datum) ORDER BY id DESC");


of denk ik nou helemaal verkeerd. Dit is namelijk niet getest

Tweakers Discord


Acties:
  • 0 Henk 'm!

  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 17-09 08:05
Dark_Rain schreef op 02 december 2003 @ 11:08:
En waarom dan niet dit gebruiken:

PHP:
1
$result = mysql_query("SELECT * FROM weblog WHERE naam='trijn' AND datum = MAX(datum) ORDER BY id DESC");


of denk ik nou helemaal verkeerd. Dit is namelijk niet getest
Ja, zoals je in de manual kan zien returned mysql_query een resource id.

Acties:
  • 0 Henk 'm!

  • darkrain
  • Registratie: Augustus 2001
  • Laatst online: 14:53

darkrain

Moderator Discord

Geniet

stekkel schreef op 02 december 2003 @ 12:38:
[...]


Ja, zoals je in de manual kan zien returned mysql_query een resource id.
Wat ik bedoel is 1 query gebruiken ipv twee.
Dus MAX(datum) in de where clause.

En dat mysql_query een resource id returned weet ik wel.

Tweakers Discord


Acties:
  • 0 Henk 'm!

  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 17-09 08:05
Dark_Rain schreef op 02 december 2003 @ 13:07:
[...]

Wat ik bedoel is 1 query gebruiken ipv twee.
Dus MAX(datum) in de where clause.

En dat mysql_query een resource id returned weet ik wel.
:)

Goed punt !
Pagina: 1