Page 1 sur 1

vérification champs avant insertion base ( serveur PHP 7)

Posté : 23 nov. 2016, 19:53
par bob56@
Bien le bonjour à tous :D

Merci d'avance à celui qui m'apportera la solution !

Après quelques jours à batailler et trouver par moi-même je tourne en rond:
- les données sont insérées ou non dans la base selon les modifications apportées #-o
Mon souhait, que celles-ci ne soient pas insérées si absence de renseignements lors de l'inscription.

voilà la page qui pose problème:
<?php
// connexion base
   include("fonctions.php");   /* ma base mes identifiants */  
// On commence par récupérer les champs 
if (isset($_POST['nom']))       $nom=$_POST['nom'];
else      $nom="";
if(isset($_POST['prenom']))     $prenom=$_POST['prenom'];
else      $prenom="";
if(isset($_POST['age']))     $prenom=$_POST['age'];
else      $age="";
if(isset($_POST['adresse']))       $rien=$_POST['adresse'];
else      $adresse="";
if(isset($_POST['email']))      $email=$_POST['email'];
else      $email="";
if(isset($_POST['telephone']))      $email=$_POST['telephone'];
else      $telephone="";
if(isset($_POST['url']))        $url=$_POST['url'];   
else      $url="";
if(isset($_POST['titre']))      $titre=$_POST['titre'];
else      $titre="";
if(isset($_POST['date_post']))        $url=$_POST['date_post'] = date("d-m-Y H:i:s");
else      $date_post="";
if(isset($_POST['message']))    $message=$_POST['message'];
else      $message="";
echo '<br><b><a class="champs_1">Veuillez renseigner:</a></b><br><br>';
// On vérifie si les champs sont vides 
if(empty($nom) OR empty($prenom) OR empty($age) OR empty($adresse) OR empty($email) OR empty($telephone) OR empty($url) OR empty($titre)  OR empty($message)) 
    {
        if(empty($_POST['nom']))
         {
            echo '
            <br><li  class="champs_2" >Nom</li>';
        }
         if(empty($_POST['prenom']))
        {
            echo '
            <br><li class="champs_2" >Prenom</li>';
        }
        if(empty($_POST['age']))
        {
            echo '
            <br><li class="champs_2" >Age</li>';
        }
        if(empty($_POST['adresse']))
        {
            echo '
            <br><li class="champs_2" >Adresse</li>';
        }
        if(empty($_POST['email']))
        {
            echo '
            <br><li class="champs_2" >Email</li>';
        }
        if(empty($_POST['telephone']))
        {
            echo '
            <br><li class="champs_2" >Téléphone</li>';
        }
        if(empty($_POST['url']))
        {
            echo '
            <br><li class="champs_2" >Website url</li>';
        }
        if(empty($_POST['titre']))
        {
            echo '
            <br><li class="champs_2" >Titre</li>';
        }
        if(empty($_POST['message']))
        {
            echo '
            <br><li class="champs_2" >Message</li>';
        }
    }

	else {	

        $nom = htmlentities($_POST['nom'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $prenom = htmlentities($_POST['prenom'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $age = htmlentities ($_POST['age'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $adresse = htmlentities($_POST['adresse'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $email = htmlentities($_POST['email'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $telephone = htmlentities ($_POST['telephone'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $url = htmlentities ($_POST['url'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $titre = htmlentities($_POST['titre'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $message = htmlentities($_POST['message'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
   }    
// Enregistrement dans la table 
$bdd = "INSERT INTO `infos_tbl` (`nom`, `prenom`, `age`, `adresse`, `email`, `telephone`, `url`, `titre`, `message`, `date_post`) VALUES ( '$nom','$prenom','$age','$adresse','$email','$telephone', '$url','$titre', '$message', now() )"; /////////
if ($conn->query($bdd) === TRUE)
 {
echo "<h2 style=' color:green;'>Vos infos on été ajoutées !</h2>";
} else {
echo "<h2 style=' color:red;'>Erreur SQL insertion données:</h2> " . $bdd . "<br>" . $conn->error;
}
$conn->close();
?>

Re: vérification champs avant insertion base ( serveur PHP 7)

Posté : 24 nov. 2016, 09:50
par Spols
tu dois mettre ta requète dans ton else, si tu veux quelle ne soit éxécuté que si tout est rempli

Re: vérification champs avant insertion base ( serveur PHP 7)

Posté : 24 nov. 2016, 17:15
par bob56@
Spols encore Merci pour ton aide !

j'ai repris le script, maintenant si un champ n'est pas rempli j'ai bien le message d'erreur et rien n'est inscrit dans la base.

Si tous les champs sont ok > inscription dans la base de donné mais le résultat est surprenant :

NOM : OK
Prénom : age
Âge:
Adresse :
Email: Téléphone
Téléphone:
URL : OK

à savoir, si je n'utilise pas la vérification de champs lors de l'inscription, je n'ai pas de problème dans la bdd celle-ci est complète et OK
<?php
// connexion base
   include("fonctions.php");   /* ma base mes identifiants */  
// On commence par récupérer les champs 
if (isset($_POST['nom']))       $nom=$_POST['nom'];
else      $nom="";
if(isset($_POST['prenom']))     $prenom=$_POST['prenom'];
else      $prenom="";
if(isset($_POST['age']))     $prenom=$_POST['age'];
else      $age="";
if(isset($_POST['adresse']))       $rien=$_POST['adresse'];
else      $adresse="";
if(isset($_POST['email']))      $email=$_POST['email'];
else      $email="";
if(isset($_POST['telephone']))      $email=$_POST['telephone'];
else      $telephone="";
if(isset($_POST['url']))        $url=$_POST['url'];   
else      $url="";
if(isset($_POST['titre']))      $titre=$_POST['titre'];
else      $titre="";
if(isset($_POST['date_post']))        $url=$_POST['date_post'] = date("d-m-Y H:i:s");
else      $date_post="";
if(isset($_POST['message']))    $message=$_POST['message'];
else      $message="";
    // c'est ici qu'on vérifie si au moins un champ est vide avec OR :
    if(empty($_POST['nom']) OR empty($_POST['prenom']) OR empty($_POST['age']) OR empty($_POST['adresse']) OR empty($_POST['email']) OR empty($_POST['telephone']) OR empty($_POST['url']) OR empty($_POST['titre']) OR empty($_POST['message']))
    {
        echo '<p><a class="champs_1" >Attention, vous avez oublié de remplir les champs suivants :</a></p><ul>';	
        if(empty($_POST['nom']))
         {
         	 echo '<br><li  class="champs_2" >Nom</li>';
        }
         if(empty($_POST['prenom']))
        {
            echo '<br><li class="champs_2" >Prenom</li>';
        }
        if(empty($_POST['age']))
        {
            echo '<br><li class="champs_2" >Age</li>';
        }
        if(empty($_POST['adresse']))
        {
            echo '<br><li class="champs_2" >Adresse</li>';
        }
        if(empty($_POST['email']))
        {
           echo '<br><li class="champs_2" >Email</li>';
        }
        if(empty($_POST['telephone']))
        {
            echo '<br><li class="champs_2" >Téléphone</li>';
        }
        if(empty($_POST['url']))
        {
            echo '<br><li class="champs_2" >Website url</li>';
        }
        if(empty($_POST['titre']))
        {
            echo '<br><li class="champs_2" >Titre</li>';
        }
        if(empty($_POST['message']))
        {
            echo '<br><li class="champs_2" >Message</li>';
        }
    echo  '</ul>';
//htmlspecialchars_decode permet affichage accents dans page PHP
        $nom = htmlentities($_POST['nom'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $prenom = htmlentities($_POST['prenom'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $age = htmlentities ($_POST['age'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $adresse = htmlentities($_POST['adresse'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $email = htmlentities($_POST['email'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $telephone = htmlentities ($_POST['telephone'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $url = htmlentities ($_POST['url'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $titre = htmlentities($_POST['titre'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
}
else // si les variables $_POST du formulaire n'existent pas, le code ci-dessus ne s'exécute pas
{
     // ici, ce que tu veux éventuellement afficher
echo '<p><a class="champs_1" >Super tous les champs sont remplis! :</a></p><ul>';	
// Aucun champ n'est vide, on peut enregistrer dans la table 
$bdd = "INSERT INTO `infos_tbl` (`nom`, `prenom`, `age`, `adresse`, `email`, `telephone`, `url`, `titre`, `message`, `date_post`) VALUES ( '$nom','$prenom','$age','$adresse','$email','$telephone', '$url','$titre', '$message', now() )";
if ($conn->query($bdd) === TRUE) 
{
//echo "<h2 style=' color:green;'>Vos infos on été ajoutées !</h2>";
} else {
echo "<h2 style=' color:red;'>Erreur SQL insertion données:</h2> " . $bdd . "<br>" . $conn->error;
}
}
mysqli_close($conn);
?>

Re: vérification champs avant insertion base ( serveur PHP 7)

Posté : 24 nov. 2016, 17:50
par Spols
2 choses :
pourquoi avoir enlevé du else l'attribution des variables avec htmlentities qui y était avant

de 2 , if(isset($_POST['age'])) $prenom=$_POST['age']; Il n'y a rien qui te choque ?

Remarque plus générale, pourquoi recupère tu 2 fois les données en _POST ? il te suffirait de le faire une fois pour toute. avec htmlentities et en début de script. et puis de tester qu'aucune n'est vide.

Re: vérification champs avant insertion base ( serveur PHP 7)

Posté : 24 nov. 2016, 19:53
par bob56@
OK çà roule, je vois que tu as un œil de lynx :D

Je reconnais là les pro =D> , encore merci

le code qui fonctionne:
<?php
// connexion base
   include("fonctions.php");   /* ma base mes identifiants */  
// On commence par récupérer les champs 
        $nom = htmlentities($_POST['nom'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $prenom = htmlentities($_POST['prenom'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $age = htmlentities ($_POST['age'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $adresse = htmlentities($_POST['adresse'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $email = htmlentities($_POST['email'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $telephone = htmlentities ($_POST['telephone'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $url = htmlentities ($_POST['url'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $titre = htmlentities($_POST['titre'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $date_post = htmlentities($_POST['date_post'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $nom = htmlentities($_POST['nom'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
        $message = htmlentities($_POST['message'], ENT_QUOTES | ENT_IGNORE, "UTF-8");
    // c'est ici qu'on vérifie si au moins un champ est vide avec OR :
    if(empty($_POST['nom']) OR empty($_POST['prenom']) OR empty($_POST['age']) OR empty($_POST['adresse']) OR empty($_POST['email']) OR empty($_POST['telephone']) OR empty($_POST['url']) OR empty($_POST['titre']) OR empty($_POST['message']))
    {
        echo '<p><a class="champs_1" >Attention, vous avez oublié de remplir les champs suivants :</a></p><ul>';	
        if(empty($_POST['nom']))
         {
         	 echo '<br><li  class="champs_2" >Nom</li>';
        }
         if(empty($_POST['prenom']))
        {
            echo '<br><li class="champs_2" >Prenom</li>';
        }
        if(empty($_POST['age']))
        {
            echo '<br><li class="champs_2" >Age</li>';
        }
        if(empty($_POST['adresse']))
        {
            echo '<br><li class="champs_2" >Adresse</li>';
        }
        if(empty($_POST['email']))
        {
           echo '<br><li class="champs_2" >Email</li>';
        }
        if(empty($_POST['telephone']))
        {
            echo '<br><li class="champs_2" >Téléphone</li>';
        }
        if(empty($_POST['url']))
        {
            echo '<br><li class="champs_2" >Website url</li>';
        }
        if(empty($_POST['titre']))
        {
            echo '<br><li class="champs_2" >Titre</li>';
        }
        if(empty($_POST['message']))
        {
            echo '<br><li class="champs_2" >Message</li>';
        }
    echo  '</ul>';

// Remplacement de certains caractères spéciaux
     
}
else // si les variables $_POST du formulaire n'existent pas, le code ci-dessus ne s'exécute pas
{
     // ici, ce que tu veux éventuellement afficher
echo '<p><a class="champs_1" >Super tous les champs sont remplis! :</a></p><ul>';	
// Aucun champ n'est vide, on peut enregistrer dans la table
$bdd = "INSERT INTO `infos_tbl` (`nom`, `prenom`, `age`, `adresse`, `email`, `telephone`, `url`, `titre`, `message`, `date_post`) VALUES ( '$nom','$prenom','$age','$adresse','$email','$telephone', '$url','$titre', '$message', now() )";
if ($conn->query($bdd) === TRUE) 
{
//echo "<h2 style=' color:green;'>Vos infos on été ajoutées !</h2>";
} else {
echo "<h2 style=' color:red;'>Erreur SQL insertion données:</h2> " . $bdd . "<br>" . $conn->error;
}
}
mysqli_close($conn);
?>