PHP / JavaScript

Fermé
boss183 Messages postés 181 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 octobre 2011 - 24 mai 2011 à 10:13
 Utilisateur anonyme - 24 mai 2011 à 11:34
Bonjour à tous,

je développe une application qui contient un formulaire qui permet d'ajouter des infos, le formulaire envoie les données au fichier cible (addinfo.php). Dans ce dernier, je vérifie que les champs des formulaires sont bien remplis et que ça correspond à ce que j'attends (ex : lien web commence bien par http:// , etc...) Actuellement, mon script addinfo.php affiche le nom de l'erreur et invite l'utilisateur à retourner à la page html pour remplir le formulaire, le problème c'est qu'il doit tout retaper.
C'est pourquoi je préférerais utiliser des alertes JavaScript qui, il me semble n'effacerai pas ce que l'utilisateur a déjà écrit. Mais je ne sais pas trop où intégrer le JavaScript.
Ou si vous avez d'autres solutions : souvent lorsqu'on s'inscrit sur les sites web on ne change pas de page on a juste les champs manquants en rouge mais je ne sais pas comment faire ça.

Ci-dessous le code de mon fichier cible addinfos.php :

<?php
//connexion à la base de données
//paramètres : serveur, utilisateur, mot de passe, base de données
$link2 = DBconnect($serveur,$user,$mdp,$bdd);

$title = addslashes($_POST['title']);
$logiciel = addslashes($_POST['logiciel']);
$version = addslashes($_POST['version']);
$link = addslashes($_POST['link']);
$description = addslashes($_POST['description']);

if(empty($title)) 							
	$erreur = "<P align='center'><BR><B>Veuillez saisir le titre de l'info !</B><BR><BR><BR><A HREF='nouvelle_info.html' style='text-decoration:none; font-variant: small-caps;'><FONT SIZE=2><span style='border:solid 2px; border-color:#E7634D; padding:10px; border-radius:1em;'><B>Saisir de nouveau la question</B></SPAN></FONT></A></P>";

if(empty($logiciel)) 							
	$erreur = "<P align='center'><BR><B>Veuillez saisir le nom du logiciel / matériel !</B><BR><BR><BR><A HREF='nouvelle_info.html' style='text-decoration:none; font-variant: small-caps;'><FONT SIZE=2><span style='border:solid 2px; border-color:#E7634D; padding:10px; border-radius:1em;'><B>Saisir de nouveau la question</B></SPAN></FONT></A></P>";	
	
if(empty($link)) 							
	$erreur = "<P align='center'><BR><B>Veuillez saisir un lien pour l'info !</B><BR><BR><BR><A HREF='nouvelle_info.html' style='text-decoration:none; font-variant: small-caps;'><FONT SIZE=2><span style='border:solid 2px; border-color:#E7634D; padding:10px; border-radius:1em;'><B>Saisir de nouveau la question</B></SPAN></FONT></A></P>";
	
if(empty($description)) 							
	$erreur = "<P align='center'><BR><B>Veuillez saisir la description de l'info !</B><BR><BR><BR><A HREF='nouvelle_info.html' style='text-decoration:none; font-variant: small-caps;'><FONT SIZE=2><span style='border:solid 2px; border-color:#E7634D; padding:10px; border-radius:1em;'><B>Saisir de nouveau la question</B></SPAN></FONT></A></P>";

if (isset($erreur))
	{
    echo $erreur;
	}
	else 
	if (preg_match("#(((https?|ftp)://(w{3}\.)?)(?<!www)(\w+-?)*\.([a-z]{2,4}))#", $link))
	{
	mysql_query("INSERT INTO infolog (title,logiciel,version,link,description) VALUES('$title','$logiciel','$version','$link','$description')"); 
	echo "<p align='center'><font size=4><BR><B>L'info suivante a bien ét&eacute ajoutée :</B></FONT></P>";
	echo "<P align='center'><I><B>"."<A HREF='$link'><FONT SIZE=4>".$title."</FONT></A></B></I></P><BR><BR>";
	echo "<A HREF='nouvelle_info.html' style='text-decoration:none; font-variant: small-caps;'><FONT SIZE=4><P align='center'><span style='border:solid 2px; border-color:#E7634D; padding:10px; border-radius:1em;'><B>Ajouter une nouvelle info</B></SPAN></FONT></A></P>";
	}
	else
	{
	echo "<P align='center'><BR><B>Le lien de l'info que vous avez saisi n'est pas correct !</B><BR><BR><BR><A HREF='nouvelle_info.html' style='text-decoration:none; font-variant: small-caps;'><FONT SIZE=2><span style='border:solid 2px; border-color:#E7634D; padding:10px; border-radius:1em;'><B>Saisir de nouveau l'info</B></SPAN></FONT></A></P>";	
	}

mysql_close();

?>


Merci d'avance pour votre aide !
A voir également:

4 réponses

Bonjour,

Le plus simple est de faire ceci :
un formulaire généré en PHP qui est posté sur le même script, sauf que quand les données sont postées on ne fait pas la même chose :
<?php 
// formulaire posté ? 
$erreur = ''; 
if (isset($_POST['truc'])) { 
// formulaire ok ? 
if ($_POST['truc']!='') { 
// traitement du formulaire et suite, les données sont ok 
// et redirection
} // formulaire ok ? 
} // formulaire posté ? 
?> 
<span><?php echo $erreur;?></span> 
<form method="post"> 
<input name="truc" type="text"> 
<input type="submit"> 
</form> 

Zébulon
0
boss183 Messages postés 181 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 octobre 2011 17
24 mai 2011 à 10:33
if (isset($_POST['truc']))
cette commande test si le champ truc est rempli ??
0
Utilisateur anonyme
24 mai 2011 à 10:38
Non, cela vérifie que la variable existe, elle peut être à ''
0
boss183 Messages postés 181 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 octobre 2011 17
24 mai 2011 à 11:06
je ne suis pas sur de comprendre comment adapter ta solution à mon problème. J'ai compris qu'au lieu d'utiliser un fichier source et un fichier cible on n'utilise qu'un fichier qui peut changer en fonction de ce qu'a rempli l'utilisateur. Mais je en maîtrise pas isset ... et je ne vois pas comment faire mes test.
0
Utilisateur anonyme
24 mai 2011 à 11:16
isset vous permet juste de vérifier que votre formulaire a bien été posté, s'il n'y a pas un des champs requis dans $_POST c'est que le formulaire n'a pas été posté, donc qu'il faut l'afficher, c'est tout
0
boss183 Messages postés 181 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 octobre 2011 17
24 mai 2011 à 11:25
ah ok je comprends ! Je vais voir , je vais peut être utilisé ta solution ou les sessions.
0
boss183 Messages postés 181 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 octobre 2011 17
24 mai 2011 à 11:28
Juste une question :

j'utilise if (isset($_POST['truc'])) pour voir si mon formulaire est posté.

Et à l'intérieur de ça je fais des test pr savoir si les champs ne sont pas vides mais ça veut dire qu'à chaque test je dois écrire de nouveau tout le formulaire par exemple si je souhaite mettre en rouge le champ vide. non ?
0
Utilisateur anonyme
24 mai 2011 à 11:34
Heu 'truc' doit être un nom d'un champ du formulaire tout de même.

Après vous faites les tests sur vos champs et vous renseignez la variable $erreur s'il y a une erreur comme dans mon exemple.
S'il y a une erreur ou plusieurs, vous ne passerez pas dans la redirection et du coup vous afficherez à nouveau le formulaire ainsi que le contenu de $erreur
0