Hoi.

Ik heb hier een forumpje gevonden, maar wil dat zelf een beetje uitbreiden! Nu heb ik volgende. Gebruikers kunnen zich registreren & Avatars instellen. Daar loopt het goed. Maar als je het forum wilt bekijken (en in dit geval een topic) zegt hij Unknown column 'Admin' in 'where clause'.

Dit is de code
			<?php

if(!isset($_GET['id']))
{
echo 'dit kan niet, ga terug waar je vandaan kwam';
}else{

$id=$_GET['id']; // dmv van dit regeltje  

include('../dbconfig.php'); 
// nu even verbinden met de database
$sql="SELECT * FROM vraag WHERE id=".$id.";";

$resultaat=mysql_query($sql)or die(mysql_error());
$rij=mysql_fetch_array($resultaat);

$naam = $rij['naam'];

$sql3="SELECT * FROM ForumGebruikers WHERE Username=".$naam.";";

$resultaat3=mysql_query($sql3)or die(mysql_error());
$rij3=mysql_fetch_array($resultaat3);
?>

<table width="700" border="0" align="center" cellpadding="0" cellspacing="0">
<tr><td bgcolor="#3f3f3f" width="90" align="top" valign="top"><br><center>
<img src="<?php echo $rij3['Avatar']; ?>" alt="<? echo $rij['naam']; ?>"><br>
<br></center></td>
<td align="top" valign="top">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr><td bgcolor="#3f3f3f"><font size="2"><strong>
&nbsp;&nbsp;<? echo $rij['topic'];?> <i>by <a href="mailto:<? echo $rij['email'];?>"><? echo $rij['naam'];?></a></i>
</strong></font></td></tr><tr><td>
<? echo $rij['bericht'];?><hr color="#3f3f3f">
</td></tr>
<tr><td><strong>Datum/tijd : </strong>
<? echo $rij['datumtijd'];?>
</td></tr></table></td></tr></table><BR>
<form name="form1" method="post" action="./reactie.php?id=<? echo $rij['id']; ?>">
<input type="submit" Value="Plaats Reactie">
</form><br>
<?


Ik weet niet hoe, maar hij vind die Username niet! Ook al staan ze in onze database. Wie kan mij helpen?

Thx
Ik wist dat het ging gebeuren voor die $naam. Maar het scriptje is nog niet af. Ik ben nog wat een leek, maar waarom juist eerst mysql_num_rows?

Het probleem is gewoon dat mijn pagina blank is :)

Code voor de $naam
<? 
include('../dbconfig.php');

// Get ID
$id=$_GET['id'];

// Check Database
$sql="SELECT * FROM vraag WHERE id='".$id."'";
$resultaat=mysql_query($sql);
$rij=mysql_fetch_array($resultaat);

// Get Username
$naam=$rij['naam'];

// Connect Users Table
$sql6="SELECT * FROM ForumGebruikers WHERE Username='".$naam."'";
$resultaat6=mysql_query($sql6);

// Check for errors
if($resultaat6)
{
 $naam3=$rij['naam'];
} else {
 $naam3="Gast";
}
 
$sql2="SELECT * FROM ForumGebruikers WHERE Username='".$naam3."'";
$resultaat2=mysql_query($sql2);
$rij2=mysql_fetch_array($resultaat2);

