Champs $_POST ne rien envoyez en base

Fermé
alexandra - Modifié par alexandra le 8/06/2015 à 13:26
 alexandra - 8 juin 2015 à 14:48
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
8 juin 2015 à 13:28
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
Auriez-vous un exemple s'il vous plait ?
0
Utilisateur anonyme
8 juin 2015 à 13:59
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 mercredi 23 octobre 2013 Statut Membre Dernière intervention 28 avril 2016 58
8 juin 2015 à 14:14
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
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 mercredi 23 octobre 2013 Statut Membre Dernière intervention 28 avril 2016 58
8 juin 2015 à 14:23
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 mercredi 23 octobre 2013 Statut Membre Dernière intervention 28 avril 2016
8 juin 2015 à 14:48
ok je voie merci! petit question supplémentaire peut être bête !
Une redirection de type header est-ce possible ?
0