Champs $_POST ne rien envoyez en base

alexandra -  
 alexandra -
Bonjour,

Je voudrais savoir s'il serait possible de ne rien envoyer en BDD, si auncun champs n'est remplie et savoir la procédure pour y arriver.

<?php
//connection au serveur
require_once  'info.php';
 
//récupération des valeurs des champs:
$annee= mysql_real_escape_string($_POST["annee"]);
$info= mysql_real_escape_string($_POST["info"]);
$titre= mysql_real_escape_string($_POST["titre"]);
$class= mysql_real_escape_string($_POST["class"]);
$auteur= mysql_real_escape_string($_POST["auteur"]);
 
//création de la requête SQL:
$ql="INSERT  INTO livre (annee, info, titre, class, auteur) VALUES ('$annee', '$info', '$titre', '$class', '$auteur') " ;
 
//exécution de la requête SQL:
$requete = mysql_query($sq, $cx) or die( mysql_error() ) ;
 
//affichage des résultats, pour savoir si l'insertion a marchée:
if($requete)
{
echo '';
}
else
{
echo 'L\'insertion à échouée';
}
?>

2 réponses

  1. Utilisateur anonyme
     
    Il suffit de faire une condition du genre if(isset($_POST))

    Et dans la condition tu y met ton script qui envois à la BDD.
    0
    1. alexandra
       
      Auriez-vous un exemple s'il vous plait ?
      0
  2. CptRomaiin Messages postés 334 Statut Membre 58
     
    Salut,

    mysql_query est obsolète et va prochainement être supprimé de PHP, il ne faut donc plus l'utiliser. Je te suggère donc d'utiliser PDO. Si je comprend bien, ce que tu veux faire c'est ne pas insérer les données si au moins un des champs du formulaire est vide.

    Voici un code qui fait ce que tu veux (si j'ai bien compris ^^) avec PDO :

    if ((isset($_POST["annee"])) && (isset($_POST["info"])) && (isset($_POST["titre"])) && (isset($_POST["class"])) && (isset($_POST["auteur"]))) {
    
    	if (($_POST["annee"]) != "") && ($_POST["info"]) != "") && ($_POST["titre"]) != "") && ($_POST["class"]) != "") && ($_POST["auteur"]) != "")) {
    		try
    		{
    			$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'user', 'password');
    		}
    		catch(Exception $e)
    		{
    			die('Erreur : '.$e->getMessage());
    		}
    
    		$req = $bdd->prepare("INSERT INTO livre (annee, info, titre, class, auteur) VALUES (:annee, :info, :titre, :class, :auteur)");
    
    		$req->execute(array(
    			'annee' => $_POST["annee"],
    			'info' => $_POST["info"]),
    			'titre' => $_POST["titre"]),
    			'class' => $_POST["class"]),
    			'auteur' => $_POST["auteur"]),
    		));
    	}
    }
    0
    1. alexandra
       
      oui c'est ça si un des champs du formulaire est vide rien est inséré dans la base de donnée.

      alors petit point important il y aura forcément des auteurs qui aurons des noms avec certain caractère spéciaux donc je voudrais savoir si mysql_real_escape_string est toujours valide.
      0
    2. CptRomaiin Messages postés 334 Statut Membre 58
       
      Grâce à PDO il n'y a plus besoin d'échapper les variables si on utilise correctement les requêtes préparées comme dans cette exemple. C'est PDO qui s'en charge ;)
      0
      1. alexandra > CptRomaiin Messages postés 334 Statut Membre
         
        ok je voie merci! petit question supplémentaire peut être bête !
        Une redirection de type header est-ce possible ?
        0