Probleme de modification

Mammouth du PHP | 19672 Messages

02 nov. 2010, 11:27

Mouais, tu t'es surtout mélangé les crayons entre PDO et PDOStatement. Regarde mieux la documentation et surtout les exemples. Dans les liens que je t'ai donné et en particulier le second, tu as l'exemple #2 avec tous les éléments dont tu as besoin pour que ça fonctionne avec une requête préparée.

Mais une fois de plus, ne reviens pas juste me dire « Ça ne marche pas » : montre en même temps le code que tu as fait. Comment veux-tu qu'on sache où tu t'es planté si on ne sait pas exactement ce que tu as fait ??
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 32 Messages

03 nov. 2010, 10:56

Bonjour Cyrano

donc j'ai lu un peu le PDO Stat... j'ai essaye de le mettre en pratique avec le code qui suit :
<?php
error_reporting(E_ALL | E_STRICT);

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

if(isset($_POST["Modifier"]))
{
    echo("<pre>\n");
    var_dump($_POST);
    echo("</pre>\n");
    try
    {
        $bdd = new PDO('mysql:host=localhost;dbname=eliate', 'root', '');
    }
    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'];
    $description  = $_POST['description'];
    $prix         = $_POST['prix'];
    $dossier      = $_POST['dossier'];
    $photo01      = $_POST['photo01'];
    $photo02      = $_POST['photo02'];
    $photo03      = $_POST['photo03'];
    $photo04      = $_POST['photo04'];
    try
    {
        $req = $bdd->prepare('UPDATE produits SET 
			categorie , 
			sscategorie , 
			accueil ,
			focus ,
			nom ,
			ref ,
			intro ,
			description 
			prix ,
			dossier
			photo01 ,
			photo02 ,
			photo03 ,
			photo04 
			WHERE id = '.$id.' ');
        
        $req->execute(array(
            ':categorie' => $categorie,
            ':sscategorie' => $sscategorie,
            ':accueil' => $accueil,
            ':focus' => $focus,
            ':nom' => $nom,
            ':ref' => $ref,
            ':intro' => $intro,
            ':intro' => $description,
            ':prix' => $prix,
            ':dossier' => $dossier,
            ':photo01' => $photo01,
            ':photo02' => $photo02,
            ':photo03' => $photo03,
            ':photo04' => $photo04,
            ':id' => $id
        ));
    }
    catch(PdoException $e)
    {
        die('Erreur : '.$e->getMessage());
    }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }

    $destination = "../produits/";

    //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 );                 
    if (!$bdd)
    {
        die('Requête invalide : ' . mysql_error());
    }

else 
{
//Si tout va bien, on informe que la modification est faite
echo '

<table align="center" width="800" height="400" bgcolor="#efe8cc">
	<tr>
			<td align="center" valign="top">
                    <br><br>   
                       <table width="600" height="400">
							<tr>
								<td valign="top" width="720" align="center">
                                
                                <font style="color:#CC3300; font-family:Arial, Helvetica, sans-serif; font-size:24px; font-weight:bold">
                                VOUS AVEZ BIEN MODIFIER LE PRODUIT<br><br>
                                </font> 
								<font style="color:#CC3300; font-family:Arial, Helvetica, sans-serif; font-size:20px; font-weight:bold">
								<a href=admin.php>Revenir à l\'administration.</a>
                                    
								</td>
							</tr>
						</table>
			</td>
	</tr>
</table>

';
}
 
//On ferme if(isset($_POST["Modifier"]))
}
?>
Quand je clique sur modifier cela m'affiche :
array(17) {
  ["categorie"]=>
  string(6) "Bijoux"
  ["nom"]=>
  string(9) "Serpentin"
  ["sscategorie"]=>
  string(6) "Bagues"
  ["accueil"]=>
  string(4) "Luxe"
  ["focus"]=>
  string(3) "Oui"
  ["ref"]=>
  string(9) "BagSer001"
  ["intro"]=>
  string(8) "modifier"
  ["dossier"]=>
  string(9) "BagSer001"
  ["MAX_FILE_SIZE"]=>
  string(8) "10485760"
  ["photo01"]=>
  string(29) "produits/BagSer001/photo1.jpg"
  ["photo02"]=>
  string(29) "produits/BagSer001/photo2.jpg"
  ["photo03"]=>
  string(25) "produits/BagSer001/photo3"
  ["photo04"]=>
  string(28) "produits/BagSer001/photoplus"
  ["description"]=>
  string(39) "				Or blanc

Crystal Swarovski
"
  ["prix"]=>
  string(2) "20"
  ["id"]=>
  string(2) "12"
  ["Modifier"]=>
  string(8) "Modifier"
}
voila et ca ne m'ecrit aucun mesasge d'erreur quand je valide, mais par contre le code ne modifi rien du tout :(((((
help help..

ou alors j aurai jamais du essaye de me mettre a la page avec PDO : )))

Mammouth du PHP | 19672 Messages

03 nov. 2010, 11:37

As-tu bien regardé ta requête ????
$req = $bdd->prepare('UPDATE produits SET
                        categorie ,
                        sscategorie ,
                        accueil ,
                        focus ,
                        nom ,
                        ref ,
                        intro ,
                        description
                        prix ,
                        dossier
                        photo01 ,
                        photo02 ,
                        photo03 ,
                        photo04
                        WHERE id = '.$id.' ');
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 32 Messages

03 nov. 2010, 12:03

j'avais oublie deux virgules

je les ai mise et relance la modification mais toujours le meme resultat...

apres clique sur modification je recois ca :
array(17) {
  ["categorie"]=>
  string(6) "Bijoux"
  ["nom"]=>
  string(9) "Serpentin"
  ["sscategorie"]=>
  string(6) "Bagues"
  ["accueil"]=>
  string(4) "Luxe"
  ["focus"]=>
  string(3) "Oui"
  ["ref"]=>
  string(9) "BagSer001"
  ["intro"]=>
  string(8) "modifier"
  ["dossier"]=>
  string(9) "BagSer001"
  ["MAX_FILE_SIZE"]=>
  string(8) "10485760"
  ["photo01"]=>
  string(29) "produits/BagSer001/photo1.jpg"
  ["photo02"]=>
  string(29) "produits/BagSer001/photo2.jpg"
  ["photo03"]=>
  string(25) "produits/BagSer001/photo3"
  ["photo04"]=>
  string(28) "produits/BagSer001/photoplus"
  ["description"]=>
  string(4) "modi"
  ["prix"]=>
  string(2) "20"
  ["id"]=>
  string(2) "12"
  ["Modifier"]=>
  string(8) "Modifier"
}
ca veut quand meme dire que sql comprend les modifications non ?
et pourtant toujours aucun changement

Mammouth du PHP | 19672 Messages

03 nov. 2010, 12:15

Non, mets-toi en mode « Je pense en SQL » et « Je crée une requête UPDATE » et regarde comme il faut ta requête, tu vas réaliser qu'il ne peut absolument rien se passer du tout.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 32 Messages

03 nov. 2010, 12:55

je suis passe en mode sq...l rrrrrr : ) je me suis dit que ca devrait etre bon avec ce code :
<?php
error_reporting(E_ALL | E_STRICT);

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

if(isset($_POST["Modifier"]))
{
    echo("<pre>\n");
    var_dump($_POST);
    echo("</pre>\n");
    try
    {
        $bdd = new PDO('mysql:host=localhost;dbname=eliate', 'root', '');
    }
    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'];
    $description  = $_POST['description'];
    $prix         = $_POST['prix'];
    $dossier      = $_POST['dossier'];
    $photo01      = $_POST['photo01'];
    $photo02      = $_POST['photo02'];
    $photo03      = $_POST['photo03'];
    $photo04      = $_POST['photo04'];
    try
    {
        $req = $bdd->prepare('UPDATE produits SET 
			categorie =:nvcategorie , 
			sscategorie =:nvsscategorie, 
			accueil =:nvaccueil,
			focus =:nvfocus,
			nom =:nvnom,
			ref =:nvref,
			intro =:nvintro,
			description =:nvdescription,
			prix =:nvprix,
			dossier =:nvdossier,
			photo01 =:nvphoto01,
			photo02 =:nvphoto02,
			photo03 =:nvphoto03,
			photo04 =:nvphoto04
			WHERE id =:nvid 
			');
        
        $req->execute(array(
            'nvcategorie' => $categorie,
            'nvsscategorie' => $sscategorie,
            'nvaccueil' => $accueil,
            'nvfocus' => $focus,
            'nvnom' => $nom,
            'nvref' => $ref,
            'nvintro' => $intro,
            'nvdescription' => $description,
            'nvprix' => $prix,
            'nvdossier' => $dossier,
            'nvphoto01' => $photo01,
            'nvphoto02' => $photo02,
            'nvphoto03' => $photo03,
            'nvphoto04' => $photo04,
            'nvid' => $id
        ));
    }
    catch(PdoException $e)
    {
        die('Erreur : '.$e->getMessage());
    }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }

    $destination = "../produits/";

    //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 );                 
    if (!$bdd)
    {
        die('Requête invalide : ' . mysql_error());
    }

else 
{
//Si tout va bien, on informe que la modification est faite
echo '

<table align="center" width="800" height="400" bgcolor="#efe8cc">
	<tr>
			<td align="center" valign="top">
                    <br><br>   
                       <table width="600" height="400">
							<tr>
								<td valign="top" width="720" align="center">
                                
                                <font style="color:#CC3300; font-family:Arial, Helvetica, sans-serif; font-size:24px; font-weight:bold">
                                VOUS AVEZ BIEN MODIFIER LE PRODUIT<br><br>
                                </font> 
								<font style="color:#CC3300; font-family:Arial, Helvetica, sans-serif; font-size:20px; font-weight:bold">
								<a href=admin.php>Revenir à l\'administration.</a>
                                    
								</td>
							</tr>
						</table>
			</td>
	</tr>
</table>

';
}
 
//On ferme if(isset($_POST["Modifier"]))
}
?>
et ben non... je clique sur modifier , le sql me renvoi ca :
array(17) {
  ["categorie"]=>
  string(6) "Bijoux"
  ["nom"]=>
  string(9) "Serpentin"
  ["sscategorie"]=>
  string(6) "Bagues"
  ["accueil"]=>
  string(4) "Luxe"
  ["focus"]=>
  string(3) "Oui"
  ["ref"]=>
  string(9) "BagSer001"
  ["intro"]=>
  string(8) "modifier"
  ["dossier"]=>
  string(9) "BagSer001"
  ["MAX_FILE_SIZE"]=>
  string(8) "10485760"
  ["photo01"]=>
  string(29) "produits/BagSer001/photo1.jpg"
  ["photo02"]=>
  string(29) "produits/BagSer001/photo2.jpg"
  ["photo03"]=>
  string(25) "produits/BagSer001/photo3"
  ["photo04"]=>
  string(28) "produits/BagSer001/photoplus"
  ["description"]=>
  string(8) "modifier"
  ["prix"]=>
  string(2) "20"
  ["id"]=>
  string(2) "12"
  ["Modifier"]=>
  string(8) "Modifier"
}
et rien ne se modifie encore : (

Mammouth du PHP | 19672 Messages

03 nov. 2010, 12:58

Bon tu vas faire un test : tu vas prendre ta requête, la ré-écrire en dur avec des vraies valeurs et coller ça dans phpMyAdmin pour vérifier ce qui se passe. Après on verra selon le résultat.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 32 Messages

03 nov. 2010, 13:31

voila j'ai reecrit la requete en dure directement sur phpmyadmin comme ceci :
UPDATE produits SET 
categorie='Bijoux', 
sscategorie='Bagues', 
accueil='Luxe', 
focus='oui', 
nom='Serpentin', 
ref='BagSer001', 
intro='modifier', 
description='modifier aussi', 
prix='20$', dossier='BagSer001', 
photo1='produits/BagSer001/photo1.jpg', 
photo2='produits/BagSer001/photo2.jpg', 
photo3='produits/BagSer001/photo3', 
photoplus='produits/BagSer001/photoplus' 
WHERE id= 12
et ca a bien modifier le produit


AHHHHHH GENIALLLLLLL

j'ai vue l'erreur et corrige et ca marcheeeee

j'avais confondu la valeur de l upload des photos avec l'entree de leur lien dans la base de donnee...

et en fait c'est le fait d'ecrire en DUR comme tu m'as dit qui m'a permis de voir ca :)))))))

