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

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
alexandra
 
Auriez-vous un exemple s'il vous plait ?
0
Utilisateur anonyme
 
https://www.grafikart.fr/tutoriels/formulaire-php-21

C'est pour un formulaire de contact, mais les vérifications sont expliquées
0
CptRomaiin Messages postés 315 Date d'inscription   Statut Membre Dernière intervention   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
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
CptRomaiin Messages postés 315 Date d'inscription   Statut Membre Dernière intervention   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
alexandra > CptRomaiin Messages postés 315 Date d'inscription   Statut Membre Dernière intervention  
 
ok je voie merci! petit question supplémentaire peut être bête !
Une redirection de type header est-ce possible ?
0