Nieuw lid |
|
aaaaaaah dan is het omdat je geen verbinding kan maken met je databank. Die fout krijg je als ej een SQL query uit wil voeren zonder dat je credentials hebt opgegeven voor je d.b. connectie
doe aan het begin van elke pagina (slimste = stop dit in een include)
<?php
$dbh = mysql_connect ("localhost", "user", "pass") or die ('I cannot CONNECT TO the database because: ' . mysql_error());
mysql_select_db ("mijn_db") or die ('I cannot SELECT the database because: <br>' . mysql_error());
?>
en dan zou het moeten lukken.
nog een paar opmerkingkjes aan die code:
1)
if($query == TRUE)
je kan ook gewoon
if($query)
2)
Stop wat structuur in je query-opbouw:
$sql = "UPDATE gebruikers SET naam='".$_POST['naam']."',email='".$_POST['email']."',actief='".$_POST['actief']."',status='".$_POST['status']."' WHERE id='".$_POST['gebruiker']."'";
beter:
$sql = "UPDATE gebruikers SET ";
$sql.= "naam='".$_POST['naam']."',";
$sql.= "email='".$_POST['email']."',";
$sql.= "actief='".$_POST['actief']."',";
$sql.= "status='".$_POST['status']."' ";
$sql.= "WHERE id='".$_POST['gebruiker']."'";
3)
Echo je HTML tussen single quotes dan hoef je niet elke dubbele quote te escapen. Het enige nadeel is dat je je linebreaks wel tussen dubbele quotes moet concateneren. Ik zorg altijd dat ik een nieuwe echo begin na een "\n". Is ook logischer, dan zie je ook in je php code een nieuwe regel. (alhoewel ik ook zonder \n over ga naar nieuwe regels hoor, maar bij een \n altijd)
echo "De nieuwe wachtwoorden zijn niet hetzelfde.<br />\n<a href=\"javascript:history.back()\">« Ga terug</a>";
beter:
echo 'De nieuwe wachtwoorden zijn niet hetzelfde.<br />'."\n";
echo '<a href="javascript:history.back()">« Ga terug</a>';
4)
NOOOOOOOOOOOOOIT een GET variabele rechtstreeks in je SQL gebruiken:
$sql = "DELETE FROM gebruikers WHERE id='".$_GET['del']."'";
ook niet als je eerst is_numeric toepaste. Iedereen kan dan door de url aan te passen alle gebruikers uit je databank knikkeren.
maak een variabele die je op vanalles checkt wat kwaad zou kunnen en zorg ook voor een standaard waarde als die GET variabele uit je url werd gehaald. Beter is altijd om in dergelijke gevallen in POST te werken, dat is minder transparant.
5)
Werk met mysql_fetch_assoc() ipv mysql_fetch_object()
while($rij = mysql_fetch_object($query)) {
$id = htmlspecialchars($rij->id);
$naam = htmlspecialchars($rij->naam);
echo "<option value=\"".$id."\">".$naam."</option>\n";
}
beter:
while($rij = mysql_fetch_assoc($query)) {
echo '<option value="' . $rij['id'] . '">' . $rij['naam'] . '</option>' . "\n";
}
greetz,
Marvelade |