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

jQuery Discussion :

update/insert sans retour "success" [AJAX]


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Décembre 2011
    Messages : 18
    Par défaut update/insert sans retour "success"
    Bonjour à tous,
    Cela fait quelques heures que je tourne en rond avec un problème qui doit être très simple à régler - j'imagine - mais dont je n'arrive pas à trouver la solution...

    le problème est simple, j'ai un script qui s'occupe soit de mettre à jour les champs d'une table mysql, soit d'y insérer de nouvelles données. Lorsque l'update ou l'insert sont ok, je renvoie la valeur true (ou false si erreur).

    Mon problème c'est que l'update renvoie bien ma valeur "true" alors que l'insertion non...pourtant l'insertion en base se fait bien, mais aucun retour "true"...rien !

    donc en gros l'update et l'insertion fonctionnent, mais seul l'update renvoie la valeur "true", et je ne comprend pas pourquoi.

    Bon un peu de code à montrer :
    Code php : 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
    session_start();
    	$_userID = $_SESSION['ID'];
    	$_userEmail = $_SESSION['email'];
     
     
    if($_POST) {
    	$_idFavoris = $_POST['idFavoris'];
    	$_idFamille = $_POST['idFamille'];
    	$_nomFamille = utf8_decode($_POST['nomFamille']);
    	$_idType = $_POST['idType'];
    	$_nomType = utf8_decode($_POST['nomType']);
    	$_idActivite = $_POST['idActivite'];
    	$_nomActivite = utf8_decode($_POST['nomActivite']);
    	$_idNiveau = $_POST['idNiveau'];
    	$_nomNiveau = utf8_decode($_POST['nomNiveau']);
    	$_idFonction = $_POST['idFonction'];
    	$_nomFonction = utf8_decode($_POST['nomFonction']);
     
     
     
     
    			$Result = mysql_query("UPDATE favoris SET typeID='$_idType', typeNom='$_nomType', activiteID='$_idActivite', activiteNom='$_nomActivite', niveauID='$_idNiveau', niveauNom='$_nomNiveau', fonctionID='$_idFonction', fonctionNom='$_nomFonction' WHERE ID='$_idFavoris' ") or die(mysql_error());		 
     
    			if (mysql_affected_rows()==0) {
    				$Result = mysql_query("INSERT favoris SET userID='$_userID', familleID='$_idFamille', familleNom='$_nomFamille', typeID='$_idType', typeNom='$_nomType', activiteID='$_idActivite', activiteNom='$_nomActivite', niveauID='$_idNiveau', niveauNom='$_nomNiveau', fonctionID='$_idFonction', fonctionNom='$_nomFonction' ") or die(mysql_error());
    			}
     
     
    			if ($Result) {	
    				$data = array("insert" => true);
    				echo json_encode($data);	
    			} else {
    				$data = array("insert" => false);
    				echo json_encode($data);			
    			}


    Voilà, je ne comprend pas pourquoi...une aide ??

    Merci d'avance
    Olivier

  2. #2
    Membre éclairé Avatar de kanzarih
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2002
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2002
    Messages : 327
    Par défaut
    Bonsoir,

    Essayez avec ces changements :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //$Result = mysql_query("UPDATE favoris SET typeID='$_idType', typeNom='$_nomType', activiteID='$_idActivite', activiteNom='$_nomActivite', niveauID='$_idNiveau', niveauNom='$_nomNiveau', fonctionID='$_idFonction', fonctionNom='$_nomFonction' WHERE ID='$_idFavoris' ") or die(mysql_error());		 
     
    if (mysql_affected_rows()==0) {
     $Result = mysql_query("INSERT favoris SET userID='$_userID', familleID='$_idFamille', familleNom='$_nomFamille', typeID='$_idType', typeNom='$_nomType', activiteID='$_idActivite', activiteNom='$_nomActivite', niveauID='$_idNiveau', niveauNom='$_nomNiveau', fonctionID='$_idFonction', fonctionNom='$_nomFonction' ") or die(mysql_error());
    }else{
    $Result = mysql_query("UPDATE favoris SET typeID='$_idType', typeNom='$_nomType', activiteID='$_idActivite', activiteNom='$_nomActivite', niveauID='$_idNiveau', niveauNom='$_nomNiveau', fonctionID='$_idFonction', fonctionNom='$_nomFonction' WHERE ID='$_idFavoris' ") or die(mysql_error());	
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Décembre 2011
    Messages : 18
    Par défaut
    Merci kanzarih pour ta réponse.

    En fait je crois que mon problème vient de json car si j'enlève dataType: 'json' de mon ajax, je récupère bien mon true...MAIS j'ai également besoin en retour de récupérer l'id de la dernière insertion, mais je n'y arrive pas. J'ai pourtant un script similaire qui fonctionne sur le même site mais rien à faire....

    Je reprend un peu plus en détail, peut être qu'un détail vous sautera au yeux.

    Donc je récupère certaines valeurs que je souhaite insérer ou mettre à jour dans ma bd, via ajax.

    Côté ajax on a :
    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
    			//insertion favoris base de données
     
    if($('#colChoix1_'+idFamille+' #liType'+idFamille+' #favoris_id').val() != '') {
    	idFavoris = $('#colChoix1_'+idFamille+' #liType'+idFamille+' #favoris_id').val();
     
    dataString = 'idFavoris='+idFavoris+'userID='+userID+'&idFamille='+idFamille+'&nomFamille='+nomFamille+'&idType='+idType+'&nomType='+nomType+'&idActivite='+idActivite+'&nomActivite='+nomActivite+'&idNiveau='+idNiveau+'&nomNiveau='+nomNiveau+'&idFonction='+idFonction+'&nomFonction='+nomFonction;					
    } else {
    dataString = 'userID='+userID+'&idFamille='+idFamille+'&nomFamille='+nomFamille+'&idType='+idType+'&nomType='+nomType+'&idActivite='+idActivite+'&nomActivite='+nomActivite+'&idNiveau='+idNiveau+'&nomNiveau='+nomNiveau+'&idFonction='+idFonction+'&nomFonction='+nomFonction;
    }
     
     
    					$.ajax({     
    					type: "POST",     
    					url: "php/insertfavoris.php",
    					data: dataString,     
    						success: function(data){	
     
    							if(data == "error") {	
    							}							
     
     
     
    							if(data.insertSuccess = true)  { 
    								// tell user that everything is OK
    								console.log(data.currentFavorisID);								
    							}
     
    						}      
    					});
    ici je cherche donc à savoir si insertSuccess = true, et si oui pouvoir récupérer la valeur de data.currentFavorisID qui correspond à l'id du dernier insert sql.

    et donc insertFavoris.php :
    Code php : 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
    session_start();
    	$_userID = $_SESSION['ID'];
    	$_userEmail = $_SESSION['email'];
     
     
    if($_POST) {
    	$_idFavoris = $_POST['idFavoris'];
    	$_idFamille = $_POST['idFamille'];
    	$_nomFamille = utf8_decode($_POST['nomFamille']);
    	$_idType = $_POST['idType'];
    	$_nomType = utf8_decode($_POST['nomType']);
    	$_idActivite = $_POST['idActivite'];
    	$_nomActivite = utf8_decode($_POST['nomActivite']);
    	$_idNiveau = $_POST['idNiveau'];
    	$_nomNiveau = utf8_decode($_POST['nomNiveau']);
    	$_idFonction = $_POST['idFonction'];
    	$_nomFonction = utf8_decode($_POST['nomFonction']);
     
     
     
     
    			$Result = mysql_query("UPDATE favoris SET typeID='$_idType', typeNom='$_nomType', activiteID='$_idActivite', activiteNom='$_nomActivite', niveauID='$_idNiveau', niveauNom='$_nomNiveau', fonctionID='$_idFonction', fonctionNom='$_nomFonction' WHERE ID='$_idFavoris' ") or die(mysql_error());		 
     
    			if (mysql_affected_rows()==0) {
    				$Result = mysql_query("INSERT favoris SET userID='$_userID', familleID='$_idFamille', familleNom='$_nomFamille', typeID='$_idType', typeNom='$_nomType', activiteID='$_idActivite', activiteNom='$_nomActivite', niveauID='$_idNiveau', niveauNom='$_nomNiveau', fonctionID='$_idFonction', fonctionNom='$_nomFonction' ") or die(mysql_error());
     
    				//$selectIdFavoris = mysql_query("SELECT ID FROM favoris ") or die(mysql_error());	
    				$currentFavorisID = LAST_INSERT_ID();	
    			}
     
    				if ($Result) {	
    					$data = array("currentFavorisID" => $currentFavorisID, "insertSuccess" => true);
    					echo json_encode($data);	
    				} else {
    					$data = "error";
    					echo json_encode($data);		
    				}
     
     
    }

    ici, soit j'ai déjà l'ID et j'update, soit je ne l'ai pas et j'insère dans la bd et je récupère l'id de cette insertion via LAST_INSERT_ID().

    Et voilà où j'en suis :
    en l'état l'insertion ou l'update fonctionne bien, et les 2 me retournent un insertSuccess = true, par contre je n'arrive pas à récupérer la valeur de la variable chargée de contenir l'id de l'insertion ( $currentFavorisID).

    lors de ma réponse ajax : console.log(data.currentFavorisID); retourne undefined...
    Et je n'arrive pas à récupérer cette valeur.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Décembre 2011
    Messages : 18
    Par défaut
    Bon j'ai presque tout réglé, sauf une chose, la récupération de l'id du dernier enregistrement inséré, cela me retourne l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Call to undefined function LAST_INSERT_ID()...
    une idée ?

    ma requête :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		$Result = mysql_query("INSERT favoris SET userID='$_userID', familleID='$_idFamille', familleNom='$_nomFamille', typeID='$_idType', typeNom='$_nomType', activiteID='$_idActivite', activiteNom='$_nomActivite', niveauID='$_idNiveau', niveauNom='$_nomNiveau', fonctionID='$_idFonction', fonctionNom='$_nomFonction' ") or die(mysql_error());
     
    		$currentFavorisID = LAST_INSERT_ID();


    /////////////////////////////////////////////////////////////////
    Edit :
    avec mysql_insert_id() ça va mieux !

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

Discussions similaires

  1. insertion d'élément db avec quotes
    Par hyipicai dans le forum Windows Forms
    Réponses: 7
    Dernier message: 19/10/2007, 07h49
  2. Select et insert avec des caracteres speciaux (quote ')
    Par Paco75 dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/10/2006, 14h59

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