Problème de mise a jour de champs [Résolu]

Messages postés
458
Date d'inscription
lundi 24 août 2009
Dernière intervention
8 décembre 2018
- - Dernière réponse : msi79
Messages postés
458
Date d'inscription
lundi 24 août 2009
Dernière intervention
8 décembre 2018
- 5 avril 2018 à 00:52
Bonjour,
j'aimarais, à partir d'une table mettre a jour une table de ma base de données.
il se trouve que en local sur ma machine tout fonctionne correctement. Mais en ligne ça fonctionne pas .
voici la structure de la table.
CREATE TABLE IF NOT EXISTS `produits` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`article` varchar(150) DEFAULT NULL,
`taille` varchar(11) NOT NULL,
`pa` int(15) NOT NULL,
`pv` int(15) NOT NULL,
`ref` varchar(30) NOT NULL,
`prixmin` int(11) NOT NULL,
`prixmax` int(11) NOT NULL,
`id_rayon` int(11) NOT NULL,
`date` varchar(30) NOT NULL,
`id_pros` int(11) NOT NULL,
`date_update` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=38 ;


le champ concerné est pa.

le code javascript
<script> 
$(document).ready(function() 
{  
 $("td").click(function()  
  { 
   if( $(this).attr("contenteditable") == "true") 
   {    
    // le"id" du td doit contenir l'id de la BDD 
    // le "name" doit contenir le nom du champ à modifier 
     
                var contenu_avant = $(this).text(); 
                var id_bdd = $(this).attr("id"); 
                var champ_bdd = $(this).attr("name"); 
    //alert("avant =" + contenu_avant); 
                 
    $(this).blur(function() 
        { 
         var contenu_apres = $(this).text(); 
           //alert("contenu apres = " + contenu_apres); 
         
                                 if (contenu_avant != contenu_apres) 
                                     { 
          parametre='id='+id_bdd+'&champ='+champ_bdd+'&contenu='+contenu_apres ; 
            alert(parametre) ; 
          $.ajax({ 
            url: "pages/updatedynamique.php",  
            type: "POST",  
            data: parametre,  
            success: function(html) {  
                  alert(id_bdd); 
                  } 
           }); 
          } 
          
        }); 
     
   };     
             
  }); 
});   

   
</script> 



le code php

<?php  
//http://codes-sources.commentcamarche.net/source/100353-modification-d-un-tableau-avec-mise-a-jour-dynamique-de-la-bdd
// 14-01-2014 
// $_POST[id]   contient l'id de la base de données 
// $_POST[champ]  contient le nom du champ à modifier 
// $_POST[contenu] contient la nouvelle valeur du champ 
// la base de données s'appelle 'Agenda' et contient 1 table 'repertoire' contenant 2 champs 'nom' et 'telephone'  


  $id = ($_POST["id"]);  
  $champ=($_POST["champ"]);  
  $contenu=($_POST["contenu"]);  
  $BDD="bddrestos"; 
  $table="produits";
 
   
  // accès BDD et UPDATE 
  // le code ci-dessous est mis en commentaire, le stockage dans un fichier servira de simulation. 
   $link = mysql_connect('localhost','root','') or die('error'); 

   mysql_select_db($BDD); 
   mysql_query("SET NAMES 'utf8'");  
  //  
   $sql = "UPDATE $table SET pa = $contenu WHERE id_pros = $id "; 
   mysql_query($sql) or die(mysql_error());  
  // mysql_close($link); 
  // 
   echo "success"; 
  // fin accès à la base de données 
   
  // début de simulation -> écriture dans le fichier 'simulation.txt' 
  $trace = "id= ".  $id. " champ= ".  $champ . "  contenu= " . $contenu."\n"; 
  $monfichier = fopen("simulation.txt", "a"); 
  fputs($monfichier, $trace); 
  fclose($monfichier); 
?> 


la ligne html concernée :
<td style="background-color:#CC3; text-align:center; font-size:18px;"  contenteditable="true" id="<?= $resultat["id"]; ?>" name="pa" ><?= $resultat["pa"]; ?></td>
Afficher la suite 

