Toon posts:

[PHP] Resource id #5

Pagina: 1
Acties:

Onderwerpen


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?

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

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

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!

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

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 ]


Verwijderd

Topicstarter
Sorry...;)

Verwijderd

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

  • DizzyWeb
  • Registratie: Februari 2001
  • Laatst online: 14:55

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']";

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

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.

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 ]


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 ]


Verwijderd

Topicstarter
Thanx it works!!!!

  • darkrain
  • Registratie: Augustus 2001
  • Nu online

darkrain

Moderator Discord / TFV & AWM

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


  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 02-10 12:59
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.

  • darkrain
  • Registratie: Augustus 2001
  • Nu online

darkrain

Moderator Discord / TFV & AWM

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


  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 02-10 12:59
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