problème de script qui copie deux enregistrements

Petit nouveau ! | 6 Messages

12 sept. 2005, 17:24

Bonjour,
j'ai tapé un script mais le problème est que celui copie l'enregistrement que je lui demande (formulaire) ainsi qu'un enregistement vierge....
Pouvez-vous m'aider SVP
Merci
<?php

if(isset($_POST['nom']))     	$nom=$_POST['nom'];   			else	$nom="";
if(isset($_POST['adresse']))         	$adresse=$_POST['adresse'];        		else 	$adresse="";
if(isset($_POST['code']))      	$code=$_POST['code'];    			else 	$code="";
if(isset($_POST['ville']))        	$ville=$_POST['ville'];         		else 	$ville="";
	    
	{
	
	$db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());
	
	// sélection de la base  
    mysql_select_db('toaster',$db)  or die('Erreur de selection '.mysql_error());
    
    // on écrit la requête sql
    $sql = "INSERT INTO dealers(ID, nom, adresse, code, ville) VALUES('','$nom','$adresse','$code','$ville')";
    
    // on insère les informations du formulaire dans la table
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

    mysql_close();  // on ferme la connexion
	}
?>

Mammouth du PHP | 19672 Messages

12 sept. 2005, 17:35

Tu n'as mis aucune condition à l'insertion de données vides : proposition de corrigé avec une petite optimisation en passant :
<?php
$nom     = trim((isset($_POST['nom']))     ? $_POST['nom']     : "");
$adresse = trim((isset($_POST['adresse'])) ? $_POST['adresse'] : "");
$code    = trim((isset($_POST['code']))    ? $_POST['code']    : "");
$ville   = trim((isset($_POST['ville']))   ? $_POST['ville']   : "");
if($nom != "" && $adresse != "" && $code != "" && $ville != "")
{
    $db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());

    // sélection de la base
    mysql_select_db('toaster',$db)  or die('Erreur de selection '.mysql_error());

    // on écrit la requête sql
    $sql = "INSERT INTO dealers(nom, adresse, code, ville) VALUES('". $nom ."','". $adresse ."','". $code ."','". $ville ."')";

    // on insère les informations du formulaire dans la table
    mysql_query($sql) or die('Erreur SQL !'. $sql .'<br>'. mysql_error());

    mysql_close();  // on ferme la connexion
}
else
{
    /* Aucune des variable n'a de valeur, message d'avertissement */
?>
<p>Attention, aucune donnée n'a été envoyée, enregistrement refusé.</p>    
<?php
}
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 6 Messages

12 sept. 2005, 18:03

ça marche parfaitement merci,
juste une petite question,
j'ai fait les modif du php qui se trouve au dessus de ma balise html dans ma page et je voulais savoir comment faire pour que
<p>Attention, aucune donnée n'a été envoyée, enregistrement refusé.</p>
n'apparaisse pas par défaut dans ma page?

Sinon je me demandais à quoi corrrespondait le trim que je n'ai jamais rencontré encore....

merci encore

Mammouth du PHP | 19672 Messages

12 sept. 2005, 20:30

Ok, pour le premier problème, il faut que tout ceci soir englobé dans le if() d'un test qui doit débuter la page testant si ton formulaire a été envoyé: si ton bouton submit a pour valeur d'attribu name "envoi", fais en début de script:
if(isset($_POST['envoi']))
{
    // code de récupération et d'insertion
}
else
{
    // affichage du formulaire
}
Pour la fonction trim, elle permet de supprimer les espaces à gauche et à droite des chaînes: ça évite d'enregistrer des valeurs vides si un petit malin envoie le formulaire en ayant mis que des espaces dans les zones de saisie.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: