8795 sujets

Développement web côté serveur, CMS

Bonjour,

la question vous semblera peut-être idiote ou pitoyable mais la je tourne en rond ...
je voudrais savoir comment faire pour valider un formulaire avec du PHP. Je m'explique j'ai de nombreux formulaires qui remplissent une base de données Access (je n'ai pas le choix, sinon j'aurais pris mysql ^^) et je voudrais qu'un script PHP teste les champrs remplis avant d'envoyer les données à la base pour être sur que tout est bon. A l'issu de l''exécution, si des champs sont mal saisis ou bien vides, j'affiche le petit message d'erreur à coté du champ ou des champs qui sont faux. (et si possible surlignage du champ ou des champs faux)

Voici un exemple d'une partie d'un de mes formulaires :

<tr>
<td><span class="c12"><i><b>Adresse :</b></i></span></td>
<td><input type="text" name="adr" size="50" value=""></td>
</tr>
<tr>
<td><span class="c12"><i><b>Nom commune de localisation :</b></i></span></td>
<td><select name="commune" size="1">
<option selected value="">--- Nom ville ---</option>
<?php
include("connect.php" );
$requete = "SELECT Nom_Commune FROM Commune";
$result = odbc_do($cnx,$requete);
while($row = odbc_fetch_array($result))
{
echo "<option>".($row["Nom_Commune"])."</option>";
}
odbc_close($cnx);
?>
</select>
</td>
</tr>

Voilà, j'espère que quelqu'un pourra m'aider... Smiley bawling
Salut byakuichi et bienvenue Smiley cligne ,

Alors pour commencer PHP est un langage serveur ce qui veut dire qu'il sera exécuté avant la génération de la page html. Du coup ce n'est pas en mettant le code juste après la zone à saisir qu'il sera exécuté juste après Smiley langue !

Le plus simple serait sans doute de regarder sur un site plus généraliste comme par exemple : siteduzero : les formulaires.

A+
je veux que ça appel un script au moment du submit en gros, si le code est bon et bien ajout sinon ça ré-affichera le formulaire avec les annotations à coté des champs concernés
Personnellement, je fais ce genre de vérifications comme ça :

Dans la page de code du formulaire, je vérifie si le formulaire a déjà été posté
if (empty($_POST['form']))
{
}

ou éventuellement si le bouton du soumission du formulaire a été pressé (ainsi on peut différencier les actions si il y en a plusieurs), ce qui se fait en remplaçant le nom du formulaire form par le nom de l'input de type submit approprié

- Si oui, je fais les vérifications du formulaire;
- Si non, j'affiche le formulaire vierge (fin du script -> affichage)

Après la vérification (si elle a eu lieu, donc si le formulaire a été posté)
- Si il y a une ou plusieurs erreurs dans le formulaire, je réaffiche celui-ci avec les commentaires pour la correction (fin du script -> affichage)
- Si il n'y a pas d'erreur, je lance le script d'ajout/màj de la BDD et affiche une confirmation (fin du script)

Avec cette méthode, il n'y a qu'une seule page de base qui est utilisée, ce qui fait qu'il n'y a pas besoin de rediriger le navigateur de l'internaute (puisque tout se fait du côté serveur). On peut utiliser des include si on veut séparer chaque étapes dans un fichier différent. Pour cette méthode, il faut donc que l'attribut action du formulaire renvoie sur la même page (on peut le laisser vide à cet effet).

Il y a la méthode qui indique une page différente pour le traitement du formulaire (avec un attribut action différent de la page contenant le formulaire). Les vérifications seront exactement les mêmes, mais la gestion des redirections (en cas de succès ou non du test) sera différente. Personnellement, je préfère utiliser la méthode de vérification sur une seule page (utiliser des include peut donner l'illusion de travailler sur différentes pages et est meilleure pour la lisibilité du code et la séparation des étapes) afin d'éviter les redirections fastidieuses en dur pour le navigateur.