Votre réponse

2 réponses

Messages postés
23588
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 décembre 2018
0
Merci
Bonjour

Sûrement le paramétrage short open tag qui n'est pas activé sur le serveur.
Remplace par
<?php echo $tavariable; ?>


msi79
Messages postés
458
Date d'inscription
lundi 24 août 2009
Dernière intervention
8 décembre 2018
-
Bonjour et bonne fête à toi jordan45.

je voit pas et ne comprends pas :

Sûrement le paramétrage short open tag qui n'est pas activé sur le serveur.
Remplace par
<?php echo $tavariable; ?>


ou je dois voir ce parametre ??
jordane45
Messages postés
23588
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 décembre 2018
-
msi79
Messages postés
458
Date d'inscription
lundi 24 août 2009
Dernière intervention
8 décembre 2018
-
je n'ai pas accès au serveur distant pour remplacer sauf si j'ai toujours rien compris
msi79
Messages postés
458
Date d'inscription
lundi 24 août 2009
Dernière intervention
8 décembre 2018
-
je sais pas quoi faire au juste . en local tout fonctionne bien mais en ligne ca marche pas .
msi79
Messages postés
458
Date d'inscription
lundi 24 août 2009
Dernière intervention
8 décembre 2018
-
Jordane45 suis vraiment bloqué et c'est urgent tu peux m'aider s'il te plait
Commenter la réponse de jordane45
Messages postés
23588
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 décembre 2018
0
Merci
Reprenons:

1 - (comme déjà dit une centaine de fois... ) .. l'extension mysql est OBSOLETE !
http://www.commentcamarche.net/faq/44117-connexion-a-une-base-avec-pdo-mysqli
Tu dois passer à PDO ou mysqli

2 - Là où tu as utiliser une syntaxe comme par exemple
 <?= $unevariable ?> 
doivent être remplacée par la forme que je t'ai donné
<?php echo $unevariable ; ?>


