Ik heb het CMS waar ik mee bezig was afgerond, maar nu ben ik een nieuwe aan het maken voor iets anders en probeer ik jullie tips van destijds te gebruiken.
Zijn er nog dingen die ik beter kan doen en weet iemand een goeie website waar een tutorial over foutafhandeling staat.
Ik ben nu van plan wel mysqli te gebruiken en normale PHP, dus geen OOP.
<?php
include "include/config.php";
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if (strlen($_POST['pv_title'])<1)
{
$melding = 'Er is geen titel ingevuld!';
}
else
{
if (strlen($_POST['pv_description'])<1)
{
$melding = 'Er is geen beschrijving ingevuld!';
}
else
{
if (strlen($_POST['pv_link'])<9)
{
$melding = 'Er is geen link ingevuld!';
}
else
{
$queryInsert = mysqli_query("INSERT INTO p_video
(pv_title,
pv_description,
pv_link)
VALUES ('" . $pv_title=mysql_real_escape_string($_POST['pv_title']) . "',
'" . $pv_description=mysql_real_escape_string($_POST['pv_description']) . "',
'" . $pv_link=mysql_real_escape_string($_POST['pv_link']) . "')");
if($queryInsert)
{
header("location: SOMEWHERE.php");
}
}
}
}
}
?>
<fieldset>
<?php
echo $melding;
?>
<form action=""
method="post">
Titel:
<input type="text"
name="pv_title"><br>
Beschrijving:
<input type="text"
name="pv_description"><br>
Link:
<input type="text"
name="pv_link"><br>
<br>
<input type="submit"
name="submit">
</form>
</fieldset>
<?php
if (strlen($_POST['pv_title'])<1)
{
$melding[] = 'Er is geen titel ingevuld!';
}
if (strlen($_POST['pv_description'])<1)
{
$melding[] = 'Er is geen beschrijving ingevuld!';
}
if (strlen($_POST['pv_link'])<9)
{
$melding[] = 'Er is geen link ingevuld!';
}
?>
de array geeft jammer genoeg een fout, want elke keer als er een veld niet is ingevuld, dan staat er array in plaats van de melding zelf. ook als ik alles invulde dan gaf die ook array aan.
Kun je eens de code laten zien die de error output?
er komt geen error... hij gooit gewoon altijd als melding array eruit als ik op submit druk.
<?php
$melding = array(); <!-- ik denk zelf dat het hier aan ligt, maar snap niet wat er fout is -->
if (strlen($_POST['pv_title'])<1)
{
$melding[] = 'Er is geen titel ingevuld!';
}
if (strlen($_POST['pv_description'])<1)
{
$melding[] = 'Er is geen beschrijving ingevuld!';
}
if (strlen($_POST['pv_link'])<9)
{
$melding[] = 'Er is geen link ingevuld!';
}
?>
Ik controleer altijd of er iets gepost is en daarna ga ik alles bepaalde eisen geven waarop alles
gecontroleerd moet worden.
Verder vind ik het goede leesbare code en inderdaad zou het slim zijn om alle meldingen in een array te zetten en dit terug te sturen naar de user indien er een error is.
Wouter J sorry snapte het niet, de error werd in de html uitgegooid, maar het probleem lag dus daaraan en is opgelost met de code van Ivo P.
Nu werken de meldingen, maar nu krijg ik errors als ik alles invul en het op sla.
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in /home/sandecv3/domains/sanderpals.nl/public_html/youtube/add.php on line 49
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in /home/sandecv3/domains/sanderpals.nl/public_html/youtube/add.php on line 50
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in /home/sandecv3/domains/sanderpals.nl/public_html/youtube/add.php on line 51
Warning: mysqli_query() expects at least 2 parameters, 1 given in /home/sandecv3/domains/sanderpals.nl/public_html/youtube/add.php on line 51
Warning: mysqli_query() expects at least 2 parameters, 1 given in /home/sandecv3/domains/sanderpals.nl/public_html/youtube/add.php on line 53
<?php
include "include/config.php";
# errors weergeven
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
# sql debug
define('DEBUG_MODE',false); // true == aan, false == uit
# functie voor sql debug
function showSQLError($sql,$error,$text='Error')
{
if (DEBUG_MODE)
{
return '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
}
else
{
return $text;
}
}
if($_SERVER['REQUEST_METHOD'] == "POST")
{
$melding = array();
if (strlen($_POST['pv_title'])=="")
{
$melding[] = 'Er is geen titel ingevuld!';
}
if (strlen($_POST['pv_description'])=="")
{
$melding[] = 'Er is geen beschrijving ingevuld!';
}
if (strlen($_POST['pv_link'])<9)
{
$melding[] = 'Er is geen link ingevuld!';
}
if(count($melding) == 0)
{
$queryInsert = mysqli_query("INSERT INTO p_video
(pv_title,
pv_description,
pv_link)
VALUES ('" . $pv_title=mysqli_real_escape_string($_POST['pv_title']) . "',
'" . $pv_description=mysqli_real_escape_string($_POST['pv_description']) . "',
'" . $pv_link=mysqli_real_escape_string($_POST['pv_link']) . "')");
# Check of query is gelukt
if (($queryInsert = mysqli_query($queryInsert)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($queryInsert, mysqli_error(),'Fout bij het invoegen van de post.');
}
else
{
# De query is geluk! :)
echo 'Gebruiker is toegevoegt!';
}
}
}
?>
<fieldset>
<?php
if(!empty($melding))
{
foreach($melding as $eenMelding)
{
echo $eenMelding;
}
}
?>
<form action="#"
method="post">
Titel:
<input type="text"
name="pv_title"><br>
Beschrijving:
<input type="text"
name="pv_description"><br>
Link:
<input type="text"
name="pv_link"><br>
<br>
<input type="submit"
name="submit">
</form>
</fieldset>