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>
Als men nu 'vergeet' om $_POST['pv_title'], $_POST['pv_description'] en $_POST['pv_link'] in te vullen, krijgen ze eerst een melding over de title, daarna over de description en pas daarna over de link.

Misschien is het beter om het met een array te doen:


<?php
if($_SERVER['REQUEST_METHOD'] == "POST"){

// lege array aanmaken
$melding = array();

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!';
}

// als er geen meldingen zijn opgeslagen doorgaan met query
if(count($melding) == 0){

	// hier dan je query uitvoeren zoals je had

}


}
?>


Daarnaast werk ik persoonlijk eerder met:

<?php
if(trim($_POST['pv_title']) == ''){
?>

ipv

<?php
if(strlen($_POST['pv_title'])<1){
?>


Maar komt op hetzelfde neer....
Ik heb jullie tips toegepast op de foutafhandeling na wat ik zo ga doen.

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.


<?php
include "include/config.php";

if($_SERVER['REQUEST_METHOD'] == "POST")
{
	$melding = array();

	if (trim($_POST['pv_title'])<1) 
	{
		$melding[] = 'Er is geen titel ingevuld!';
	}

	if (trim($_POST['pv_description'])<1) 
	{
		$melding[] = 'Er is geen beschrijving ingevuld!';
	}

	if (trim($_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']) . "')");
		if($queryInsert) 
		{
			header("location: SOMEWHERE.php");
		}
	}
}
?>
Waarom $pv_title=mysqli_real_escape_string($_POST['pv_title']) ?

Kijk ook eens naar php.net/mysqli_real_escape_string. Deze functie mist je connectie.
Verder is het niet verboden om je voorwaarde van je foutafhandeling op je query te verruimen met een FALSE, waarin je uitlegt dat er iets mis is gegaan. (voor je eigen toon je dan de error uit mysqli_error)
Ik snap niet echt wat je bedoeld en ik heb net op de php.net site gekeken, maar heb serieus nog nooit wat begrepen van die website.
Dit gaat niet werken:

<?php
if (trim($_POST['pv_title'])<1) 
?>

trim() haalt bepaalde karakters van een string af en geeft dan de aangepaste string terug. Dat moet je dan niet gaan vergelijken met een getal. Je haalt nu dus strlen en trim door elkaar.
Ik heb het aangepast, maar het werkt nog steeds niet. idk wat ik fout doe
>> Ik heb het aangepast

aangepast in?
Wat erwin zei heb ik aangepast in de php bij alle 3 en heb het getest, maar het werkt nog niet en geeft nog steeds dezelfde fout.
De vraag is dan altijd in wat heb je het aangepast. Kan zo maar dat het nog steeds fout is natuurlijk...

Reageren