Page 1 sur 1

Modification Formulaire BDD

Posté : 20 mai 2011, 18:25
par TRUNCKS
Bonjour à vous,

Me revoilà avec ma BDD... lol

J'ai un tableau qui liste des clients, lorsque l'on clique sur le bouton modifier sur l'un des clients, on arrive sur le formulaire de modification.
Ce dernier contient bien déjà les champs demandés ( récupération de l'ID dans l'url )

Mon soucis, c'est que lorsque je clique sur mon bouton valider, pour modifier un client, j'ai une erreur d'index non défini:

Code : Tout sélectionner

Notice: Undefined variable: requete in C:\wamp\www\modifier.php on line 84
J'ai fais la modif et l'url sur deux feuilles diffèrentes avant de les réunir, et du coup c'est le souk.
Pouvez vous m'aider à y voir plus clair, voici la page de modification:

<?php
 
require("conf.php");
 
$conn = mysql_connect($sql_serveur, $sql_user, $sql_passwd) or trigger_error(mysql_error(),E_USER_ERROR);
 
mysql_query("SET CHARACTER SET 'utf8';")or die(mysql_error()); 
 
mysql_select_db($sql_bdd, $conn); 

if(isset($_GET["ID_contact"])){

//récupération de la variable d'URL,
//qui va nous permettre de savoir quel enregistrement modifier
$id  = $_GET["ID_contact"] ;
 
//requête SQL:
$sql = "SELECT *
        FROM contact
	    WHERE ID_contact = ".$id;
 
//exécution de la requête:
$requete = mysql_query($sql);

}

 //affichage des données:
if($result = mysql_fetch_array($requete)){
 
 
if(isset($_POST['action'])){
 
 
// Récupération des variables nécessaires	
$numero_client = mysql_real_escape_string($_POST['numeroclient']);
$societe = mysql_real_escape_string($_POST['societe']);
$nom = mysql_real_escape_string($_POST['nom']);
$adresse = mysql_real_escape_string($_POST['adresse']);
$code_postal = mysql_real_escape_string($_POST['codepostal']);
$ville = mysql_real_escape_string($_POST['ville']);
$telfixe = mysql_real_escape_string($_POST['telfixe']);
$telportable = mysql_real_escape_string($_POST['telportable']);
$fax = mysql_real_escape_string($_POST['fax']);
$mail = mysql_real_escape_string($_POST['mail']);
$remarques = mysql_real_escape_string($_POST['remarques']);
 
 //création de la requête SQL:
$sql2 = "UPDATE contact
        SET numeroclient = '$numero_client', 
	    societe = '$societe',
		nom  = '$nom',
		adresse  = '$adresse',
		codepostal = '$code_postal'
		ville = '$ville'
		telfixe = '$telfixe'
		telportable = '$telportable'
		fax = '$fax'
		mail = '$mail'
		remarques = '$remarques'
        WHERE ID_contact = '$id'";
 
//exécution de la requête SQL:
$requete2 = mysql_query($sql2) or die( mysql_error() ) ;
 
echo '<p style="color:#ff0000;font-weight:bold;">Le client a bien été modifié</p>'."<br><br><a href=\"adduser.php\">Ajouter un nouveau client</a>"."<br><br><a href=\"index.php\">Revenir à l'accueil</a>";
 
}
 
else{
	
 
?>
  <h1>Modifier un Client</h1>
  <form action="modifier.php" method="POST">
    <input type="hidden" name="id" value="<?php echo($id) ;?>" />
    Numéro de Client:<br />
    <input type="text" name="numeroclient" value="<?php echo $result['numeroclient'];?>"/>
    <br />
    Société:<br />
    <input type="text" name="societe" value="<?php echo $result['societe'];?>"/>
    <br />
    Nom:<br />
    <input type="text" name="nom" value="<?php echo $result['nom'];?>"/>
    <br />
    Adresse:<br>
    <textarea name="adresse" cols="30" rows="3"><?php echo $result['adresse'];?></textarea>
    <br />
    Code Postal:<br />
    <input type="text" name="codepostal" value="<?php echo $result['codepostal'];?>"/>
    <br />
    Ville:<br />
    <input type="text" name="ville"value="<?php echo $result['ville'];?>"/>
    <br />
    Téléphone Fixe:<br />
    <input type="text" name="telfixe" value="<?php echo $result['telfixe'];?>"/>
    <br />
    Téléphone Portable:<br />
    <input type="text" name="telportable" value="<?php echo $result['telportable'];?>"/>
    <br />
    Fax:<br />
    <input type="text" name="fax" value="<?php echo $result['fax'];?>"/>
    <br />
    Adresse Mail:<br />
    <input type="text" name="mail" value="<?php echo $result['mail'];?>"/>
    <br />
   Remarques:<br>
    <textarea name="remarques" cols="50" rows="5"><?php echo $result['remarques'];?></textarea>
    <br />
    <br />
    <br />
    <input type="submit" name="valider" value="Envoyer" />
  </form>
  <br />
  <font face="Verdana" size="2"><a href="index.php">Revenir aux clients</a></font>
  
<?php

}

}

?>

</center>

</font>

</body>

</html>

<?php

mysql_free_result($clients);

?>

Re: Modification Formulaire BDD

Posté : 20 mai 2011, 19:44
par ouckileou
Elle est ou la ligne 84 ?

merci d'utiliser les balises
 quand tu postes du code. Identer le code pour qu'on s'y retrouve c'est bien aussi. Du coup je ne l'ai pas regarde.

Re: Modification Formulaire BDD

Posté : 20 mai 2011, 20:14
par TRUNCKS
La ligne 84 est celle çi:

//affichage des données:
if($result = mysql_fetch_array($requete)){

Merci quand même

Re: Modification Formulaire BDD

Posté : 20 mai 2011, 20:45
par ouckileou
Je ne comprends pas ce qu'est cense faire une operation d'affectation de variable dans un if(), est-ce que tu es sur que c'est ce que tu veux faire sur cette ligne ?

Re: Modification Formulaire BDD

Posté : 20 mai 2011, 20:46
par TRUNCKS
Comme je l'ai dis, je me suis un peu emmêle les pinceaux, je veux juste que mon bouton valider update la base.

Re: Modification Formulaire BDD

Posté : 20 mai 2011, 21:00
par ouckileou
Comme je l'ai dis, je me suis un peu emmêle les pinceaux, je veux juste que mon bouton valider update la base.
Oui ok ca j'ai bien compris, tu veux faire un truc, ca ne fonctionne pas, du coup tu demandes de l'aide. Et la ce qu'on est en train de faire c'est debugguer ensemble. Donc je t'indique un truc qui ne me parait pas bon sur la ligne en erreur, pour que tu corriges. A quoi sert ce if ? Tu dois savoir non ? S'il ne sert a rien vire le (just le if(), pas le mysql_fetch_array()). Je pense que tu veux juste recuperer le resultat de ta requete dans un tableau via mysql_fetch_array donc le if() ne sert pas,

Pareil j'ai fait remarquer que le code est mal indente et que ce n'est pas lisible, tu devrais le faire meme pour toi ca serait utile. Si tu ne sais pas ce que c'est : http://fr.wikipedia.org/wiki/Indentation

En tout cas sur ce forum tu vas pouvoir obtenir de l'aide pour corriger ton code mais on ne le corrigera pas a ta place en te filant le pave que tu pourras copier/coller.

Re: Modification Formulaire BDD

Posté : 20 mai 2011, 21:08
par TRUNCKS
Merci bien, bonne soirée ;)

Re: Modification Formulaire BDD

Posté : 20 mai 2011, 21:12
par ouckileou
C'est tout ? Sujet clos ? :roll:

Re: Modification Formulaire BDD

Posté : 20 mai 2011, 21:16
par TRUNCKS
Ben je vais quand même essayer de faire ce que tu me dis avant de reposter lol

Mais je remercie quand même pour tes conseils, on peut quand même être aimable dans ce monde de brutes !

;)

Re: Modification Formulaire BDD

Posté : 20 mai 2011, 21:21
par ouckileou
Ah ok je n'etais pas sur d'avoir compris

ok cool dis nous ce qui se passe :)

Re: Modification Formulaire BDD

Posté : 21 mai 2011, 07:15
par TRUNCKS
Re-bonjour à toi !

J'ai un peu fais le ménage, je vais essayer de récapituler, j'ai deux parties dans ce code:
Celle ci qui récupère l'ID de la page précédente afin d'afficher dans les champs du formulaire, le contact sélectionne:
if(isset($_GET["ID_contact"])){

//récupération de la variable d'URL,
//qui va nous permettre de savoir quel enregistrement modifier
$id  = $_GET["ID_contact"] ;
 
//requête SQL:
$sql = "SELECT *
           FROM contact
	   WHERE ID_contact = ".$id;
 
//exécution de la requête:
$requete = mysql_query($sql) or die( mysql_error());

}

 //affichage des données:
$result = mysql_fetch_array($requete);

Et celui ci, qui valide le submit et update la base ( c'est celui là qui ne fonctionne pas ):

if(isset($_POST['action'])){
 
 
       // Récupération des variables nécessaires	
       $numero_client = mysql_real_escape_string($_POST['numeroclient']);
       $societe = mysql_real_escape_string($_POST['societe']);
       $nom = mysql_real_escape_string($_POST['nom']);
       $adresse = mysql_real_escape_string($_POST['adresse']);
       $code_postal = mysql_real_escape_string($_POST['codepostal']);
       $ville = mysql_real_escape_string($_POST['ville']);
       $telfixe = mysql_real_escape_string($_POST['telfixe']);
       $telportable = mysql_real_escape_string($_POST['telportable']);
       $fax = mysql_real_escape_string($_POST['fax']);
       $mail = mysql_real_escape_string($_POST['mail']);
       $remarques = mysql_real_escape_string($_POST['remarques']);
 
 //création de la requête SQL:
$sql2 = "UPDATE contact
            SET numeroclient = '$numero_client', 
	    societe = '$societe',
	    nom  = '$nom',
	    adresse  = '$adresse',
	    codepostal = '$code_postal'
	    ville = '$ville'
	    telfixe = '$telfixe'
	    telportable = '$telportable'
	    fax = '$fax'
	    mail = '$mail'
	    remarques = '$remarques'
            WHERE ID_contact = '$id'";
 
//exécution de la requête SQL:
$requete2 = mysql_query($sql2) or die( mysql_error() ) ;
 
echo '<p style="color:#ff0000;font-weight:bold;">Le client a bien été modifié</p>'."<br><br><a href=\"adduser.php\">Ajouter un nouveau client</a>"."<br><br><a href=\"index.php\">Revenir à l'accueil</a>";
 
}
 
else{

FORMULAIRE

J'ai viré le If qui ne servait à rien, mais apparemment, l'erreur vient du fait qu'il recommence tout le traitement lors du submit, et du coup, il exécute la première partie aussi, et ne trouve donc pas l'ID qui correspond a $requete.
Après je ne vois pas véritablement :(

Re: Modification Formulaire BDD

Posté : 21 mai 2011, 09:33
par Ryle
Il y a une petite incohérence...

D'après ton code, ton formulaire est envoyé en post, mais tu ne récupères l'id de ta fiche que s'il est envoyé en get ... :?

Re: Modification Formulaire BDD

Posté : 21 mai 2011, 11:39
par TRUNCKS
Merci à toi.

Mais ce n'est toujours pas cela le soucis, il me dit que la variable requete n'est pas définie quand je veux update, mais cette dernière ne devrait pas servir lors de la modification.

En effet, c'est $requete2 qui fait l'update.

J'ai du mal organiser ma structure et c'est cela que je cherche à corriger.

Re: Modification Formulaire BDD

Posté : 21 mai 2011, 17:13
par TRUNCKS
Problème résolu, il manquait tout simplement des virgules dans la requête:

   SET numeroclient = '$numero_client', 
            societe = '$societe',
                nom  = '$nom',
                adresse  = '$adresse',
                codepostal = '$code_postal'
                ville = '$ville'
                telfixe = '$telfixe'
                telportable = '$telportable'
                fax = '$fax'
                mail = '$mail'
                remarques = '$remarques'
        WHERE ID_contact = '$id'";

Merci pour votre aide !