Hoi iedereen,

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>
ow sorry, in dit:


<?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!';
	}
?>
Gebruik:
if (trim($_POST['pv_title'])=='') { 
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!';
	}
?>
Dan echo je blijkbaar een array, wat niet zomaar kan. Geen idee waar.
Pas wel even die controle aan met die code die ik zojuist gaf.
<?php

foreach($melding as $eenMelding) {
echo $eenMelding . '<br>';
}

?>
Racoon, die code output de errors toch niet? Je laat nu de code zien die de errors aanmaakt, niet die ze output.

Tevens ben ik heel geïnteresseerd waarom jij denkt dat het aan die regel ligt.
Waarom geen gebruik maken van gump ?
https://github.com/Wixel/GUMP

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.
Over dat GUMP zal ik zo even wat lezen.

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>

Reageren