Fout - gekocht
ik ben een scriptje aan het maken dat je als je die functie heb gekocht dat je dan op die pagina kan maar ik krijg alleen maar.
Je hebt de functie <b>Berichtenbalk</b> Nog niet gekocht. Doe dit in de shop bij de tab Functie's.
Ook als ik de waarde 1 heb in de database.
de code is
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php
if(isset($_SESSION['id'])) {
$sql_gekocht = mysql_query("SELECT berichtenbalk FROM leden WHERE member_id='".$_SESSION['id']."'");
$row_gekocht = mysql_query($sql_gekocht);
if(mysql_num_rows($sResult) >= 1) {
if(isset($_GET['a'])) {
if($_GET['a'] == "toevoegen") {
if(isset($_POST['toevoegen']) && !empty($_POST['bericht'])) {
$bericht = mysql_real_escape_string(substr($_POST['bericht'],0,MAXTEKSTINBERICHTENBALK));
// Spam beveiliging start //
$timeoutseconds = 300;
$timestamp = time();
$timeout = $timestamp-$timeoutseconds;
mysql_query("DELETE FROM berichten_balk_ip WHERE moment<$timeout AND ip='".$_SERVER['REMOTE_ADDR']."'");
$sql_spam = mysql_query("SELECT * FROM berichten_balk_ip WHERE ip='".$_SERVER['REMOTE_ADDR']."'");
if(mysql_num_rows($sql_spam) == 1) {
echo "Je mag maar 1 keer in de 5 minuten een bericht posten in de berichtenbalk.<br /><a href='javascript:history.go(-1)'>Ga terug</a>";
}else{
/// spam beveiliging einde //
mysql_query("INSERT INTO berichten_balk_ip (ip,moment) VALUES ('".$_SERVER['REMOTE_ADDR']."','".$timestamp."')");
mysql_query("INSERT INTO berichten_balk (bericht,member_id) VALUES ('".$bericht."','".$_SESSION['id']."')");
if(mysql_error() == "") {
echo "Je bericht is succesvol gepost, Je kan hem nu bekijken.<br /><a href=\"javascript:history.go(-1)\">Ga terug</a>";
}else{
echo "Dit bericht is al een keer gepost.<br />
Het kan ook zijn dat er een andere fout is opgetreden.<br><a href=\"javascript:history.go(-1)\">Ga terug</a>";
}
}
}else{
?>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>?p=pagina/berichtenbalk&a=toevoegen" method="post">
<table width="300">
<tr>
<td>Bericht - Maximaal <?php echo MAXTEKSTINBERICHTENBALK; ?> tekens</td>
</tr>
<tr>
<td><textarea name="bericht" cols="30" rows="10"></textarea></td>
</tr>
<tr>
<th colspan="2"><input type="submit" name="toevoegen" value="Toevoegen" /></th>
</tr>
</table>
<?php
}
}
} else {
echo "Je hebt de functie <strong>Berichtenbalk</strong> Nog niet gekocht. Doe dit in de shop bij de tab Functie's";
}
}else{
echo "Je bent helemaal niet ingelogd.<br /><a href=\"javascript:history.go(-1)\">Ga terug</a>";
}
?>
if(isset($_SESSION['id'])) {
$sql_gekocht = mysql_query("SELECT berichtenbalk FROM leden WHERE member_id='".$_SESSION['id']."'");
$row_gekocht = mysql_query($sql_gekocht);
if(mysql_num_rows($sResult) >= 1) {
if(isset($_GET['a'])) {
if($_GET['a'] == "toevoegen") {
if(isset($_POST['toevoegen']) && !empty($_POST['bericht'])) {
$bericht = mysql_real_escape_string(substr($_POST['bericht'],0,MAXTEKSTINBERICHTENBALK));
// Spam beveiliging start //
$timeoutseconds = 300;
$timestamp = time();
$timeout = $timestamp-$timeoutseconds;
mysql_query("DELETE FROM berichten_balk_ip WHERE moment<$timeout AND ip='".$_SERVER['REMOTE_ADDR']."'");
$sql_spam = mysql_query("SELECT * FROM berichten_balk_ip WHERE ip='".$_SERVER['REMOTE_ADDR']."'");
if(mysql_num_rows($sql_spam) == 1) {
echo "Je mag maar 1 keer in de 5 minuten een bericht posten in de berichtenbalk.<br /><a href='javascript:history.go(-1)'>Ga terug</a>";
}else{
/// spam beveiliging einde //
mysql_query("INSERT INTO berichten_balk_ip (ip,moment) VALUES ('".$_SERVER['REMOTE_ADDR']."','".$timestamp."')");
mysql_query("INSERT INTO berichten_balk (bericht,member_id) VALUES ('".$bericht."','".$_SESSION['id']."')");
if(mysql_error() == "") {
echo "Je bericht is succesvol gepost, Je kan hem nu bekijken.<br /><a href=\"javascript:history.go(-1)\">Ga terug</a>";
}else{
echo "Dit bericht is al een keer gepost.<br />
Het kan ook zijn dat er een andere fout is opgetreden.<br><a href=\"javascript:history.go(-1)\">Ga terug</a>";
}
}
}else{
?>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>?p=pagina/berichtenbalk&a=toevoegen" method="post">
<table width="300">
<tr>
<td>Bericht - Maximaal <?php echo MAXTEKSTINBERICHTENBALK; ?> tekens</td>
</tr>
<tr>
<td><textarea name="bericht" cols="30" rows="10"></textarea></td>
</tr>
<tr>
<th colspan="2"><input type="submit" name="toevoegen" value="Toevoegen" /></th>
</tr>
</table>
<?php
}
}
} else {
echo "Je hebt de functie <strong>Berichtenbalk</strong> Nog niet gekocht. Doe dit in de shop bij de tab Functie's";
}
}else{
echo "Je bent helemaal niet ingelogd.<br /><a href=\"javascript:history.go(-1)\">Ga terug</a>";
}
?>
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$sql_gekocht = mysql_query("SELECT berichtenbalk FROM leden WHERE member_id='".$_SESSION['id']."'");
$row_gekocht = mysql_query($sql_gekocht);
if(mysql_num_rows($sResult) >= 1) {
?>
$sql_gekocht = mysql_query("SELECT berichtenbalk FROM leden WHERE member_id='".$_SESSION['id']."'");
$row_gekocht = mysql_query($sql_gekocht);
if(mysql_num_rows($sResult) >= 1) {
?>
kun je mij uitleggen wat er in deze eerste 3 regels gebeurt?... de logica ontgaat mij namelijk.
je voert een query uit...de resultset hiervan gooi je weer in de mysql_query functie... en vervolgens voer je een if statement met een niet bestaande variabele en doe je niks met je query.... hmmmm...
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$sQuery = "SELECT ip FROM leden WHERE ip = '".$_SERVER['REMOTE_ADDR']."'";
$sResult = mysql_query($sQuery);
if(mysql_num_rows($sResult) >= 1) {
echo "Je hebt jezelf al geregistreert.<br>Neem contact op met [email protected] voor nog een account.";
} else {
?>
$sQuery = "SELECT ip FROM leden WHERE ip = '".$_SERVER['REMOTE_ADDR']."'";
$sResult = mysql_query($sQuery);
if(mysql_num_rows($sResult) >= 1) {
echo "Je hebt jezelf al geregistreert.<br>Neem contact op met [email protected] voor nog een account.";
} else {
?>
Gedoe hier
hij kijkt of hij op 1 staat en als dat zo is dan geeft hij de pagina aan
Die opbouw is wel wat beter dan in je eerste post. Vergelijk ze eens.
Je gebruikt in je script $sResult, terwijl dat resultaat door jou in $row_gekocht wordt gezet. Ook een beetje raar waarom je variabelenamen gaat veranderen, terwijl de bestaanden vele malen beter waren?
Tip: Ga eens iets aan foutafhandeling doen en toon ook alle voutmeldingen op je scherm. Daar word je in het begin niet vrolijk van, maar scheelt je uiteindelijk wel een flinke berg werk.
Hoelaat is het nu bij jou,
Je weet zelf ook wel dat het fourmelding is :P
ik krijg dus geen fout dat is het probleem
Roy schreef op 24.03.2008 12:49:
Zou dat soms komen omdat de foutafhandeling in je code ontbreekt?ik krijg dus geen fout dat is het probleem
Begin je script eens met
en ga vervolgens de foutafhandeling bij je queries in orde maken. Met andere woorden, controleren of een query gelukt is en als dat niet het geval is een foutmelding geven.
Code (php)
1
2
2
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /mnt/web8/43/96/51715496/htdocs/berichtenbalk.php on line 7
Je hebt de functie Berichtenbalk Nog niet gekocht. Doe dit in de shop bij de tab Functie's
Je hebt de functie Berichtenbalk Nog niet gekocht. Doe dit in de shop bij de tab Functie's
en dan lijn 7
? weet iemand waarom mysql_num_rows verkeert is
Omdat je nergens controleert of je query wel is gelukt. Wel eens van voutafhandeling gehoord? Zo niet, zie de tutorials, Blanche heeft een fraaie tut geschreven over foutmeldingen en SQL voor beginners.
-.- er zit al een foutenafhandeling in
Roy schreef op 24.03.2008 13:26:
Zoals?-.- er zit al een foutenafhandeling in
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$query = "query"; //de query
if(!$res = mysql_query($query)) // als de query niet gelukt is dan...
{
trigger_error(mysql_error().'<br />In query: '.$query); // laat een bericht zien
}
elseif(mysql_num_rows($res) == 0) // als er geen resultaten zijn dan ...
{
echo 'Niks gevonden'; // laat een bericht zien
}
else // en als de query wel gelukt is dan
{
// voer de rest van het script uit
}
?>
$query = "query"; //de query
if(!$res = mysql_query($query)) // als de query niet gelukt is dan...
{
trigger_error(mysql_error().'<br />In query: '.$query); // laat een bericht zien
}
elseif(mysql_num_rows($res) == 0) // als er geen resultaten zijn dan ...
{
echo 'Niks gevonden'; // laat een bericht zien
}
else // en als de query wel gelukt is dan
{
// voer de rest van het script uit
}
?>
Gewijzigd op 01/01/1970 01:00:00 door J A
Dat is geen foutafhandeling, dat is enkel het zorgen dat PHP alle mogelijke fouten weergeeft. Met foutafhandeling bedoelen we onder andere het controleren of je queries wel gelukt zijn, dat doe je nu helemaal nergens...
kunnen jullie nieT even kijken ernaar +
Sorry voor bump
Gewijzigd op 01/01/1970 01:00:00 door Roy
Doe dan iets aan je foutmelding!!!!! (sorry voor de uitroeptekens, maar dat is volgens mij wel nodig)
ik ben daar helemaal niet goed in
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$sql_gekocht = mysql_query("SELECT berichtenbalk FROM leden WHERE member_id='".$_SESSION['id']."'");
$row_gekocht = mysql_query($sql_gekocht);
if(mysql_num_rows($row_gekocht) >= 1) {
?>
$sql_gekocht = mysql_query("SELECT berichtenbalk FROM leden WHERE member_id='".$_SESSION['id']."'");
$row_gekocht = mysql_query($sql_gekocht);
if(mysql_num_rows($row_gekocht) >= 1) {
?>
Je voert hier twee maal een mysql_query() uit. Eén keer over een query (die is goed), en de tweede keer over het resultaat van een mysql_query(). Lukt dat? Neen.
Gewijzigd op 01/01/1970 01:00:00 door Jesper Diovo