Gestion des erreurs

Petit nouveau ! | 4 Messages

01 nov. 2010, 12:46

Bonjour,

Je voudrai afficher un message d'erreur dans mon formulaire lorque l'utilisateur n'encode pas correctement les informations. J'ai créer un autre fichier qui ne s'ocuppe que des conditions et des erreurs sur le formulaire.

Auriez vous une idée sur la manière dont je pourrai afficher le message d'erreur sur mon formulaire depuis mon autre fichier qui ne s' ocuppe que des erreurs ?

Merci d'avance

ViPHP
xTG
ViPHP | 7331 Messages

01 nov. 2010, 13:34

Tu veux une centralisation des erreurs à un seul endroit ou bien devant chacun des champs ?
Dans tous les cas la problématique est la même.
Tu créés une variable et si elle existe tu l'affiches. Variable qui sera remplie par ton script de gestion des erreurs.

ViPHP
AB
ViPHP | 5818 Messages

01 nov. 2010, 15:25

Est-ce vraiment nécessaire de créer un second fichier rien que pour ça ?

Sinon sur le principe, le plus simple est d'utiliser une variable de session dans laquelle tu enregistre les messages d'erreurs dans un tableau.
Ensuite si ce tableau est non vide (donc s'il y a des erreurs) tu liste les erreurs depuis cette variable de session que tu efface juste après sa lecture.
Cela te permet d'afficher facilement une liste d'erreurs.

Une autre solution est de passer des variables get dans le header de redirection vers ta page.
header("Location: ma_page.php?erreur=1");
à réception tu peux faire par exemple un switch sur $_GET['erreur']
$erreur = null;
if (isset($_GET['erreur']))
{
switch($_GET['erreur'])
{
case "1":
        $erreur = 'le champ toto doit être rempli';
        break;
    case "2":
        $erreur = 'le champ titi doit être rempli';
        break;
    case "3":
       $erreur = 'le champ tata doit être rempli';
        break;
}

}

if (isset($erreur)) echo $erreur;
Bon ce sont des exemples, il existe d'autres méthodes.

Petit nouveau ! | 4 Messages

01 nov. 2010, 19:11

merci, effectivement je suis passé par des arrays, mais le problème est que le navigateur m'affiche une page blanche ou lieu du messsage d'erreur dans le formulaire. Est-ce un problème de définition de conditions pour l'erreur?

voici mon code:
partie formulaire:
<html> 
<head>
	<title>RESERVATION</title> 
	<LINK rel=stylesheet type =text/css href=css1.css> 
</head> 
<body>
	
<?php

echo"<form name=donnée METHOD=POST ACTION=controleur.php > ";
				
			
			echo "	<tr><td>Destination :";
				
			
			
			echo"</td>
			
				 <td><input type=text name=destination text-align='right'  ></td></tr>"; 
				if($encodage['destination']=true)
				{
				
				echo "non";
				}
			
				
				
				

	</form>"; 


	
	
	?>
</body>
</html>
partie controleur:
<?php


include('modele.php');
session_start(); 

$encodage=array('destination'=>false);

if(isset($_SESSION['reservation']))
{
$reservation=$_SESSION['reservation'];
}
else
{
$reservation = new reservation('','','','','');
}

			

					


if ( isset(($_POST['destination']) && (!is_numeric($_POST['destination'])) &&(!empty($_POST['destination']))) 
		
		
		{
		
		$reservation->set_destination($_POST['destination']);
			include('detail.php');
			$reservation->save();

		
		}

	if($reservation->get_destination()=='')
	{
	$encodage['destination']=true;
	
	}
if($encodage['destination'])
{
include('page1.php');
}
ou se trouve les fonctions:
<?php

class reservation
{
	private $destination;
    
function __construct()
{	
	
	
		$this->destination='';
		
		}
function set_destination($destination)
{	
	
			
		$this->destination=$destination;
}				 
	

function get_destination()
{
	return $this->destination;
}

function save()
{
 $_SESSION['reservation'] = $this;
}
?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

01 nov. 2010, 23:11

Salut,

pour commencer dans le premier code
if($encodage['destination']=true) <= la y a une erreur tu fait une affectation cela vaudra toujours true (sauf si $encodage n'est pas déclarée). donc ajoute un = la comparaison c'est == (ou ===).

je ne vois pas vraiment ou se fait la gestion d'erreur dans ton script :/

@+
Il en faut peu pour être heureux ......