La Communauté Webmaster  forum rss


  Forum-webmaster
  Technique - programmation
  PHP / MySQL
(Modérateurs: Shain, Jey, erwinol, Lilian, lauryv, ToToMaStEr)
  problème de controle formulaire
« Précédent Suivant »
Pages: [1] Descendre
Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
  Auteur  Sujet: problème de controle formulaire  (Lu 799 fois)
problème de controle formulaire
« sur: le 22-03-2007 a 14:31:24 »
johnny-57
Membre récent
*

Hors-Ligne

Sexe: Male
Messages: 12





Voir le Profil    WWW
Répondre avec citation

Bonjour tout le monde,

Comme 2 têtes pensent mieux qu'une je vous fait part de mon problème parce qu'à force ma tête ne pense plus 

J'ai une page avec un formulaire

Code:

<?
echo "<FORM enctype='multipart/form-data' ACTION='inscription-ok.php' METHOD=POST>";
echo "<TABLE width='80%' CELLPADDING=3 CELLSPACING=2 >";
echo "<tr>";
echo "   <td align= 'left'>";
echo "   </td></tr><tr><TD align='left' class='default'>";
echo "        Société :</td><td>";
echo "      <INPUT TYPE='text' NAME='societe' VALUE='' SIZE=40 MAXLENGTH=50>";
echo "  </TD></TR><TR>";
echo "   <td align= 'left'>";
echo "   </td></tr><tr><TD align='left' class='default'>    ";
echo "       Nom :</td><td>";
echo "      <INPUT TYPE='text' NAME='nom' VALUE='' SIZE=40 MAXLENGTH=50>";
echo "  </TD></TR><TR>";
echo "   <td align= 'left'>";
echo "   </td></tr><tr><TD align='left' class='default'>    ";
echo "       Prénom :</td><td>";
echo "      <INPUT TYPE='text' NAME='prenon' VALUE='' SIZE=40 MAXLENGTH=50>";
echo "  </TD></TR><TR>";
echo "   <td align= 'left'>";
echo "   </td></tr><tr><TD align='left' class='default'>    ";
echo "       Fonction : </td><td>";
echo "      <INPUT TYPE='text' NAME='fonction' VALUE='' SIZE=40 MAXLENGTH=50>";
echo "  </TD></TR><TR>";
echo "   <td align= 'left'>";
echo "   </td></tr><tr><TD align='left' class='default'>    ";
echo "       Téléphone : </td><td>";
echo "      <INPUT TYPE='text' NAME='tel' VALUE='' SIZE=40 MAXLENGTH=50>";
echo "  </TD></TR><TR>";
echo "   <td align= 'left'>";
echo "   </td></tr><tr><TD align='left' class='default'>    ";
echo "       Fax : </td><td>";
echo "      <INPUT TYPE='text' NAME='fax' VALUE='' SIZE=40 MAXLENGTH=50>";
echo "  </TD></TR><TR>";
echo "   <td align= 'left'>";
echo "   </td></tr><tr><TD align='left' class='default'>    ";
echo "       Portable : </td><td>";
echo "      <INPUT TYPE='text' NAME='portable' VALUE='' SIZE=40 MAXLENGTH=50>";
echo "  </TD></TR><TR>";
echo "   <td align= 'left'>";
echo "   </td></tr><tr><TD align='left' class='default'>    ";
echo "       Email : </td><td>";
echo "      <INPUT TYPE='text' NAME='email' VALUE='' SIZE=40 MAXLENGTH=50>";
echo "  </TD></TR><TR>";
echo "   <td align= 'left'>";
echo "   </td></tr><tr><TD align='left' class='default'>    ";
echo "       Site web : </td><td>";
echo "      <INPUT TYPE='text' NAME='site' VALUE='' SIZE=40 MAXLENGTH=50>";
echo "  </TD></TR><TR>";
echo "   <td align= 'left'>";
echo "   </td></tr><tr><TD align='left' class='default'>    ";
echo "       Adresse : </td><td>";
echo "      <INPUT TYPE='text' NAME='adresse' VALUE='' SIZE=40 MAXLENGTH=50>";
echo "  </TD></TR><TR>";
echo "   <td align= 'left'>";
echo "   </td></tr><tr><TD align='left' class='default'>    ";
echo "       Code postal : </td><td>";
echo "      <INPUT TYPE='text' NAME='cp' VALUE='' SIZE=40 MAXLENGTH=50>";
echo "  </TD></TR><TR>";
echo "   <td align= 'left'>";
echo "   </td></tr><tr><TD align='left' class='default'>    ";
echo "       Ville : </td><td>";
echo "      <INPUT TYPE='text' NAME='ville' VALUE='' SIZE=40 MAXLENGTH=50>";
echo "  </TD></TR><TR>";
echo "   <td align= 'left'>";
echo "   </td></tr><tr><TD align='left' class='default'>    ";
echo "       Pays : </td><td>";
echo "      <INPUT TYPE='text' NAME='pays' VALUE='' SIZE=40 MAXLENGTH=50>";
echo "  </TD></TR>";
echo "      <TR><TD colspan=2 align='center'>";
echo "        <CENTER>";
echo "        <INPUT TYPE='reset' VALUE='Effacer' name='Annulation'> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ";
echo "        <INPUT TYPE='submit' NAME='Validation'  VALUE='Enregistrer'>";
echo "        </CENTER>";
echo "      </TD>";
echo "</TR>";
echo "</TABLE>";
echo "</FORM>";

?>


Elle renvoie vers une autre page en php également qui vas insérer le contenue du formulaire dans la base mysql.
Pour ne pas enregistrer n'importe quoi je contrôle le contenue des champs avec ce code qui est dans la 2ème page

Code:

<?
function verif($nom, $email, $tel) {
$retour=0;
   // vérification du nom
   if ($_POST[nom]=="")
   {
   echo "<center><font size=+2><b>Vous n'avez pas saisi votre nom</b></font></center>";
   $retour=1;
   return false;      
   }
   // vérfifcation de la présence du telephone   
   if ($_POST[tel]=="")
   {
   echo "<br><center><font size=+2><b>Vous n'avez pas saisi votre numéro de téléphone</b></font></center>";
   $retour=1;   
   return false;      
   }
   // vérification de l'E-MAIL
   if ($_POST[email])
    {
    $email = strtolower($_POST[email]);
     if (strlen($email) < 6){
   echo "$email : Email trop court<br>";
   $retour=1;
   }
     if (strlen($email) > 255) {
   echo "$email : Email trop long<br>";
   $retour=1;
   }
     if (!ereg("@", $email)){
    echo "$email : Le email n'a pas d'arobase (@)<br>";    
   $retour=1;
   }
     if (preg_match_all("/([^a-zA-Z0-9_\@\.\-])/i", $email, $trouve))
     {
     echo "$email : caractère(s) interdit dans un email (".implode(", ",$trouve[0]).").";
   echo "<br>";
   $retour=1;
     }
     if (!preg_match("/^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}\$/i", $email))
     {
     echo "$email : ce n'est pas un la forme d'un email.<br>";
   $retour=1;
     }
     list($compte, $domaine)=split("@", $email, 2);
     if (!checkdnsrr($domaine, "MX")){
     echo "$email : Ce domaine ($domaine) n'accepte pas les emails<br>";
          $retour=1;
     }
     return $email;
   }
   }
if ($retour==0)
{
return true;
}
else
{
return false;
}
$result=verif($_POST[nom],$_POST[email],$_POST[tel]);
  if ($result==false)
  {
      echo "<br><br><center><font size=+2><b>Utilisez le bouton retour arrière pour modifier votre saisie</b></font></center>";
  }
  else
  {

$carac = "abcdefghijklmnopqrstuvwxyz1234567890#$;*@";
$nbcarac = 7;
$password="";
srand((double)microtime()*1000000);
for($i=0; $i<$nbcarac;$i++){
$password.= $carac[rand()%strlen($carac)];
}
$Maintenant = date('dmY');

  $instruction="INSERT INTO fournisseurs VALUES ('', '$Maintenant', '$_POST[societe]', '$_POST[nom]', '$_POST[prenon]', '$_POST[fonction]', '$_POST[tel]', '$_POST[fax]', '$_POST[portable]', '$_POST[email]', '$_POST[site]', '$_POST[adresse]', '$_POST[cp]','$_POST[ville]','$_POST[pays]','$_POST[email]','$password','0','','','','','','','')";
$res = mysql_query ($instruction, $connexion);
   $num_enreg= mysql_insert_id();

echo "<center><br><br><br><br><font color=red><b>Merci, les informations concernant votre profil sont maintenant enregistrées sous le numero : ".$num_enreg."</b></font><br><br><br><br>";
echo "Un mail de confirmation vous a été envoyé à l'adresse $_POST[email].<br><br><br><br>";

  $aujourdhui = getdate();
  $mois = $aujourdhui['mon'];
  $jour = $aujourdhui['mday'];
  $an = $aujourdhui['year'];
  $heure = $aujourdhui['hours'];
  $min = $aujourdhui['minutes'];
  $sec = $aujourdhui['seconds'];
$total=$categorie+$valeur;
mail("$_POST[email]",
      "texte d'accueil",
      "From: webmaster");


$sqlcomp="SELECT id FROM fournisseurs ORDER BY id DESC LIMIT 1";
$repcomp = mysql_query($sqlcomp, $connexion);
while ($rescomp = mysql_fetch_row($repcomp))
{
//echo "$rescomp[0]";
$sqlcomp2="INSERT INTO competences VALUES ('','$rescomp[0]','','','','','','','0','','')";
$repcomp2 = mysql_query($sqlcomp2, $connexion);
//echo $sqlcomp2;
}
}
?>

Biensur je ne montre pas la partie connexion à la base mais elle est bien dans le code 

Si vous avez une idée je suis preneur merci d'avance

Rapporter au modérateur  

Re:problème de controle formulaire
« Répondre #1 sur: le 23-03-2007 a 21:00:32 »
vertigo_76
P'tit nouveau
**

Hors-Ligne

Sexe: Male
Messages: 125



Arf J'ai un problème...

Voir le Profil    WWW
Répondre avec citation

salut

J'ai la fleme de tout lire peux tu expliquer ce que tu as remarquer (message d'erreur ou comportement annormal)

Ca me permettra de voir plus rapidement la partie du code a regarder

Vertigo

Rapporter au modérateur  
Re:problème de controle formulaire
« Répondre #2 sur: le 23-03-2007 a 21:04:56 »
MarvinLeRouge
Superactif
****

Hors-Ligne

Messages: 584





Voir le Profil    WWW
Répondre avec citation

salut,

Et le problème, c'est quoi ?

Rapporter au modérateur  

Développeur web / Création de site internet
jean@ceugniet.com
Jean Ceugniet, Développement web
SIRET : 523 611 044 00018
Re:problème de controle formulaire
« Répondre #3 sur: le 23-03-2007 a 21:16:01 »
ToToMaStEr
Modérateur Global
*****

Hors-Ligne

Sexe: Male
Messages: 238



....

Voir le Profil    WWW    E-Mail
Répondre avec citation

Problème non démontré, aide impossible!

Rapporter au modérateur  

Vous ne pourrez pas me batre à ce jeu:labrute || Formation aux premiers secours CRF
Re:problème de controle formulaire
« Répondre #4 sur: le 24-03-2007 a 07:41:38 »
johnny-57
Membre récent
*

Hors-Ligne

Sexe: Male
Messages: 12





Voir le Profil    WWW
Répondre avec citation

désolé je fait les choses à moitié, je vous l'avais bien dit ce code m'a mis la tête a l'envers 

en fait le problème est simple, que l'on remplisse le formulaire convenablement, pas du tout ou partiellement la page de contrôle reste blanche et aucune action sur la bdd

Rapporter au modérateur  
Re:problème de controle formulaire
« Répondre #5 sur: le 24-03-2007 a 10:13:01 »
ToToMaStEr
Modérateur Global
*****

Hors-Ligne

Sexe: Male
Messages: 238



....

Voir le Profil    WWW    E-Mail
Répondre avec citation

