msi79
Messages postés509Date d'inscriptionlundi 24 août 2009StatutMembreDernière intervention 2 mai 2023
-
1 avril 2018 à 12:08
msi79
Messages postés509Date d'inscriptionlundi 24 août 2009StatutMembreDerniè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);
?>
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" )
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és509Date d'inscriptionlundi 24 août 2009StatutMembreDernière intervention 2 mai 20231 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>
jordane45
Messages postés37726Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention27 septembre 2023342
>
msi79
Messages postés509Date d'inscriptionlundi 24 août 2009StatutMembreDernière intervention 2 mai 2023 4 avril 2018 à 20:49
Le message est clair... Il ne trouve pas le fichier...
msi79
Messages postés509Date d'inscriptionlundi 24 août 2009StatutMembreDernière intervention 2 mai 20231 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);
?>
msi79
Messages postés509Date d'inscriptionlundi 24 août 2009StatutMembreDernière intervention 2 mai 20231 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 ";
1 avril 2018 à 13:07
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
ou je dois voir ce parametre ??
1 avril 2018 à 13:24
1 avril 2018 à 13:31
1 avril 2018 à 14:02
1 avril 2018 à 14:52