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>
<? 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?
$sql3="SELECT * FROM ForumGebruikers WHERE Username=".$naam.";";
Username bestaat uit een string (letters/cijfers) en niet uit een integer (een getal). Daarom moeten er quotes omheen in de query. Zo zou het wel goed moeten gaan:
$sql3="SELECT * FROM ForumGebruikers WHERE Username='".$naam."';";
Die is er uit wat weet ik dat het overbodig is. Maar het probleem is nu hij wil niets meer encrypten. Kan foutje zijn in HTML, maar als ik het test met robert zijn voorbeeld werkt het wel :) Thx alvast
Nu ik hier toch zit. Ik haal een table uit SQL. Maar nu is mijn vraag. Als die nu niet bestaat, hoe laat ik dat PHP dan weten? ik dacht met een if maar zit vast :s
<?php
$query = "SELECT * FROM tabelnaam";
$result = mysql_query($query);
if($result){ // query gelukt
// doe iets, bv. mysql_fetch_assoc() e.d.
}
else { // query mislukt
echo 'Query mislukt vanwege de volgende fout: '.mysql_query();
}
?>
Verder kan het eigenlijk nooit voorkomen dat jij niet weet welke tabellen er in jouw database staan. Dit mag alleen voorkomen wanneer je PHPMyAdmin probeert na te maken, in alle andere systemen weet jij 100% zeker dat een tabel wel of niet bestaat. Het datamodel kan namelijk uitsluitend wijzigen doordat je met onderhoud o.i.d. bezig bent, maar dan moet je toch opnieuw testen.
// Check For Account's
$naam = $rij['naam'];
?>
En waar controleer jij of de query wel resultaten heeft opgeleverd? In jouw script hebt je geen enkele garantie dat $naam een inhoud zal krijgen, dat is dus vragen om problemen.
Controleer dus met mysql_num_rows() hoeveel records er zijn opgehaald en ga daarna pas fetchen, het heeft geen zin om dat eerder te doen.
Met $id = $_GET['id']; vraag je/smeek je om SQL-injection. Het is maar waar je van houdt.