Mysql_fetch_object() error
Ik probeer een lijstje te maken met alle logs van een bepaalde maand...
Alleen het lukt niet echt...
Dit is de code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
include("database.php");
mysql_connect("$host","$user","$pass");
mysql_select_db("$db");
$sql = "SELECT id,titel,msg,datum FROM nieuws WHERE maand = '$HTTP_GET_VARS[maand]'";
$query = mysql_query($select);
while ($list = mysql_fetch_object($query)){
echo " <a href=\"index.php?p=log&id=$list->id\" class=\"headline\">$list->titel</a><br>";
echo "<span class=\"textheadl\">";
echo "<br><br>@ $list->datum";
echo "</span>";
}
?>
include("database.php");
mysql_connect("$host","$user","$pass");
mysql_select_db("$db");
$sql = "SELECT id,titel,msg,datum FROM nieuws WHERE maand = '$HTTP_GET_VARS[maand]'";
$query = mysql_query($select);
while ($list = mysql_fetch_object($query)){
echo " <a href=\"index.php?p=log&id=$list->id\" class=\"headline\">$list->titel</a><br>";
echo "<span class=\"textheadl\">";
echo "<br><br>@ $list->datum";
echo "</span>";
}
?>
Ik krijg alleen nu een error:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /usr/export/www/vhosts/funnetwork/hosting/stefanverkerk/beta/logmaand.php on line 11
Ik probeer het weg te krijgen maar het lukt me niet...
Wat moet ik doen om het goed te krijgen?
Alvast bedankt! =)
Dit is het herschreven script, let op het gebruik van " en ' en ' in []
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
require_once("database.php");
mysql_connect($host,$user,$pass);
mysql_select_db($db);
$sql = "SELECT id,titel,msg,datum FROM nieuws WHERE maand = '". $HTTP_GET_VARS['maand'] ."'";
$query = mysql_query($sql);
while ($list = mysql_fetch_object($query)){
echo " <a href=\"index.php?p=log&id=".$list->id."\" class=\"headline\">".$list->titel. "</a><br>";
echo "<span class=\"textheadl\">";
echo "<br><br>@ ". $list->datum;
echo "</span>";
}
?>
require_once("database.php");
mysql_connect($host,$user,$pass);
mysql_select_db($db);
$sql = "SELECT id,titel,msg,datum FROM nieuws WHERE maand = '". $HTTP_GET_VARS['maand'] ."'";
$query = mysql_query($sql);
while ($list = mysql_fetch_object($query)){
echo " <a href=\"index.php?p=log&id=".$list->id."\" class=\"headline\">".$list->titel. "</a><br>";
echo "<span class=\"textheadl\">";
echo "<br><br>@ ". $list->datum;
echo "</span>";
}
?>
De orginele code is eigenlijk dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?
// Hoeveel nieuwsitems moeten er worden geshowd?
$aantal = "5";
// Laatste nieuwsitems worden geshowed, de layout kan nog worden aangepast
include("database.php");
mysql_connect("$host","$user","$pass");
mysql_select_db("$db");
$select="SELECT * FROM nieuws ORDER BY id DESC limit $aantal";
$query = mysql_query($select);
echo "<p><b>- Laatste 5 Nieuwsberichten</b></p>";
while ($list = mysql_fetch_object($query)) {
echo "<p>[$list->datum] <b>$list->titel </b><br>";
echo "$list->msg</p><br><br><a href=\"nieuws.php?id=$list->id\">Reageer</a>";
}
?>
// Hoeveel nieuwsitems moeten er worden geshowd?
$aantal = "5";
// Laatste nieuwsitems worden geshowed, de layout kan nog worden aangepast
include("database.php");
mysql_connect("$host","$user","$pass");
mysql_select_db("$db");
$select="SELECT * FROM nieuws ORDER BY id DESC limit $aantal";
$query = mysql_query($select);
echo "<p><b>- Laatste 5 Nieuwsberichten</b></p>";
while ($list = mysql_fetch_object($query)) {
echo "<p>[$list->datum] <b>$list->titel </b><br>";
echo "$list->msg</p><br><br><a href=\"nieuws.php?id=$list->id\">Reageer</a>";
}
?>
Alleen heb ik daar het afbreken er uit gehaald natuurlijk (dus heel het 'bericht' weg) alleen de titel en datum moeten nog overblijfen en het moet uit een bepaalde maand komen die je dan in de url aangeeft (logmaand.php?maand=10)
Hoe werkt het wel?
alvast bedankt.. =)
ff vraagje :)
moet dat niet zijn
while ($list <
Of kan dat met = ook dat hij tot en met pakt ofzo?
$list < werkt juist niet
Dan kom je er sneller achter wat het probleem is.
Kan ook met
$_GET['maand']
En hoe ziet je formulier eruit?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
include("database.php");
mysql_connect("$host","$user","$pass");
mysql_select_db("$db");
$sqlmaand = $_GET['maand'];
$sql = "SELECT * FROM nieuws WHERE maand = '" . $sqlmaand . "'";
$query = mysql_query($sql);
$list = mysql_fetch_array($query);
foreach($list as $list){
echo " <a href=\"index.php?p=log&id=$list->id\" class=\"headline\">$list->titel</a><br>";
echo "<span class=\"textheadl\">";
echo "<br><br>@ $list->datum";
echo "</span>";
};
?>
include("database.php");
mysql_connect("$host","$user","$pass");
mysql_select_db("$db");
$sqlmaand = $_GET['maand'];
$sql = "SELECT * FROM nieuws WHERE maand = '" . $sqlmaand . "'";
$query = mysql_query($sql);
$list = mysql_fetch_array($query);
foreach($list as $list){
echo " <a href=\"index.php?p=log&id=$list->id\" class=\"headline\">$list->titel</a><br>";
echo "<span class=\"textheadl\">";
echo "<br><br>@ $list->datum";
echo "</span>";
};
?>
Waarchijnlijk werkt het niet want de array is meer-dimensionaal maar het is een voorbeeld. (met typfouten inbegrepen)
php.net geeft ook veel informatie.
niet echo "$var";
altijd echo "bluuuub ".$var." bluuub";
en niet echo "bluuuub $var bluuub";
zeker met objecten en arrays kom je daar zeer erg mee in de problemen.
je kan jezelf het programmeren beter in één keer goed aanleren ;)
Sebastiaan:
altijd echo "bluuuub ".$var." bluuub";
en niet echo "bluuuub $var bluuub";
en niet echo "bluuuub $var bluuub";
en dan nog liever 'bluuuub' . $var . 'bluuub';
(Geen dubbele quotes als het niet nodig is)
Overigens: je mag een multidimensionale array best tussen dubbele quotes schrijven, als je er dan maar accolades omheen zet.
Ik zeg niet dat je het zo moet doen, het is maar dat je weet dat het *kan*.
Gewijzigd op 25/10/2005 09:37:00 door Jan Koehoorn
Maak van $query = mysql_query($sql); eens $query = mysql_query($sql) or die(mysql_error().'<br><br>Query was: '.$sql);. Ik denk dat of je variabele leeg is, of het veld niet in de database bestaat. Maar daar zullen we snel genoeg achter komen.
SELECT *
FROM nieuws
ORDER BY id DESC
LIMIT 0, ".$aantal;
Dus:
LIMIT 0, ".$aantal;
Ik weet niet 100% zeker of dat die eerste 0 verplicht is. Volgens mij niet, maar je kan het proberen.
"LIMIT $aantal" is voldoende. Die "0," hoeft er niet bij, maar mag uiteraard wel.
Het werkt zo ongeveer nu...
Ik moet alleen nog even een manier om de maand uit de datum te halen, want er bestaat dus - zie ik nu pas - geen veld met de naam maand, echter alleen een veld Datum, waar dus de datum instaat... even kijken of dat uit elkaar kan worden gehaald.
Bedankt iedereen =)
WHERE MONTH(datum) = $_GET['maand']
Gewijzigd op 26/10/2005 08:11:00 door Willem vp