3 - Tu as, bien entendu (vu que je te l'ai déjà dit dans toutes tes discussions précédentes) activé la gestion des erreurs php ? Voir ici si tu ne sais plus comment faire : http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code

4 - Vu que tu fais le l'ajax ... as tu, au moins, regardé dans la CONSOLE de ton navigateur si il n'y avait pas des messages d'erreur ??? (en ayant activé sous chrome le debug des requêtes xhr, ou en utilisant la console de firefox que je trouve plus lisible )

5 - Ajoute, dans le javascript, la gestion des erreurs ajax ( le "error" )
 if (contenu_avant != contenu_apres) { 
  var parametre = {id:id_bdd,champ:champ_bdd,contenu:contenu_apres} ; 
  alert(JSON.stringify(parametre)) ; 
  $.ajax({ 
    url: "pages/updatedynamique.php",  
    type: "POST",  
    data: parametre,  
    success: function(html) { 
      console.log(html);    
      alert(id_bdd); 
    } ,
    error: function(xhr, status, error) {
      console.log('error ajax');
      console.log(error);
      var err = eval("(" + xhr.responseText + ")");
      alert(err.Message);
    }
   }); 
  } 


6 - Dans le code php, récupère PORPEMENT les variables AVANT de les utiliser (comme dans le lien donné ci-dessus).

La plus part des choses que je t'indique.... ça fait déjà 200 fois que je te les répète !!!!
Il serait temps que tu te mettes à le faire convenablement !
Sinon je vais finir par ne plus répondre à tes questions ....


.

msi79
Messages postés
458
Date d'inscription
lundi 24 août 2009
Dernière intervention
8 décembre 2018
-
Bonjour , excuse moi pour le retard, une grippe me fatigue.
En revenant sur le sujet, la console affiche :

POST pages/updatedynamique.php 404 Not Found
209ms



<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /pages/updatedynamique.php was not found on this server.</p>
<p>Additionally, a 404 Not Found
error was encountered while trying to use an ErrorDocument to handle the request.</p>
</body></html>
jordane45
Messages postés
23588
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 décembre 2018
> msi79
Messages postés
458
Date d'inscription
lundi 24 août 2009
Dernière intervention
8 décembre 2018
-
Le message est clair... Il ne trouve pas le fichier...
msi79
Messages postés
458
Date d'inscription
lundi 24 août 2009
Dernière intervention
8 décembre 2018
-
Voici le nouveau code :
<script> 
$(document).ready(function() 
{  
 $("td").click(function()  
  { 
   if( $(this).attr("contenteditable") == "true") 
   {    
    // le"id" du td doit contenir l'id de la BDD 
    // le "name" doit contenir le nom du champ à modifier 
     
                var contenu_avant = $(this).text(); 
                var id_bdd = $(this).attr("id"); 
                var champ_bdd = $(this).attr("name"); 
    //alert("avant =" + contenu_avant); 
                 
    $(this).blur(function() 
        { 
         var contenu_apres = $(this).text(); 
           //alert("contenu apres = " + contenu_apres); 
         
        if (contenu_avant != contenu_apres) { 
		  var parametre = {id:id_bdd,champ:champ_bdd,contenu:contenu_apres} ; 
		  alert(JSON.stringify(parametre)) ; 
		  $.ajax({ 
			url: "pages/updatedynamique.php",  
			type: "POST",  
			data: parametre,  
			success: function(html) { 
			  console.log(html);    
			  alert(id_bdd); 
			} ,
			error: function(xhr, status, error) {
			  console.log('error ajax');
			  console.log(error);
			  var err = eval("(" + xhr.responseText + ")");
			  alert(err.Message);
			}
		   }); 
		  } 
          
        }); 
     
   };     
             
  }); 
});   

   
</script> 



le PHP :
<?php  
//http://codes-sources.commentcamarche.net/source/100353-modification-d-un-tableau-avec-mise-a-jour-dynamique-de-la-bdd
// 14-01-2014 
// $_POST[id]   contient l'id de la base de données 
// $_POST[champ]  contient le nom du champ à modifier 
// $_POST[contenu] contient la nouvelle valeur du champ 
// la base de données s'appelle 'Agenda' et contient 1 table 'repertoire' contenant 2 champs 'nom' et 'telephone'  
/*
  $id = ($_POST["id"]);  
  $champ=($_POST["champ"]);  
  $contenu=($_POST["contenu"]);  
  $BDD="msi_ivomed"; 
  $table="produits"; 
*/ 
  include('../functions/bdd.php');
  $id = ($_POST["id"]);  
  $champ=($_POST["champ"]);  
  $contenu=($_POST["contenu"]);  
  $table="produits";
 
   try {
    $conn = new PDO("mysql:host=$serveur;dbname=$base", $admin, $mdp);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql = "UPDATE $table SET $champ = $contenu WHERE id_pros = $id "; 

    // Prepare statement
    $stmt = $conn->prepare($sql);

    // execute the query
    $stmt->execute();

    // echo a message to say the UPDATE succeeded
    echo $stmt->rowCount() . " records UPDATED successfully";
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }
  // mysql_close($link); 
  // 
   echo "success"; 
  // fin accès à la base de données 
   
  // début de simulation -> écriture dans le fichier 'simulation.txt' 
  $trace = "id= ".  $id. " champ= ".  $champ . "  contenu= " . $contenu."\n"; 
  $monfichier = fopen("simulation.txt", "a"); 
  fputs($monfichier, $trace); 
  fclose($monfichier); 
?> 
msi79
Messages postés
458
Date d'inscription
lundi 24 août 2009
Dernière intervention
8 décembre 2018
-
Probleme reglé .
il fallait:
    $sql = "UPDATE $table SET $champ = $contenu WHERE id = $id "; 

au lieu de
    $sql = "UPDATE $table SET $champ = $contenu WHERE id_pros = $id "; 



Merci jordane45
Commenter la réponse de jordane45

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.