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

Signaler
Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
-
Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
-
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>

2 réponses

Messages postés
32385
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 mai 2021
347
Bonjour

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


Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
1
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 ??
Messages postés
32385
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 mai 2021
347
Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
1
je n'ai pas accès au serveur distant pour remplacer sauf si j'ai toujours rien compris
Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
1
je sais pas quoi faire au juste . en local tout fonctionne bien mais en ligne ca marche pas .
Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
1
Jordane45 suis vraiment bloqué et c'est urgent tu peux m'aider s'il te plait
Messages postés
32385
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 mai 2021
347
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 ....


.

Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
1
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>
Messages postés
32385
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 mai 2021
347 >
Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021

Le message est clair... Il ne trouve pas le fichier...
Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
1
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); 
?> 
Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
1
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