DarkFeather
Gebruiker
- Lid geworden
- 21 jan 2004
- Berichten
- 134
(foutje)
Laatst bewerkt:
Bekijk de onderstaande video om te zien hoe je onze site als een web app op je startscherm installeert.
Opmerking: Deze functie is mogelijk niet beschikbaar in sommige browsers.
<?
$host = "localhost";
$user = "root";
$pass = "";
$db= "test";
$tabel = "test";
$connect = mysql_connect($host,$user,$pass) or die("Kon geen verbinding maken met MySQL Server: " . mysql_error());
mysql_select_db($db,$connect) or die("Kon de database niet selecteren: " . mysql_error());
?>
<?php
if((isset($_POST["id"]) == TRUE))
{
include("connect.php");
$query = "DELETE FROM $tabel WHERE id = '$_POST[id]'";
$result = @mysql_query($query);
if($result == FALSE)
{
echo ("Kon de opdracht niet uitvoeren: " . mysql_error());
}
elseif(mysql_affected_rows() == 0)
{
echo "De opdracht werd succesvol uitgevoerd, maar om onbekende redenen werd er de pagina niet uit de database verwijderd";
}
else
{
echo "De pagina is verwijderd";
}
}
else
{
if ($_GET[id]==FALSE)
{
echo "Er is geen pagina geselecteerd.";
}
elseif ($_GET[id]=="1")
{
echo "Dit is de indexpagina. Deze kunt u niet verwijderen.";
}
else
{
include "connect.php";
$sql = "SELECT naam FROM $tabel WHERE id = '$_GET[id]'";
$result = mysql_query($sql);
if($result == FALSE)
{
echo "Kon query niet uitvoeren: " . mysql_error();
}
else
{
while($rij = mysql_fetch_object($result))
{
$naam = $rij->naam;
}
if ($naam == FALSE)
{
echo "Geen bestaande pagina geselecteerd";
}
else
{
?>
<form name="submit" method="post" action="verwijderen.php">
<input type="hidden" name="id" value="<? echo $_GET[id]; ?>">
<p />
Weet u zeker dat u de pagina met de naam: <? echo $naam; ?> wilt verwijderen?
<br />
<input type="submit" value="Ja, verwijder maar!">
</form>
<?
}
}
}
}
?>
Geplaatst door masterprut
Je weet dat het script niet werkt?![]()
<?
if(isset($_POST["id"]) == TRUE) // 1
{
include("connect.php");
$query = "DELETE FROM " . $tabel . " WHERE id = '" . ((int)$_POST['id']) . "'"; // 2, 4, 5 & 9
$result = @mysql_query($query);
if($result == FALSE)
{
echo("Kon de opdracht niet uitvoeren: " . mysql_error()); // 6
}
elseif(mysql_affected_rows($result) == 0)
{
echo "De opdracht werd succesvol uitgevoerd, maar om onbekende redenen werd er de pagina niet uit de database verwijderd"; // 7
}
else
{
echo "De pagina is verwijderd"; // 6
}
}
else
{
if(isset($_GET['id']) == FALSE) // 7
{
echo "Er is geen pagina geselecteerd."; // 6
}
elseif($_GET['id'] == "1")
{
echo "Dit is de indexpagina. Deze kunt u niet verwijderen."; // 6
}
else
{
include "connect.php";
$sql = "SELECT naam FROM " . $tabel . " WHERE id = '" . ((int)$_POST['id']) . "'"; // 3, 9 & 2
$result = mysql_query($sql);
if($result == FALSE)
{
echo "Kon query niet uitvoeren: " . mysql_error(); // 6
}
else
{
while($rij = mysql_fetch_object($result))
{
$naam = $rij->naam; // 9
}
if ($naam == FALSE) // 9
{
echo "Geen bestaande pagina geselecteerd"; // 6
}
else
{ ?>
<form name="submit" method="post" action="verwijderen.php">
<input type="hidden" name="id" value="<? echo $_GET[id]; ?>">
<p />
Weet u zeker dat u de pagina met de naam: <? echo $naam; ?> wilt verwijderen?
<br />
<input type="submit" value="Ja, verwijder maar!">
</form>
<? }
}
}
}
?>
Geplaatst door DarkFeather
Nu moet ie het wel doen!
Geplaatst door masterprut
Waarom nu wel?
Is niet nodig.Geplaatst door masterprut
8: met ((int)$var) zorg je ervoor dat een getal word afgerond naar een heel getal
Controleren of de ID die ingegeven is (door de link, maar een link kan je aanpassen) wel een bestaande pagina is.Geplaatst door masterprut
9: Wat wil je hier doen?
<?php
if((isset($_POST['id']) == TRUE))
{
include "connect.php";
$query = "DELETE FROM ". $tabel ." WHERE id = '" .$_POST['id']. "'";
$result = @mysql_query($query);
if($result == FALSE)
{
echo "Kon de opdracht niet uitvoeren: " . mysql_error();
}
elseif(mysql_affected_rows() == 0)
{
echo "De opdracht werd succesvol uitgevoerd, maar om onbekende redenen werd er geen pagina niet uit de database verwijderd";
}
else
{
echo "De pagina is verwijderd";
}
}
else
{
if(isset($_GET['id']) == FALSE)
{
echo "Er is geen pagina geselecteerd.";
}
elseif ($_GET['id']=="1")
{
echo "Dit is de indexpagina. Deze kunt u niet verwijderen.";
}
else
{
include "connect.php";
$sql = "SELECT naam FROM " . $tabel ." WHERE id = '" . $_GET['id'] . "'";
$result = mysql_query($sql);
if($result == FALSE)
{
echo "Kon query niet uitvoeren: " . mysql_error();
}
else
{
while($rij = mysql_fetch_object($result))
{
$naam = $rij->naam;
}
if ($naam == FALSE)
{
echo "Geen bestaande pagina geselecteerd";
}
else
{
?>
<form name="submit" method="post" action="verwijderen.php">
<input type="hidden" name="id" value="<? echo $_GET[id]; ?>">
<p />
Weet u zeker dat u de pagina met de naam: <? echo $naam; ?> wilt verwijderen?
<br />
<input type="submit" value="Ja, verwijder maar!">
</form>
<?
}
}
}
}
?>
<?
include("connect.php"); // Zorg ervoor dat er verbinding is met de database
if(isset($_GET['id']) == FALSE) // Als er geen id opgegeven is, dan =>
{
echo "Je moet wel een id opgegeven!"; // Vermeld de error dat er geen ID is opgegeven
}
else // Als er wel een Id is opgegeven dan =>
{
$query = "SELECT * FROM " . $tabel . " WHERE id = '" . ((int)$_GET['id']) . "'"; // Selecteer de rij uit de database waar de kolom id de waarde $_GET['id'] heeft
$result = @mysql_query($query); // Voert de query uit
if($result == FALSE)
{
echo "Er is een probleem tijdens het selecteren van de informatie uit de database"; // Vermeld error als het niet gelukt is informatie uit de database te halen
die();
}
if(mysql_num_rows($result) == 0) // Als er als resultaat is van de query, geen rijen gevonden zijn => error laten zien
{
echo "Geen geldig ID opgegeven!";
}
else
{
if(isset($_POST['verwijder']) == FALSE) // Er word gekeken of er op de knop 'Verwijder' is gedrukt.
{
// Er is niet op de knop gedrukt
echo "<form method=\"POST\">"; // Formulier starten
echo "Weet je zeker dat je " . $_GET['id'] . " wilt verwijderen?<br><br>"; // Vraagje
echo "<input type=\"submit\" name=\"verwijder\" value=\"Ja, verwijder!\">"; // Knopje
echo "</form>"; // Formulier sluiten
}
else // Als er WEL op de knop is gedrukt
{
// Er is op de knop gedrukt
$query = "DELETE FROM " . $tabel . " WHERE id = '" . ((int)$_GET['id']) . "'"; // Query tot verwijderen
$result = @mysql_query($query); // Query uitvoeren
if($result == FALSE) // Als er een error is tijdens het uitvoeren van '$result'
{
// Er is een error tijdens het uitvoeren van $result
echo "Er is een error tijdens het uitvoeren van de query";
}
else
{
echo "De query is succesvol uitgevoert";
}
}
}
}
?>
Geplaatst door DarkFeather
Had op twee plaatsen in het script de verkeerde superglobals gebruikt ipv $_GET had ik $_POST gebruikt, terwijl de ID daar middel van de link gekozen werd.
(Heb het bericht met het script aangepast!!!)
Geplaatst door DarkFeather
Is niet nodig.
Post je er ook bij wat je verandert heb?Geplaatst door DarkFeather
Heb nu heel iets veranderd, heb nu het volgende:
PHP:<?php if((isset($_POST['id']) == TRUE)) { include "connect.php"; $query = "DELETE FROM ". $tabel ." WHERE id = '" .$_POST['id']. "'"; $result = @mysql_query($query); if($result == FALSE) { echo "Kon de opdracht niet uitvoeren: " . mysql_error(); } elseif(mysql_affected_rows() == 0) { echo "De opdracht werd succesvol uitgevoerd, maar om onbekende redenen werd er geen pagina niet uit de database verwijderd"; } else { echo "De pagina is verwijderd"; } } else { if(isset($_GET['id']) == FALSE) { echo "Er is geen pagina geselecteerd."; } elseif ($_GET['id']=="1") { echo "Dit is de indexpagina. Deze kunt u niet verwijderen."; } else { include "connect.php"; $sql = "SELECT naam FROM " . $tabel ." WHERE id = '" . $_GET['id'] . "'"; $result = mysql_query($sql); if($result == FALSE) { echo "Kon query niet uitvoeren: " . mysql_error(); } else { while($rij = mysql_fetch_object($result)) { $naam = $rij->naam; } if ($naam == FALSE) { echo "Geen bestaande pagina geselecteerd"; } else { ?> <form name="submit" method="post" action="verwijderen.php"> <input type="hidden" name="id" value="<? echo $_GET[id]; ?>"> <p /> Weet u zeker dat u de pagina met de naam: <? echo $naam; ?> wilt verwijderen? <br /> <input type="submit" value="Ja, verwijder maar!"> </form> <? } } } } ?>
Ziet er niet slecht uit, weet niet precies hoelang je bezig bent maar als je een weekje of 1 / 2 bezig bent ziet het er heel redelijk uitGeplaatst door DarkFeather
Wat kan er nu nog anders?
<form name="submit" method="post" action="verwijderen.php">
<input type="hidden" name="id" value="<? echo $_GET[id]; ?>">
<p />
Weet u zeker dat u de pagina met de naam: <? echo $naam; ?> wilt verwijderen?
<br />
<input type="submit" value="Ja, verwijder maar!">
</form>
Geplaatst door JPeetje
Anders quote je ff een gigantische lap PHP
Btw, dit deel:
.. knip ...
Als $_GET["id"] niet bestaat, krijg je een error (op een goeie server althans). FF controleren met een isset()![]()
if(isset($_GET['id']) == FALSE)
{
echo "Er is geen pagina geselecteerd.";
}
Die moet er nog even uit dus...Geplaatst door JPeetje
Verder haal je het resultaat van de 2e query, de SELECT query, door een while. Volgens mij haal je maar 1 rij op, en is die while() dus niet nodig.
M'n script heb ik al verbeterd m.b.v. de tips van masterprut.Geplaatst door JPeetje
De rest van 't script heeft masterprut al verbeterd, althans ... Ik ga er vanuit dat hij dat goed heeft gedaan ...
connect.php ziet d'r trouwens prima uit :thumb:
Als je een waarde opgeeft die niet bestaat/ wordt gevonden wordt er dus geen waarde toegekend aan $naam, m.b.v. dit stukje script krijg je dan een "fout"melding:Waarom niet? Je zal toch echt een error krijgen als je ?id=blaat opgeeft
if ($naam == FALSE)
{
echo "Geen bestaande pagina geselecteerd";
}
Ben denk ik nu bijna 2 weken bezig met MySQL. Dank je.Ziet er niet slecht uit, weet niet precies hoelang je bezig bent maar als je een weekje of 1 / 2 bezig bent ziet het er heel redelijk uit
Fout gelezenGeplaatst door DarkFeather
Het lijkt mij niet nodig om het nog een keer te controleren
Een beetje een hele foute manier van controleren. Ga dan met isset() na of $naam bestaat.Als je een waarde opgeeft die niet bestaat/ wordt gevonden wordt er dus geen waarde toegekend aan $naam, m.b.v. dit stukje script krijg je dan een "fout"melding:
PHP:if ($naam == FALSE) { echo "Geen bestaande pagina geselecteerd"; }
Wat ik heb verbeterd zijn een paar kleine dingetjes (zoals alle echo's op dezelfde manier, variabelen buiten aanhalingstekens en dat soort dingen).
Hij kan beter. Op een server waar magic quotes uitstaan (google maar ff naarMaar opzich is m'n script toch verder goed?
Ja, het is duidelijker, overzichtelijker, veiliger en beter onderhoudbaar (althans, als masterprut goed heeft toegepast wat ik hem geleerd heb ...Zit er trouwens kwaliteitsverschil (qua werking) in het script van masterprut en m'n script (behalve dat die van masterprut netter is)?
Geeft nietGeplaatst door JPeetje
Fout gelezen![]()
Dit is dus beter:Een beetje een hele foute manier van controleren. Ga dan met isset() na of $naam bestaat.Hij kan beter.
if ((isset($naam) == FALSE))
Dus ik moet dit stukje even invoegen aan het begin:Op een server waar magic quotes uitstaan (google maar ff naar) zal je script query een foutmelding wanneer ik voor $_GET["id"] een ' invul.
if(get_magic_quotes_gpc() == FALSE)
{
$id = addslashes($_GET["id"]);
}
Ik heb er een vraagje over zijn script. Als je die() gebruikt stopt de server helemaal met het uitvoeren van het script. Als ik onder het script nog code heb voor bijv. de layout moet ik dan overal waar die() wordt gebruikt gaan werken met if en else (zoals ik eigenlijk in mijn script al doen)? Of is dat niet netjes en bestaat er een mooiere oplossing voor (zelf dacht ik anders aan een iframe)?Ja, het is duidelijker, overzichtelijker, veiliger en beter onderhoudbaar (althans, als masterprut goed heeft toegepast wat ik hem geleerd heb ...)
if(get_magic_quotes_gpc() == FALSE)
{
$id = addslashes($_GET["id"]);
}
else
{
$id = $_GET["id"];
}
Waarom? Van fouten leer je! Ik wil gewoon even weten wat ik allemaal nog fout doe. Oja, zou je ook willen kijken of het gebruik van superglobals goed is? Dan ben ik je voor eeuwig (dat is wel heel lang, maar goed...) dankbaar!Geplaatst door masterprut
Ik heb het even zitten scannen en ziet er tot nu toe goed uit. Maar als het werkt, waarom meoten we het dan nog nakijken![]()
Je bent een schatMaar zal het morgen uitgebreid voor je nakijken :evil:
Netheid, onderhoudbaarheid, veiligheid, dezelfde dingen waar jij mij op msn mee lastig valtGeplaatst door masterprut
Ik heb het even zitten scannen en ziet er tot nu toe goed uit. Maar als het werkt, waarom meoten we het dan nog nakijken![]()
Raad eens waar hij die grote stukken script vandaan heeft ?Geplaatst door DarkFeather
Bedenk wel ik heb grote stukken van jou script overgenomen!
function slashes($tekst)
{
if(get_magic_quotes_gpc() == FALSE)
{
$tekst = addslashes($tekst);
}
return $tekst;
}
}
include("connect.php");
if(get_magic_quotes_gpc() == FALSE)
{
$id = addslashes(((int)$_GET['id']));
}
else
{
$id = ((int)$_GET['id']);
}
include("connect.php");
$id = slashes($_GET["id"]);
$id = ((int) $_GET["id"]);
echo "Er is een probleem tijdens het selecteren van de informatie uit de database";
if(isset($_POST['bewerk']) == FALSE)
<form action="jouw_website" method="post">
UPDATE tabel SET naam = 'naam', tekst = 'tekst' WHERE id = blaat
$naam = stripslashes($rij->naam);
We gebruiken essentiële cookies om deze site te laten werken, en optionele cookies om de ervaring te verbeteren.