{
?>


De error moet ergens in onderstaande code zitten. Als ik die verwijder van de pagina werkt alles weer :s
<?
$sql3="SELECT * FROM antwoord WHERE vraag_id='".$id."'";
$resultaat3=mysql_query($sql3)or die(mysql_error());
$rij3=mysql_fetch_array($resultaat3);

$naam2=$rij3['antwoord_naam'];
$sql4="SELECT * FROM ForumGebruikers WHERE Username='".$naam2."'";
$resultaat4=mysql_query($sql4);

$naam3="Gast";
$sql5="SELECT * FROM ForumGebruikers WHERE Username='".$naam3"'";
$resultaat5=mysql_query($sql5);

if($resultaat4)
 {
  $rij4 = mysql_fetch_array($resultaat4);
 }
else {
  $rij4 = mysql_fetch_array($resultaat5);
 }
 {
?>
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

// rest van je script
?>
Heb je dit nou al bovenin je script gezet?
Die staat erin. Maar nog krijg ik een witte pagina
Zorg ook dat elke regel met mysql_query(); op de volgende manier wordt opgebouwd, althans tijdens het bouwen:

$var=mysql_query($sql) or trigger_error(mysql_error());

Zo zal je ook fouten in je MySQL te zien krijgen die er vast wel in zitten!!
Paar puntjes:

1. Worden er log bestanden aangemaakt, zoja ff kijken...

2. Zet eens dit in 1 van je scripts:
<?php
echo $foo + 1;
?>

Je zou een error moeten krijgen. Gebeurd dit dan worden errors van je script gewoon weergegeven. Je script bevat dus geen fouten.

3. Plaats eens strategisch een paar:
<?php
echo 'We zijn nu op regel: ' . __LINE__;
?>

Zo kun je precies zien waar PHP komt en waar niet.



Error gevonden en verholpen. Maar nu wilt hij volgende dinge niet doen.

Ik vraag als de username niet bestaat, dan de account Gast te gebruiken. Nu gebeurd dit niet :( Dit is de code


<?
$naam2=$rij3['antwoord_naam'];
$sql4="SELECT * FROM ForumGebruikers WHERE Username='".$naam2."'";
$resultaat4=mysql_query($sql4) or trigger_error(mysql_error());

$naam3="Gast";
$sql5="SELECT * FROM ForumGebruikers WHERE Username='".$naam3."'";
$resultaat5=mysql_query($sql5) or trigger_error(mysql_error());

if($resultaat4)
 {
  $rij4 = mysql_fetch_array($resultaat4);
 }
else {
  $rij4 = mysql_fetch_array($resultaat5);
 }
?>
Waar is de controle? Nu voer je gewoon 2 queries uit (en je voert ze altijd allemaal uit) zonder dat dit ook maar iets extra oplevert. De controle op $resultaat4 is ook alleen maar of de query is gelukt, niet of er resultaten zijn.

Kortom, de volgorde is niet correct en de controles zijn verkeerd.

Tip: Doe iets aan je naamgevingen, $naam3, $rij4, etc. etc., het is vragen om problemen. Gebruik uitsluitend nummers wanneer het echt niet anders kan, in bovenstaand script is het volkomen overbodig om te gaan nummeren.
Thx om me erop te wijzen voor die controle's :) Die heb ik er nu wel degelijk ingezet. Die nummers doe ik voor mij het gemakkelijk te maken. Ik ben nog niet zo goed in PHP maar ik wil het me niet te moeilijk maken.

Owjah, nu ziet het script er als volgt uit!
<? 
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

include('../dbconfig.php');

$id=$_GET['id'];

$sql="SELECT * FROM vraag WHERE id='".$id."'";
$resultaat=mysql_query($sql) or trigger_error(mysql_error());
$rij=mysql_fetch_array($resultaat);

$naam=$rij['naam'];

$sql6="SELECT * FROM ForumGebruikers WHERE Username='".$naam."'";
$resultaat6=mysql_query($sql6) or trigger_error(mysql_error());

if(mysql_num_rows($resultaat6) > 0)
{
 $naam3=$rij['naam'];
} else {
 $naam3="Gast";
}
 
$sql2="SELECT * FROM ForumGebruikers WHERE Username='".$naam3."'";
$resultaat2=mysql_query($sql2) or trigger_error(mysql_error());
$rij2=mysql_fetch_array($resultaat2);

{
?>
<table width="700" border="0" align="center" cellpadding="0" cellspacing="1">
<tr><td bgcolor="#3f3f3f" width="90" align="top" valign="top"><center>
<font size="2"><b><a href="mailto:<? echo $rij['email'];?>"><? echo $rij['naam']; ?></a></b></font></center><br>
<center>
<img src="<? echo $rij2['Avatar']; ?>" alt="<? echo $rij['naam']; ?>" width="64" height="64"></center>
<br></center></td>
<td align="top" valign="top">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr><td bgcolor="#3f3f3f"><font size="2"><strong>
&nbsp;&nbsp;<? echo $rij['topic'];?> <i></i>
</strong></font></td></tr><tr><td>
<? echo $rij['bericht'];?><hr color="#3f3f3f">
</td></tr>
<tr><td><strong>Datum/tijd : </strong>
<? echo $rij['datumtijd'];?>
</td></tr></table></td></tr></table><BR>
<form name="form1" method="post" action="./reactie.php?id=<? echo $rij['id']; ?>">
<input type="submit" Value="Plaats Reactie">
</form><br>
<?
}

$sql3="SELECT * FROM antwoord WHERE vraag_id='".$id."'";
$resultaat3=mysql_query($sql3) or trigger_error(mysql_error());
$rij3=mysql_fetch_array($resultaat3);

$naam2=$rij3['antwoord_naam'];
$sql4="SELECT * FROM ForumGebruikers WHERE Username='".$naam2."'";
$resultaat4=mysql_query($sql4) or trigger_error(mysql_error());

$naam3="Gast";
$sql5="SELECT * FROM ForumGebruikers WHERE Username='".$naam3."'";
$resultaat5=mysql_query($sql5) or trigger_error(mysql_error());

if(mysql_num_rows($resultaat4) > 0)
 {
  $rij4 = mysql_fetch_array($resultaat4);
 }
else {
  $rij4 = mysql_fetch_array($resultaat5);
 }

if(mysql_num_rows($resultaat3) > 0) 
 {
?> 
<table width="700" border="0" align="center" cellpadding="0" cellspacing="1">
<tr><td bgcolor="#3f3f3f" width="90" align="top" valign="top"><center><font size="2"><b><a href="mailto:<? echo $rij3['antwoord_email'];?>"><? echo $rij3['antwoord_naam']; ?></a></b></font></center><br>
<center>
<img src="<? echo $rij4['Avatar']; ?>" alt="<? echo $rij3['antwoord_naam']; ?>" width="64" height="64"></center>
<br></center></td>
<td align="top" valign="top">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr><td bgcolor="#3f3f3f"><font size="2"><strong>
&nbsp;&nbsp;RE: <? echo $rij['topic']; ?>
</strong></font></td></tr><tr><td>
<? echo $rij3['antwoord_antwoord']; ?><hr color="#3f3f3f">
</td></tr>
<tr><td><strong>Datum/tijd : </strong>
<? echo $rij3['antwoord_datumtijd']; ?>
</td></tr></table></td></tr></table>
<?
}
else {
?>
Er zijn geen reacties gevonden!
<?
}
?>
Ik denk dat het hier al mis gaat met de resultaten en dat is ook meteen de query die je niet controleerd:

$sql="SELECT * FROM vraag WHERE id='".$id."'";

Als je het goed hebt gemaakt is id een numeric veld. (int, smallint, tiniyint) Deze query zal dan ook nooit het gewenste resultaat geven, omdat vanwege de enkele quotes in je query de waarde van $id als een string (stukje tekst) wordt behandeld.

Zorg ook bij deze query voor de controle die je bij de rest van de querys ook hebt gemaakt.

En verander deze regel hierin:

$sql="SELECT * FROM vraag WHERE id=".$id;

Reageren