je n'ai pas vu de script de connexion sql.
Je vois que des recuperation sous fetch_row:
Code:
$sqlcomp="SELECT id FROM fournisseurs ORDER BY id DESC LIMIT 1";
$repcomp = mysql_query($sqlcomp, $connexion);
while ($rescomp = mysql_fetch_row($repcomp))
{
//echo "$rescomp[0]";
$sqlcomp2="INSERT INTO competences VALUES ('','$rescomp[0]','','','','','','','0','','')";
$repcomp2 = mysql_query($sqlcomp2, $connexion);
//echo $sqlcomp2;

Rapporter au modérateur  

Vous ne pourrez pas me batre à ce jeu:labrute || Formation aux premiers secours CRF
Re:problème de controle formulaire
« Répondre #6 sur: le 24-03-2007 a 10:26:05 »
johnny-57
Membre récent
*

Hors-Ligne

Sexe: Male
Messages: 12





Voir le Profil    WWW
Répondre avec citation

comme je le dit dans mon 1er post, le script de connexion est bien là  mais je ne l'ai pas posté pour des raisons de discretion 

Mais l'erreur ne peut venir de la connexion à la bdd puisque quand je supprime le code qui contrôle le formulaire avant l'injection des infos dans la base l'enregistrement se passe très bien mais on peut enregistrer n'importe quoi  donc il faut impérativement que je trouve l'erreur dans ce script pour avoir un formulaire optimum.

Rapporter au modérateur  
Re:problème de controle formulaire
« Répondre #7 sur: le 24-03-2007 a 12:24:21 »
iowa
Invité

E-Mail
Répondre avec citation

Bon alors j'ai pas tout lu ton code.

Pour ta première page : Pourquoi tu n'écrit pas carément juste le formulaire dans le fichier sans utiliser PHP ?
Utilise toujours la balise ouvrante : <?php

Pour ta deuxième page : tu dois utiliser les fonctions isset ou empty pour vérifier les résultats.
Exemple :

Code:

if ($_POST[nom]=="")


se transforme en :

Code:

if (empty($_POST[nom]))


Il faut faire ça avec toutes les données à vérifier.

Un autre truc : quand tu essaie d'accéder à un array mais toujours des quotes pour entourer le nom.

Exemple :

Code:

  if (!verif($_POST['nom'],$_POST['email'],$_POST['tel']))

Rapporter au modérateur  
Re:problème de controle formulaire
« Répondre #8 sur: le 26-03-2007 a 19:07:07 »
johnny-57
Membre récent
*

Hors-Ligne

Sexe: Male
Messages: 12





Voir le Profil    WWW
Répondre avec citation

bon,

ne parvenant pas a trouver l'erreur j'ai tout repris à 0 à tête reposé et sa donne sa

Code:

<?
//
// DEBUT Fonction de contrôle du mail PHP-UNIX
function check_mail($email) {
if( (preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/', $email)) ||
(preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',$email)) ) {
$host = explode('@', $email);
if(checkdnsrr($host[1].'.', 'MX') ) return true;
if(checkdnsrr($host[1].'.', 'A') ) return true;
if(checkdnsrr($host[1].'.', 'CNAME') ) return true;
}
return false;
}
// FIN Fonction de contrôle du mail


$Envoi = 1; //initialisation de la variable envoi à 1

if ($nom == ""){ //nom du champ1
echo("Vous n'avez pas complété le champ nom.<br>"); //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
if ($prenom == ""){
echo("Vous n'avez pas complété le champ prenom.<br>");
$Envoi = 0;
}
if ($fonction == ""){
echo("Vous n'avez pas complété le champ fonction<br>");
$Envoi = 0;
}
if ($email == ""){
echo("Vous n'avez pas complété le champ email<br>");
$Envoi = 0;
}
else {
if (check_mail($email)) {
echo("");
}
else {
echo("L'adresse e-mail n'est pas valide<br>");
$Envoi = 0;
}
}
if ($adresse == ""){
echo("Vous n'avez pas complété le champ adresse.<br>");
$Envoi = 0;
}
if ($cp == ""){
echo("Vous n'avez pas complété le champ code postal.<br>");
$Envoi = 0;
}
if ($Envoi == 0) echo "<br><br><center><font size=+2><b>Utilisez le bouton retour arrière pour modifier votre saisie</b></font></center>";
//Envoi du message

if ($Envoi == 1) { //vérification que la variable envoi est bien à 1

et sa marche bien, si sa peut vous servir 

« Dernière Édition: le 26-03-2007 a 19:08:09 par johnny-57 » Rapporter au modérateur  
Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
Pages: [1] Monter
« Précédent Suivant »
Sauter à: 

Votre statut : Invité
Vous devez être membre pour participer.
 
 
Let’s Encrypt : le certificat SSL gratuit
Tester votre site internet sur différents navigateurs
[WordPress] Des problèmes avec l’administration ?
Rappel : Mettez à jour vos CMS et vos sites E-commerce
Le .fr fête ses 25 années d’existence !
Mesurer votre audience en temps réel avec BubbleStat
Porter réclamation contre Google Panda ?
Zlio n’est plus …
 
 
 
 
 

Copyright (c) Devclic 2002 - 2026 - Tous droits réservés

creation site internet strasbourg