alors la CHAPEAU MONSIEUR ET UN IMMENSE MERCI... : ))))))

Eléphanteau du PHP | 32 Messages

03 nov. 2010, 13:38

et je viens d'uploader le fichier sur mon serveur, et ca marche impec

merci merci :o
=D> =D> =D> =D> =D>

Mammouth du PHP | 19672 Messages

03 nov. 2010, 14:43

Tu auras au moins appris une manière pour déboguer ce genre de problème :)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 32 Messages

03 nov. 2010, 21:02

grave.. .franchement ca fait plaisir de se pencher un bon moment sur un code et d essayer de le decortiquer
on apprend

je suis vraiment debutant et j'essai de faire des choses sans trop les comprendre des fois... donc quelque fois un peu de copier coller arranger pour que ca donne quelque chose... et la le sentiment d'avoir compris un petit peu plus que d habitude un code... ca fait du bien ; )

bonne soiree et a bientot peut etre :D

ViPHP
ViPHP | 5462 Messages

04 nov. 2010, 11:03

par contre tu fais des exceptions sur tes requêtes alors que les exceptions ne sont pas activées pour PDO, il faut donc l'activé sinon t'aura jamais d'erreurs

Mammouth du PHP | 19672 Messages

04 nov. 2010, 11:15

par contre tu fais des exceptions sur tes requêtes alors que les exceptions ne sont pas activées pour PDO, il faut donc l'activé sinon t'aura jamais d'erreurs
:shock: stealth35, je demande régulièrement aux posteurs d'être plus explicites dans leurs questions, et là j'avoue que je dois te le demander aussi dans ton affirmation parce que je ne saisis pas à quoi tu fais référence en disant que les exceptions PDO ne sont pas activées... et si moi je ne comprends pas, je me demande comment un débutant en la matière pourra faire mieux :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 5462 Messages

