Page 1 sur 3

Probleme de modification

Posté : 31 oct. 2010, 11:07
par yllan
Bonjour
Toute aide possible serait la bien venue : ))))

voila mon probleme :

j'ai un admin sur mon site et je peux ajouter et supprimer mes entrees en fonction de leurs id

mais pour la modification nada, rien ne se passe.

j'utilise le meme code que sur un autre site que j avais fait et rien n'y fait, il ne me modifi absolument rien

si quelqu un a une idee du pourquoi du comment... :))))))))))0

Merci

Re: Probleme de modification

Posté : 31 oct. 2010, 15:17
par AB
Fait afficher les messages d'erreurs pour mieux comprendre la source du pb.
Au début de ton script mets la ligne
error_reporting(E_ALL);

Re: Probleme de modification

Posté : 31 oct. 2010, 16:26
par yllan
ben justement rien

j'ai deja mis le rapport d'erreur, et il ne se passe rien...

comme si tout etait normal dans le script mais il ne fait aucune modification :(

voici le script, si tu peux m aider ( peut etre que j ai completement rate quelque chose ) :
<?php
error_reporting(E_ALL | E_STRICT);
if(isset($_POST["Modifier"]))
{
try
			{
				$bdd = new PDO('mysql:host=localhost;dbname=SITE', 'ROOT', 'PASS');
			}
			catch(Exception $e)
			{
	        die('Erreur : '.$e->getMessage());
			}
 			$id=$_POST['id'];
			$categorie=$_POST['categorie'];
            $sscategorie=$_POST['sscategorie'];
            $accueil=$_POST['accueil'];
            $focus=$_POST['focus'];
            $nom=$_POST['nom'];
            $ref=$_POST['ref'];
            $intro=$_POST['intro'];
            $desc=$_POST['desc'];
            $prix=$_POST['prix'];
            $dossier=$_POST['dossier'];
			$photo01 = $_POST['photo01'];
			$photo02 = $_POST['photo02'];
			$photo03 = $_POST['photo03'];
			$photo04 = $_POST['photo04'];


$bdd->exec("UPDATE produits SET
		categorie = '$categorie', sscategorie = '$sscategorie', accueil = '$accueil', focus = '$focus', nom = '$nom', ref = '$ref', intro = '$intro',
		 desc = '$desc', prix = '$prix', dossier = '$dossier', photo01 = '$photo01', photo02 = '$photo02', photo03 = '$photo03', photo04 = '$photo04' 
			 WHERE id = '$id' ");
			 
$dossier = $_POST['dossier'];
$photo01 = $_POST['photo01'];
$photo02 = $_POST['photo02'];
$photo03 = $_POST['photo03'];
$photo04 = $_POST['photo04'];

$destination = "../produits/";
function upload($index,$destination,$maxsize=FALSE,$extensions=FALSE)
{
   //Test1: fichier correctement uploadé
     if (!isset($_FILES[$index]) OR $_FILES[$index]['error'] > 0) return FALSE;
   //Test2: taille limite
     if ($maxsize !== FALSE AND $_FILES[$index]['size'] > $maxsize) return FALSE;
   //Test3: extension
     $ext = substr(strrchr($_FILES[$index]['name'],'.'),1);
     if ($extensions !== FALSE AND !in_array($ext,$extensions)) return FALSE;
   //Déplacement
     return move_uploaded_file($_FILES[$index]['tmp_name'],$destination);
}
 
//EXEMPLES
   chmod("../produits/$dossier", 0777);

  $upload1 = upload("photo1","../$photo01",10485760, FALSE );
  $upload2 = upload("photo2","../$photo02",10485760, FALSE );
  $upload3 = upload("photo3","../$photo03",10485760, FALSE );
  $upload4 = upload("photoplus","../$photo04",10485760, FALSE );		 

//Si il y a une erreur, on crie ^^
if (!$bdd) 
{
    die('Requête invalide : ' . mysql_error());
}
else 
{
echo '
blablabla

';
}
 
//On ferme if(isset($_POST["Modifier"]))
}
?>

Re: Probleme de modification

Posté : 31 oct. 2010, 17:46
par Cyrano
As-tu vérifié que le déroulement passe bien dans le if() ? Avec par exemple quelque chose du genre :
<?php
//....
if (isset ($_POST["Modifier"]))
{
    var_dump($_POST);
    //...

Re: Probleme de modification

Posté : 31 oct. 2010, 18:26
par yllan
j'ai mis comme tu m'as dit var_dump
et j'ai par exemple modifier dans ce cas la le prix de l'article, et ici sur ce que ca m affiche, la modification est effectuee...
ca me parait etre bon mais la modification ne s effectue pas :(

Code : Tout sélectionner

array(17) { ["categorie"]=> string(4) "Geek" ["nom"]=> string(16) "Chargeur Solaire" ["sscategorie"]=> string(8) "Chargeur" ["accueil"]=> string(6) "Divers" ["focus"]=> string(7) "A venir" ["ref"]=> string(11) "RCharSol026" ["intro"]=> string(16) "Chargeur Solaire" ["dossier"]=> string(11) "RCharSol026" ["MAX_FILE_SIZE"]=> string(8) "10485760" ["photo01"]=> string(32) "produits/RCharSol026/photo01.jpg" ["photo02"]=> string(32) "produits/RCharSol026/photo02.jpg" ["photo03"]=> string(32) "produits/RCharSol026/photo03.jpg" ["photo04"]=> string(28) "produits/RCharSol026/photo04" ["desc"]=> string(52) "Chargeur Solaire Compact pour IPhone,Mp3,Mp4 etc...." ["prix"]=> string(3) "33$" ["id"]=> string(2) "42" ["Modifier"]=> string(8) "Modifier" }

Re: Probleme de modification

Posté : 31 oct. 2010, 18:35
par Cyrano
Utilise donc les boutons de code de la barre d'outil au lieu de mettre du code en gras, c'est illisible.

Ok, donc modifie ton code de façon à pouvoir faire afficher ta requête de la même manière avant exécution. Teste ensuite ta requête directement dans phpMyAdmin et raconte-nous ce que ça donne.

Re: Probleme de modification

Posté : 31 oct. 2010, 18:57
par yllan
c;est a dire de la meme maniere avant execution ?

je fais rentre les parametres dans le meme ordre que m'affiche var_dump ?

car l'ordre ici de l 'array est different de celui des champs de la bdd ... et donc de celui du script que j utilise qui lui est dans le meme ordre que la bdd... ?

#-o merci pour ton aidre en tout cas car moi avec mon tout petit niveau je suis dans la panade :)))))

Desole pour le code je ferai plus lisible

Re: Probleme de modification

Posté : 31 oct. 2010, 20:42
par Cyrano
ça veut dire quelque chose comme ceci :
<?php
//...
    $sql  = "UPDATE produits SET ".
            "categorie = '$categorie', ".
            "sscategorie = '$sscategorie', ".
            "accueil = '$accueil', ".
            "focus = '$focus', ".
            "nom = '$nom', ".
            "ref = '$ref', ".
            "intro = '$intro', ".
            "desc = '$desc', ".
            "prix = '$prix', ".
            "dossier = '$dossier', ".
            "photo01 = '$photo01', ".
            "photo02 = '$photo02', ".
            "photo03 = '$photo03', ".
            "photo04 = '$photo04' ".
            "WHERE id = '$id' ";
    echo("<pre>\n");
    var_dump($sql);
    echo("</pre>\n");
    $bdd->exec ($sql);
//...

Re: Probleme de modification

Posté : 01 nov. 2010, 00:32
par yllan
ok j ai fait ce que tu m as donne et ca me met ca :

Code : Tout sélectionner

array(17) { ["categorie"]=> string(4) "Geek" ["sscategorie"]=> string(3) "Gps" ["accueil"]=> string(6) "Divers" ["focus"]=> string(3) "Oui" ["nom"]=> string(6) "Gps 3D" ["ref"]=> string(10) "RGps4.3012" ["intro"]=> string(14) "Gps 3Dimension" ["desc"]=> string(84) "Gps 3D taille de l'ecran 4.3 inch fontion :ecran tactile,Mp3,Mp4,photo. " ["prix"]=> string(3) "20$" ["dossier"]=> string(10) "RGps4.3012" ["MAX_FILE_SIZE"]=> string(8) "10485760" ["photo01"]=> string(31) "produits/RGps4.3012/photo01.jpg" ["photo02"]=> string(31) "produits/RGps4.3012/photo02.jpg" ["photo03"]=> string(31) "produits/RGps4.3012/photo03.jpg" ["photo04"]=> string(27) "produits/RGps4.3012/photo04" ["id"]=> string(2) "41" ["Modifier"]=> string(8) "Modifier" } string(482) "UPDATE produits SET categorie = 'Geek', sscategorie = 'Gps', accueil = 'Divers', focus = 'Oui', nom = 'Gps 3D', ref = 'RGps4.3012', intro = 'Gps 3Dimension', desc = 'Gps 3D taille de l'ecran 4.3 inch fontion :ecran tactile,Mp3,Mp4,photo. ', prix = '20$', dossier = 'RGps4.3012', photo01 = 'produits/RGps4.3012/photo01.jpg', photo02 = 'produits/RGps4.3012/photo02.jpg', photo03 = 'produits/RGps4.3012/photo03.jpg', photo04 = 'produits/RGps4.3012/photo04' WHERE id = '41' "
j'ai modifier le prix et ici il me met bien la modif mais la modif n'est pas prise en compte

Re: Probleme de modification

Posté : 01 nov. 2010, 08:43
par Cyrano
Mouais, je vois que ça ne t'inspire pas des masses : pourtant l'erreur est maintenant repérable et se trouve dans ta requête parce qu'une donnée n'est pas traitée correctement et fausse la requête. Ça ne vient pas du code de la requête elle-même mais des données qui n'ont pas été convenablement traitées avant injection dans le code SQL : observe très attentivement ce code généré.

Fais avec ça ce que je t'ai suggéré plus tôt, tu devais comprendre assez rapidement la raison du plantage.

Re: Probleme de modification

Posté : 01 nov. 2010, 09:48
par yllan
ah je crois avoir vu
c'est le fait que ca traite aussi comme donnee MAX FILE SIZE et du coup ca decale les changements operes ?

Re: Probleme de modification

Posté : 01 nov. 2010, 09:53
par Cyrano
Non, l'erreur est dans une chaine de caractère : regarde la requête SQL générée avec une coloration syntaxique. Utilise un éditeur qui permet ça, Notepad++ est parfait pour ce genre de choses.

Quand tu auras trouvé, on passera au stade suivant : tu utilises PDO, c'est une très bonne idée, mais on va aller plus loin : tu vas faire une requête préparée, ça va résoudre le problème bien mieux que des bricolages de chaines manuelles. Mais tu dois impérativement trouver le problème avant et tu comprendras d'autant plus clairement tout l'intérêt des requêtes préparées.

Re: Probleme de modification

Posté : 01 nov. 2010, 10:25
par yllan
merci pour ton aide ( et pour la lecon au passage :) ) car j'apprends depuis vraiment peu de temps et evidemment je ne sais pas grand chose : )

donc j ai utilise notepad++ et je ne vois pas du tout de quoi tu parles
peut etre que le update n est pas prix en compte (par rapport a la coloration), mais je ne vois pas trop en fait : (

Re: Probleme de modification

Posté : 01 nov. 2010, 10:48
par Cyrano
Ok, regarde bien la différence entre ceci :
UPDATE produits SET categorie = 'Geek', sscategorie = 'Gps', accueil = 'Divers', focus = 'Oui', nom = 'Gps 3D', ref = 'RGps4.3012', intro = 'Gps 3Dimension', desc = 'Gps 3D taille de l'ecran 4.3 inch

fontion :ecran tactile,Mp3,Mp4,photo.


', prix = '20$', dossier = 'RGps4.3012', photo01 = 'produits/RGps4.3012/photo01.jpg', photo02 = 'produits/RGps4.3012/photo02.jpg', photo03 = 'produits/RGps4.3012/photo03.jpg', photo04 = 'produits/RGps4.3012/photo04' WHERE id = '41'
et ceci :
UPDATE produits SET categorie = 'Geek', sscategorie = 'Gps', accueil = 'Divers', focus = 'Oui', nom = 'Gps 3D', ref = 'RGps4.3012', intro = 'Gps 3Dimension', desc = 'Gps 3D taille de l''ecran 4.3 inch

fontion :ecran tactile,Mp3,Mp4,photo.


', prix = '20$', dossier = 'RGps4.3012', photo01 = 'produits/RGps4.3012/photo01.jpg', photo02 = 'produits/RGps4.3012/photo02.jpg', photo03 = 'produits/RGps4.3012/photo03.jpg', photo04 = 'produits/RGps4.3012/photo04' WHERE id = '41'
C'est le jeu des différences, à ce détail près qu'il n'y a qu'une seule différence mais suffisante pour faire planter l'exécution de la première. ;)

Et tu noteras aussi au passage que l'emploi de mots réservés comme noms de table est une très mauvaise isée : renomme ta colonne « desc » en « description » parce que DESC est une commande SQL qui peut aussi faire planter une requête.

Re: Probleme de modification

Posté : 01 nov. 2010, 10:59
par yllan
ah genial, je n avais meme pas fait attention....

mais par contre ce ne doit pas etre le probleme, car je t ai donne juste un exemple qui ne se modifie pas mais aucune des entrees ne se modifie et celle ci est une des rares avec le probleme apostrophe, d'autres sont corrects, sans apostrophes, et ne se modifie quand meme pas...