Problème de mise a jour de champs

Résolu
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 - 1 avril 2018 à 12:08
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 - 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>

2 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
1 avril 2018 à 12:47
Bonjour

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


0
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
1 avril 2018 à 13:07
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 ??
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
1 avril 2018 à 13:24
0
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
1 avril 2018 à 13:31
je n'ai pas accès au serveur distant pour remplacer sauf si j'ai toujours rien compris
0
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
1 avril 2018 à 14:02
je sais pas quoi faire au juste . en local tout fonctionne bien mais en ligne ca marche pas .
0
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
1 avril 2018 à 14:52
Jordane45 suis vraiment bloqué et c'est urgent tu peux m'aider s'il te plait
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
1 avril 2018 à 15:31
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 ....


.

0
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
4 avril 2018 à 09:19
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>
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344 > msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023
4 avril 2018 à 20:49
Le message est clair... Il ne trouve pas le fichier...
0
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
4 avril 2018 à 09:25
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); 
?> 
0
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
5 avril 2018 à 00:52
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
0
Rejoignez-nous