Vérifier si les champs d'un form sont remplis...pb (code inside) [PHP] - Programmation
Marsh Posté le 21-03-2002 à 16:31:57
Bon je vais faire plus simple car je viens de relire le post et c po tres clair tout ca
Alors disons que j'ai un formulaire "inscriptions.php", une page principale "clan.php". Sur cette page principale j'utilise des pseudo frame donc pour afficher mon formulaire j'ai le lien <a href="clan.php?inscriptions">Inscriptions</a>
Là j'ai bien mon formulaire qui s'affiche no souci.
Pour gérer le traitement des données du dit formulaire, j'utilise une class Inscription, qui contient 2 méthodes, inscript et filled_out. La première est chargée de traiter les données, c à d rentrer les infos ds une base MySQL. La deuxième méthode est censer vérifier que certains qui sont obligatoires, soient remplis par l'utilisateur.
Quand je clique sur le bouton "Submit" je crée une instance de la class Inscription, j'utilise la fonction filled_out pour vérifier si les champs sont biens remplis puis je traite les données avec inscript.
Comme j'utilise des pseudo frame, ces 2 actoins s'executent sur ma page principale, seulement le pb est que la fonction filled_out bug et je me retrouve avec un message qui me dit que je n'ai pas remplis les champs du formulaire.(cf code)
Je fais un if(filled_out...) et ds le else j'ai ma fonction inscript pour traiter les données. Donc si les champs sont bien remplis je devrais soumettre les données pour traitement non ??
Bon voici le code des fonctions si vous trouvez des erreurs plizz
@+
CODE
---------------------
ds la page principale j'ai ça:
<?
include ($header);
include($page);
switch($act)
{
case "inser" : $admin_news = new news;
$admin_news->inser($titre,$contenu,$auteur,$mail,$site);
echo "<meta http-equiv=\"refresh\" content=\"0; url=http://clanwto.free.fr/clan.php?cat=a1\">\n";
break;
case "suppr" : $admin_news= new news;
$admin_news->efface($id);
echo "<meta http-equiv=\"refresh\" content=\"0; url=http://clanwto.free.fr/clan.php?cat=a1&menu=del\">\n";
break;
case "submit" : $insc = new Inscriptions;
if($insc->filled_out($nom, $passwd, $conf_pass, $mail, $ville, $motivations)){
$insc->inscript($nom, $passwd, $conf_pass, $mail, $site, $icq, $armes, $maps, $ville, $motivations, $commentaires);
}
else{
echo "<script language=javascript>\n";
echo "alert(\"Veuillez remplir tous les champs svp.\" );\n";
echo "history.back();\n";
echo "</script>";
}
break;
}
include ($footer);
?>
Les fonctions de la class Inscription:
class Inscriptions{
function dbconnect()
{
global $host;
global $user;
global $pass;
global $bdd;
// Connexion à la Base de données
$id_connect = mysql_connect($host, $user, $pass);
if(!$id_connect)
echo 'Connexion impossible !<br>' ;
// Selection de la base de données
$my_db = mysql_select_db($bdd);
if(!$my_db)
echo 'Sélection de la base impossible' ;
}
function filled_out ($nom, $passwd, $conf_pass, $mail, $ville, $motivations)
{
if (!isset ($nom) || $nom == "" ){
return 0;
}
if (!isset ($passwd) || $pass == "" ){
return 0;
}
if (!isset ($conf_pass) || $conf_pass == "" ){
return 0;
}
if (!isset ($ville) || $ville == "" ){
return 0;
}
if (!isset ($mail) || $mail == "" ){
return 0;
}
if (!isset ($motivations) || $motivations == "" ){
return 0;
}
return 1;
}
function inscript ($nom, $pass, $conf_pass, $mail, $site, $icq, $armes, $maps, $ville ,$motivations, $commentaires)
{
$pass = md5 ($pass);
$conf_pass = md5 ($conf_pass);
// connexion à la base de données
dbconnect ();
$sql = "SELECT * FROM membres WHERE m_pseudo = '$nom'";
$result = mysql_query($sql);
$ligne=mysql_fetch_array($result);
if($ligne["m_pseudo"] == $nom){
//Le pseudo existe déjà
echo "<script language=javascript>\n";
echo "alert(\"Le pseudo existe déjà. Veuillez saisir un nouveau pseudo svp.\" );\n";
echo "</script>";
}
else{
$motivations = nl2br ($motivations);
$commentaires = nl2br ($commentaires);
$temps = date("Y-m-d" );
$nom = htmlspecialchars ($nom);
$mail = htmlspecialchars ($mail);
$site = htmlspecialchars ($site);
$icq = htmlspecialchars ($icq);
$armes = htmlspecialchars ($armes);
$maps = htmlspecialchars ($maps);
$ville = htmlspecialchars ($ville);
$config = htmlspecialchars ($config);
$sql = "Insert into membres (m_pseudo, m_pass, m_mail, m_icq, m_date_insc, m_ville, m_config, m_commentaires, m_motivations)";
$sql .= "values ('$nom', '$pass', '$mail', '$icq', '$temps', '$ville', '$config', '$commentaires', '$motivations'";
$result = mysql_query ($sql);
if($result==false){
mysql_close();
echo "Problème";
return 1;
}
else {
mysql_close();
return 0;
}
}
}
}
Marsh Posté le 21-03-2002 à 16:44:39
C'est bô ! Mais en JavaScript, c'est beaucoup plus simple. Seulment c'est vrai que ça s'exécute côté client et que le client est maître chez lui.
Marsh Posté le 21-03-2002 à 17:02:11
pourkoi tu mettrai pas return false ou true selon le cas ? comme ça dans la condition ça marcherai je pense, non ?
sinon on peut savoir pour quel jeu c ? et si on peut voir à koi ressemble ton site ?
Marsh Posté le 21-03-2002 à 17:11:24
salut,
j'ai regardé dans ce que je faisais
j'ai trouvé çà
if ($submit) {
if (empty($type_vente)) {
print_Erreur($dieTypeVente);
}
else if (empty($marque)) {
print_Erreur($dieMarque);
}
else if (empty($modele)) {
print_Erreur($dieModele);
}
else if (empty($annee)) {
print_Erreur($dieAnnee);
}
else if (empty($cylindree)) {
print_Erreur($dieCylindree);
}
else if (empty($kilometrage)) {
print_Erreur($dieKilometrage);
}
else if (empty($couleur)) {
print_Erreur($dieCouleur);
}
else if (empty($prix) || empty($prix_euro) ) {
print_Erreur($diePrix);
}
.......
dans une page affichant un formulaire avec un bouton nommé "submit" d'où le $submit en premier test.
si çà peut t'aider
Marsh Posté le 21-03-2002 à 17:12:48
ah ah le petit curieux Ben c pour mon futur clan CS sorry pour ceux qui trouvent que ce jeu est dépassé mais qu'est-ce que vous voulez j'adore
Sinon pour le false ou true c a kel nivo ? ds la page principale ?
Allez voilà l'adresse mais bon ya encore aucun graphisme, la charte graphique n'est pas figée et peu encore bouger et pi ya po encore le logo
www.clan-wto.fr.st après je te laisse chercher là ou tu peux avoir le reste, mais je pense que c po trop dur de trouver vu le code que j'ai mis ci-dessus
Marsh Posté le 21-03-2002 à 19:04:29
dirakocha a écrit a écrit : ah ah le petit curieux Ben c pour mon futur clan CS sorry pour ceux qui trouvent que ce jeu est dépassé mais qu'est-ce que vous voulez j'adore Sinon pour le false ou true c a kel nivo ? ds la page principale ? Allez voilà l'adresse mais bon ya encore aucun graphisme, la charte graphique n'est pas figée et peu encore bouger et pi ya po encore le logo www.clan-wto.fr.st après je te laisse chercher là ou tu peux avoir le reste, mais je pense que c po trop dur de trouver vu le code que j'ai mis ci-dessus |
En fait je demandais ça car je suis entrain moi aussi de faire le site de mon clan CS
Il est en construction encore, je fais la partie membre en ce moment.
URL : http://lesf.jeanb.d2g.com (hébergé ché moi donc c un peu lent)
Marsh Posté le 21-03-2002 à 19:06:24
dirakocha a écrit a écrit : function filled_out ($nom, $passwd, $conf_pass, $mail, $ville, $motivations) { if (!isset ($nom) || $nom == "" ){ return false; } if (!isset ($passwd) || $pass == "" ){ return false; } if (!isset ($conf_pass) || $conf_pass == "" ){ return false; } if (!isset ($ville) || $ville == "" ){ return false; } if (!isset ($mail) || $mail == "" ){ return false; } if (!isset ($motivations) || $motivations == "" ){ return false; } return true; } Ds ma page principale je fais ça : if($insc->filled_out($nom, $passwd, $conf_pass, $mail, $ville, $motivations)){ $insc->inscript($nom, $passwd, $conf_pass, $mail, $site, $icq, $armes, $maps, $ville, $motivations, $commentaires); } else{ echo "<script language=javascript>\n"; echo "alert(\"Veuillez remplir tous les champs svp.\" );\n"; echo "history.back();\n"; echo "</script>"; } Donc en toute logique il devrait me mettre un message uniquement ds le cas où un des champs spécifiés plus haut n'est pas rempli non ?? Et ben c la que le bug se trouve !! So si qlq1 a réussi à saisir tout ce que j'ai dit et qu'il a une solution et ben je suis preneur @+ |
voila à koi je pensais
Marsh Posté le 21-03-2002 à 22:42:45
moi je penserais à ça :
function filled_out ($Form)
while (list($FieldName,$FieldValue) = each($Form)) {
if (!isset($FieldValue) || $FieldValue == '' return FALSE;
else return TRUE;
}
tu passes en argument la tableau $HTTP_POST_VARs[], ça devrait le faire non ?
[jfdsdjhfuetppo]--Message édité par Sh@rdar--[/jfdsdjhfuetppo]
Marsh Posté le 23-03-2002 à 19:54:16
Sh@rdar a écrit a écrit : moi je penserais à ça : function filled_out ($Form) while (list($FieldName,$FieldValue) = each($Form)) { if (!isset($FieldValue) || $FieldValue == '' return FALSE; else return TRUE; } tu passes en argument la tableau $HTTP_POST_VARs[], ça devrait le faire non ? |
Ben en fait c ce que je faisais o départ mais comme ça ne fonctionnait po j'ai laissé tomber mais le truc tout con de M@nou avec le empty() ça fonctionne très bien so...
Mais merci pour vos réponse les gars, je ne suis po très expérimenté en php mais j'essaie plein de truc pour apprendre
genre le site en php avec pseudo frame + class on aurait pu faire bcp plus basic mais moi j'aime bien faire compliqué
Je@nb >> On pourra peut-être organiser un match ds le futur mais bon comme pour le moment on est que 2 ça va être short
Allez @+ et encore merci
Marsh Posté le 23-03-2002 à 20:16:01
Nous on est 25
mais on est nul
J'ai fait ce site pour eux mais surtout pour m'amuser, parce c fou ce kon s'emmerde pdt les vacances
Marsh Posté le 21-03-2002 à 14:26:58
Bon ben le pb c que j'ai un formulaire d'inscription qui se trouve sur une page inscriptions.php, pour l'afficher je passe par le biais de pseudo frame et donc le lien est le suivant "clan.php?cat=inscriptions" là g un include de la page d'inscription. Jusque là no pb ca rulez. Non le pb c pour vérifier si les champs du formulaire sont bien remplis(enfin certains champs sont plus important que d'autre so...)
Pour se faire j'utilise une fonction filled_out dont voici le code:
function filled_out ($nom, $passwd, $conf_pass, $mail, $ville, $motivations)
{
if (!isset ($nom) || $nom == "" ){
return 0;
}
if (!isset ($passwd) || $pass == "" ){
return 0;
}
if (!isset ($conf_pass) || $conf_pass == "" ){
return 0;
}
if (!isset ($ville) || $ville == "" ){
return 0;
}
if (!isset ($mail) || $mail == "" ){
return 0;
}
if (!isset ($motivations) || $motivations == "" ){
return 0;
}
return 1;
}
Ds ma page principale je fais ça :
if($insc->filled_out($nom, $passwd, $conf_pass, $mail, $ville, $motivations)){
$insc->inscript($nom, $passwd, $conf_pass, $mail, $site, $icq, $armes, $maps, $ville, $motivations, $commentaires);
}
else{
echo "<script language=javascript>\n";
echo "alert(\"Veuillez remplir tous les champs svp.\" );\n";
echo "history.back();\n";
echo "</script>";
}
Donc en toute logique il devrait me mettre un message uniquement ds le cas où un des champs spécifiés plus haut n'est pas rempli non ??
Et ben c la que le bug se trouve !!
So si qlq1 a réussi à saisir tout ce que j'ai dit et qu'il a une solution et ben je suis preneur
@+
---------------
Q.G Tutoriaux ici