04 nov. 2010, 12:54

par contre tu fais des exceptions sur tes requêtes alors que les exceptions ne sont pas activées pour PDO, il faut donc l'activé sinon t'aura jamais d'erreurs
:shock: stealth35, je demande régulièrement aux posteurs d'être plus explicites dans leurs questions, et là j'avoue que je dois te le demander aussi dans ton affirmation parce que je ne saisis pas à quoi tu fais référence en disant que les exceptions PDO ne sont pas activées... et si moi je ne comprends pas, je me demande comment un débutant en la matière pourra faire mieux :-k

il fait :
try
{
    $req = $bdd->prepare('UPDATE produits SET
                        categorie =:nvcategorie ,
                        sscategorie =:nvsscategorie,
                       ...'
    ));
}
catch(PdoException $e)
{
    die('Erreur : '.$e->getMessage());
}
catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}
sauf que la requete ne renvoie pas d'exception si le mode exception n'est pas activé pour PDO, ducoup la meme si y'a une erreur dans ca requête ca va rien rendre, il faut rajouter dans ca connexion le PDO::ERRMODE_EXCEPTION
try
{
    $bdd = new PDO('mysql:host=localhost;dbname=SITE', 'ROOT', 'PASS');
    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}

Modifié en dernier par stealth35 le 04 nov. 2010, 14:45, modifié 1 fois.

Mammouth du PHP | 19672 Messages

04 nov. 2010, 13:04

Ha ben là effectivement c'est beaucoup plus clair, même moi j'ai appris un truc ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: