IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

insertion et update qui ne fonctionnent pas [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 44
    Points : 31
    Points
    31
    Par défaut insertion et update qui ne fonctionnent pas
    Bonjour a tous,
    je n'arrive pas a modifier les données de ma base membres que sa soit avec un update ou un insert into.

    je suis dessus depuis 15H et j'ai bon retourné le code dans tous les sens je n'y arrive pas.

    voici le code php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    /*Affichage des données du membre*/
    if($_SESSION['login'] == true AND !isset($_GET['membre']) AND !isset($_GET['action']))
          {	
     
    /*Requete de récuparation des données du membre*/
    $donnees_membre = mysql_query("SELECT * FROM membres WHERE membre_pseudo ='".$_SESSION['login']."'");
     
    /*On regroupe les données*/
    $regroupe_donnees_membre = mysql_fetch_assoc($donnees_membre);
     
    /*On créer les variable de récupération pour que le code soit plus clair*/
    $raison_social = htmlentities(mysql_real_escape_string(trim($regroupe_donnees_membre['raison_social'])));
    $siret = htmlentities(mysql_real_escape_string(trim($regroupe_donnees_membre['siret'])));
    $nom = htmlentities(mysql_real_escape_string(trim($regroupe_donnees_membre['nom'])));
    $prenom = htmlentities(mysql_real_escape_string(trim($regroupe_donnees_membre['prenom'])));
    $telephone = htmlentities(mysql_real_escape_string(trim($regroupe_donnees_membre['telephone'])));
    $adresse = htmlentities(mysql_real_escape_string(trim($regroupe_donnees_membre['adresse'])));
    $code_postal = htmlentities(mysql_real_escape_string(trim($regroupe_donnees_membre['code_postal'])));
    $ville = htmlentities(mysql_real_escape_string(trim($regroupe_donnees_membre['ville'])));
    $pays = htmlentities(mysql_real_escape_string(trim($regroupe_donnees_membre['pays'])));
    $tva = htmlentities(mysql_real_escape_string(trim($regroupe_donnees_membre['numero_tva'])));
    $gerant = htmlentities(mysql_real_escape_string(trim($regroupe_donnees_membre['nom_gerant'])));
    $nom_societe = htmlentities(mysql_real_escape_string(trim($regroupe_donnees_membre['nom_societe'])));
     
    /*On affiche le formulaire avec les données existantes dans la BDD*/
    echo'
    	<form action="membre.php?action=membredonnees" method="post">
     
    				<label>Raison-social</label><input class="input_devis" type="text" name="raison_social" value="' . $raison_social . '"/><br />
    				<label>Siret</label><input class="input_devis" type="text" name="siret" value="' . $siret . '"/><br />
    				<label>Nom</label><input class="input_devis" type="text" name="nom" value="' . $nom . '"/><br />				
    				<label>Prenom</label><input class="input_devis" type="text" name="prenom" value="' . $prenom . '"/><br />			
    				<label>Téléphone</label><input class="input_devis" type="texte" name="telephone" value="' . $telephone . '"/><br />
    				<label>Adresse</label><input class="input_devis" type="texte" name="adresse" value="' . $adresse . '"/><br />
    				<label>Code-postal</label><input class="input_devis" type="texte" name="code_postal" value="' . $code_postal . '"/><br />
    				<label>Ville</label><input class="input_devis" type="texte" name="ville" value="' . $ville . '"/><br />
    				<label>Pays</label><input class="input_devis" type="texte" name="pays" value="' . $pays . '"/><br />
    				<label>Numero TVA</label><input class="input_devis" type="texte" name="tva" value="' . $tva . '"/><br />
    				<label>Gerant</label><input class="input_devis" type="texte" name="gerant" value="' . $gerant . '"/><br />
    				<label>Nom-société</label><input class="input_devis" type="texte" name="societe" value="' . $nom_societe . '"/><br />
    				<br /><br />
    				<div class="center"><input type="submit" value="Modifier" /></div>
     
    	</form>
    	';
    	}
     
    /*Modification des données du membre*/	
    elseif(isset($_GET['action']) AND $_GET['action'] == 'membredonnees' AND $_SESSION['login'] == true)
          {
     
    /*variable de récupération du post*/
    $raison_social = htmlentities(mysql_real_escape_string(trim($_POST['raison_social'])));
    $siret = htmlentities(mysql_real_escape_string(trim($_POST['siret'])));
    $nom = htmlentities(mysql_real_escape_string(trim($_POST['nom'])));
    $prenom = htmlentities(mysql_real_escape_string(trim($_POST['prenom'])));
    $telephone = htmlentities(mysql_real_escape_string(trim($_POST['telephone'])));
    $adresse = htmlentities(mysql_real_escape_string(trim($_POST['adresse'])));
    $code_postal = htmlentities(mysql_real_escape_string(trim($_POST['code_postal'])));
    $ville = htmlentities(mysql_real_escape_string(trim($_POST['ville'])));
    $pays = htmlentities(mysql_real_escape_string(trim($_POST['pays'])));
    $tva = htmlentities(mysql_real_escape_string(trim($_POST['tva'])));
    $gerant = htmlentities(mysql_real_escape_string(trim($_POST['gerant'])));
    $nom_societe = htmlentities(mysql_real_escape_string(trim($_POST['societe'])));
     
    /*Insertion des modifications dans la table*/      		
    $insertion = mysql_query("insert into membres values('','','','','','$raison_social','$siret','$nom','$prenom','$telephone','$adresse','$code_postal','$ville','$pays','$tva','$gerant','$nom_societe','0') WHERE membre_pseudo ='".$_SESSION['login']."' ");
     
    if($insertion)
    	{
    	echo '
    <div style="font-family : arial; font-size : 12px; border : 1px solid red; height : 30px; background : #fff0f0; margin : 20px; padding : 9px;"><b>Nous effectuons les changements</b><br /> Vous allez être redirigé d\'ici 10 sec... </div>
    <script type="text/javascript">
    window.setTimeout("location=(\'/membre.php\');",10000);</script>	
    		 ';
    	}
     
    	}
     
     
    ?>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pour les données venant de la base de donnée, il faut juste utiliser htmlentities.

    Pour les données a insérer, il ne faut pas utiliser htmlentities.

    Ensuite, enlève la WHERE dans ton INSERT, ca n'a pas de sens et spécifie le nom des champs à insérer plutot que de mettre des valeurs vides.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 44
    Points : 31
    Points
    31
    Par défaut
    j'ais modifié le code en revenant de manger en tenant compte des remarque de sabotage et changé mon insert par un update ce qui me parrait plus logique vu que c'est une mise a jour des données que je veut éffectuer.

    mais cela n'as rien changer.

    je poursuit mes essai et vous prévient si jamais je trouve l'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    /*Affichage des données du membre*/
    if($_SESSION['login'] == true AND !isset($_GET['membre']) AND !isset($_GET['action']))
          {	
     
    /*Requete de récuparation des données du membre*/
    $donnees_membre = mysql_query("SELECT * FROM membres WHERE membre_pseudo ='".$_SESSION['login']."'");
     
    /*On regroupe les données*/
    $regroupe_donnees_membre = mysql_fetch_assoc($donnees_membre);
     
    /*On créer les variable de récupération pour que le code soit plus clair*/
    $raison_social = htmlentities($regroupe_donnees_membre['raison_social']);
    $siret = htmlentities($regroupe_donnees_membre['siret']);
    $nom = htmlentities($regroupe_donnees_membre['nom']);
    $prenom = htmlentities($regroupe_donnees_membre['prenom']);
    $telephone = htmlentities($regroupe_donnees_membre['telephone']);
    $adresse = htmlentities($regroupe_donnees_membre['adresse']);
    $code_postal = htmlentities($regroupe_donnees_membre['code_postal']);
    $ville = htmlentities($regroupe_donnees_membre['ville']);
    $pays = htmlentities($regroupe_donnees_membre['pays']);
    $tva = htmlentities($regroupe_donnees_membre['numero_tva']);
    $gerant = htmlentities($regroupe_donnees_membre['nom_gerant']);
    $nom_societe = htmlentities($regroupe_donnees_membre['nom_societe']);
     
    /*On affiche le formulaire avec les données existantes dans la BDD*/
    echo'
    	<form action="membre.php?action=membredonnees" method="post">
     
    				<label>Raison-social</label><input class="input_devis" type="text" name="raison_social" value="' . $raison_social . '"/><br />
    				<label>Siret</label><input class="input_devis" type="text" name="siret" value="' . $siret . '"/><br />
    				<label>Nom</label><input class="input_devis" type="text" name="nom" value="' . $nom . '"/><br />				
    				<label>Prenom</label><input class="input_devis" type="text" name="prenom" value="' . $prenom . '"/><br />			
    				<label>Téléphone</label><input class="input_devis" type="texte" name="telephone" value="' . $telephone . '"/><br />
    				<label>Adresse</label><input class="input_devis" type="texte" name="adresse" value="' . $adresse . '"/><br />
    				<label>Code-postal</label><input class="input_devis" type="texte" name="code_postal" value="' . $code_postal . '"/><br />
    				<label>Ville</label><input class="input_devis" type="texte" name="ville" value="' . $ville . '"/><br />
    				<label>Pays</label><input class="input_devis" type="texte" name="pays" value="' . $pays . '"/><br />
    				<label>Numero TVA</label><input class="input_devis" type="texte" name="tva" value="' . $tva . '"/><br />
    				<label>Gerant</label><input class="input_devis" type="texte" name="gerant" value="' . $gerant . '"/><br />
    				<label>Nom-société</label><input class="input_devis" type="texte" name="societe" value="' . $nom_societe . '"/><br />
    				<br /><br />
    				<div class="center"><input type="submit" value="Modifier" /></div>
     
    	</form>
    	';
    	}
     
    /*Modification des données du membre*/	
    elseif(isset($_GET['action']) AND $_GET['action'] == 'membredonnees' AND $_SESSION['login'] == true)
          {
     
    /*variable de récupération du post que l'on va insérer dans la BDD*/
    $raison_social = mysql_real_escape_string(trim($_POST['raison_social']));
    $siret = mysql_real_escape_string(trim($_POST['siret']));
    $nom = mysql_real_escape_string(trim($_POST['nom']));
    $prenom = mysql_real_escape_string(trim($_POST['prenom']));
    $telephone = mysql_real_escape_string(trim($_POST['telephone']));
    $adresse = mysql_real_escape_string(trim($_POST['adresse']));
    $code_postal = mysql_real_escape_string(trim($_POST['code_postal']));
    $ville = mysql_real_escape_string(trim($_POST['ville']));
    $pays = mysql_real_escape_string(trim($_POST['pays']));
    $tva = mysql_real_escape_string(trim($_POST['tva']));
    $gerant = mysql_real_escape_string(trim($_POST['gerant']));
    $nom_societe = mysql_real_escape_string(trim($_POST['societe']));
     
    /*Insertion des modifications dans la table*/      		
    $insertion = mysql_query("UPDATE table SET raison_social='$raison_social', siret='$siret', nom='$nom', prenom='$prenom', telephone='$telephone', adresse='$adresse', code_postal='$code_postal', ville='$ville', tva='$tva', gerant='$gerant', societe='$nom_societe'  WHERE membre_pseudo ='".$_SESSION['login']."' ");
     
    if($insertion)
    	{
    	echo '
    <div style="font-family : arial; font-size : 12px; border : 1px solid red; height : 30px; background : #fff0f0; margin : 20px; padding : 9px;"><b>Nous effectuons les changements</b><br /> Vous allez être redirigé d\'ici 10 sec... </div>
    <script type="text/javascript">
    window.setTimeout("location=(\'/membre.php\');",10000);</script>	
    		 ';
    	}
     
    	}
     
     
    ?>

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux afficher mysql_error() après ta requete pour voir s'il y a une erreur.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 44
    Points : 31
    Points
    31
    Par défaut
    voila ce qu'il me retourne a la requête de l'update.

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'table SET raison_social='*****', siret='**', nom='***', prenom='****' at line 1

    les **** sont les données de la sessions du membres test que j'ai censuré.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il faut remplacer "table" par le nom de ta table.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 44
    Points : 31
    Points
    31
    Par défaut
    oui sa et mettre les bon nom des champs

    mais cela n'a pas changer rien ce fait dans la requête.
    Et le if non plus il ne redirige pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    /*Modification des données du membre*/	
    elseif(isset($_GET['action']) AND $_GET['action'] == 'membredonnees' AND $_SESSION['login'] == true)
          {
     
    /*variable de récupération du post que l'on va insérer dans la BDD*/
    $raison_social = mysql_real_escape_string(trim($_POST['raison_social']));
    $siret = mysql_real_escape_string(trim($_POST['siret']));
    $nom = mysql_real_escape_string(trim($_POST['nom']));
    $prenom = mysql_real_escape_string(trim($_POST['prenom']));
    $telephone = mysql_real_escape_string(trim($_POST['telephone']));
    $adresse = mysql_real_escape_string(trim($_POST['adresse']));
    $code_postal = mysql_real_escape_string(trim($_POST['code_postal']));
    $ville = mysql_real_escape_string(trim($_POST['ville']));
    $pays = mysql_real_escape_string(trim($_POST['pays']));
    $tva = mysql_real_escape_string(trim($_POST['tva']));
    $gerant = mysql_real_escape_string(trim($_POST['gerant']));
    $nom_societe = mysql_real_escape_string(trim($_POST['societe']));
     
    /*Insertion des modifications dans la table*/      		
    $insertion = mysql_query("UPDATE membres SET raison_social='$raison_social', siret='$siret', nom='$nom', prénom='$prenom', telephone='$telephone', adresse='$adresse', code_postal='$code_postal', ville='$ville', numero_tva='$tva', nom_gerant='$gerant', nom_societe='$nom_societe'  WHERE membre_pseudo ='".$_SESSION['login']."' ")or die(mysql_error() . $requete_sql);
     
    if($insertion)
    	{
    	echo '
    <div style="font-family : arial; font-size : 12px; border : 1px solid red; height : 30px; background : #fff0f0; margin : 20px; padding : 9px;"><b>Nous effectuons les changements</b><br /> Vous allez être redirigé d\'ici 10 sec... </div>
    <script type="text/javascript">
    window.setTimeout("location=(\'/membre.php\');",10000);</script>	
    		 ';
    	}
     
    	}

  8. #8
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE membres SET ... prénom='$prenom'
    Ce ne serait pas plutôt prenom (au lieu de prénom) ?

    Quand on patauge un peu comme ça, il est bon d'éviter d'en faire des tonnes d'un seul coup, mais y faire en 1er un code le plus simple possible, comme par exemple mettre à jour 1 seul champ, et voir.
    Si ça passe, rajouter un 2ème, et ainsi de suite.
    Ca peu paraitre long, mais si c'est le nom ou le contenu d'un champ qui cause problème on finira par tomber dessus à un moment donné.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $insertion = mysql_query("UPDATE membres SET raison_social='$raison_social' WHERE membre_pseudo ='".$_SESSION['login']."' ")or die(mysql_error() . $requete_sql);

    Il aurait été préférable d'utiliser un identifiant (genre membre_id) plutôt qu'un login pour la condition.
    Aussi, faire un rechargement de page via Javascript après un UPDATE c'est pas géantissime.
    Utilise plutôt une redirection en Php : header('Location: membre.php')
    Cependant , il sera nécessaire (et bien mieux de toute manière) de revoir un peu le déroulement de tout ceci, comme faire en tout 1er le UPDATE, avant de proposer le formulaire.

    1/ SI GET['action'] -> On récupère les données en POST + UPDATE + header()
    (tout ceci avant le moindre élément HTML ou echo)

    2/ Récupération des donnée du membre formulaire
    3/ Création du formulaire


    D'ailleurs, au lieu de transmettre le paramètre "action" (membredonnees), donc en GET, rajoute le dans le formulaire dans un champ caché, ce qui fait que tout sera en POST, c'est mieux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="action" value="membredonnees" />

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 44
    Points : 31
    Points
    31
    Par défaut
    Merci runcodephp pour tes consseil en effet en y allant progressivement je me suis rendu compte que prénom était mal récupéré dès le départ.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $prenom = mysql_real_escape_string(trim($_POST['prenom']));
    /*Au lieu de*/
    $prenom = mysql_real_escape_string(trim($_POST['prénom']));

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] INSERT et UPDATE qui ne fonctionnent pas
    Par philippef dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 09/07/2008, 12h53
  2. [MySQL] Code PHP sur des UPDATE qui ne fonctionne pas
    Par bilou95 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 08/10/2007, 11h57
  3. Requete UPDATE qui ne fonctionne pas
    Par JiB@ dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 02/03/2007, 18h06
  4. [MySQL] Requête update qui ne fonctionne pas
    Par Sylvain245 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 05/12/2005, 16h40
  5. [MySQL] UPDATE qui ne fonctionne pas
    Par philippef dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 13/09/2005, 14h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo