IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

requête UPDATE après redimensionnement image


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 6
    Par défaut requête UPDATE après redimensionnement image
    Bonjour à tous,

    Je vous explique en quelques mots mon problème. Pour créer ma page d'ajout d'image, j'ai procédé par étape.
    La première consistait à valider le bon envoi dans la base de données du chemin de l'image et des informations liées (taille...) + l'upload dans le dossier du serveur.
    Jusque là, pas de souci si ce n'est que je voulais limiter la taille des images et donc les redimensionner pour alléger le poids (plutôt que de refuser l'envoi d'une image qui serait trop lourde).
    Je me suis donc documenté sur les fonctions "imagecreatetruecolor", "imagecopyresampled", "imagejpeg"... trouvées sur les forums...

    Mon code me permet donc maintenant de réduire considérablement la taille de mes images mais le problème se trouve dans ma requête de modification de mon entrée dans la base de données. Je procède peut-être à l'ancienne école mais voici la méthodo :
    je créé une nouvelle entrée dans la base de données, je récupère la clé primaire, je vérifie que mon fichier est bien uploadé, je le redimensionne, le copie dans le dossier de destination puis modifie l'entrée en base de données avec les nouveaux id, chemin, largeur, hauteur...

    Sauf que, là où ma requête de modification fonctionnait sans la partie resize de l'image, elle ne fonctionne plus maintenant.
    Message d'erreur : Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in...

    Voici donc le code en espérant qu'un téméraire osera s'y aventurer (si vous avez des conseils pour améliorer la logique de la page, n'hésitez pas !)
    Merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
    
    if(isset($_FILES["chemin_image"])){
    
    
    // Définition de la requête permettant l'insertion d'une nouvelle ligne dans ma db
    $insertSQL = sprintf("INSERT INTO tgd_image (chemin_image) VALUES (%s)",
    GetSQLValueString("default.jpg", "text"));
    
    mysql_select_db($database_connexionBDD, $connexionBDD);
    $Result1 = mysql_query($insertSQL, $connexionBDD) or die(mysql_error());
    
    // Récupération de l'id de la ligne qui vient d'être créé
    $idPhoto = mysql_insert_id();
    
    $esp = " ";
    $majuscule = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
    $minuscule = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
    $accent = array('à'=>'a','á'=>'a','â'=>'a','ã'=>'a','ä'=>'a','å'=>'a','ò'=>'o','ó'=>'o','ô'=>'o','õ'=>'o','ö'=>'o','è'=>'e','é'=>'e','ê'=>'e','ë'=>'e','ì'=>'i','í'=>'i','î'=>'i','ï'=>'i','ù'=>'u','ú'=>'u','û'=>'u','ü'=>'u','ÿ'=>'y','ñ'=>'n','ç'=>'c','ø'=>'0','&'=>'','-'=>'');
    
    mysql_select_db($database_connexionBDD, $connexionBDD);
    $query_liste_id = "SELECT * FROM tgd_menu WHERE id_menu=".$_GET['idMenu']." ORDER BY id_menu ASC";
    $liste_id = mysql_query($query_liste_id, $connexionBDD) or die(mysql_error());
    $row_liste_id = mysql_fetch_assoc($liste_id);
    $totalRows_liste_id = mysql_num_rows($liste_id);
    
    $nomPhoto = $row_liste_id['nom_menu'];
    $nomPhoto = str_replace($esp,"",$nomPhoto);
    $nomPhoto = str_replace($majuscule,$minuscule,$nomPhoto);
    $nomPhoto = strtr($nomPhoto,$accent);
    
    $nomPhoto = $nomPhoto.'-'.$idPhoto;
    $cheminImage = '../portfolio/';
    
    
    
    if(is_uploaded_file($_FILES["chemin_image"]["tmp_name"])){
    
    
    function resize_image($my_img,$folder,$numId){
    
    $info = getimagesize($my_img);
    $largeurImage = $info[0];
    $hauteurImage = $info[1];
    $typeImage = $info[2];
    $largeurNew = 629;
    $hauteurNew = round(($largeurNew / $largeurImage) * $hauteurImage);
    
    switch($typeImage){
    case 1:
    $extension = ".gif";
    $src_im = imagecreatefromgif($my_img);
    break;
    case 2:
    $extension = ".jpg";
    $src_im = imagecreatefromjpeg($my_img);
    break;
    case 3:
    $extension = ".png";
    $src_im = imagecreatefrompng($my_img);
    break;
    }
    
    $dst_im = imagecreatetruecolor($largeurNew,$hauteurNew);
    imagecopyresampled($dst_im,$src_im,0,0,0,0,$largeurNew,$hauteurNew,$largeurImage,$hauteurImage);
    
    $cheminImage = $folder.$extension;
    
    $toto = '../portfolio/zzzz'.$numId.'.jpg';
    imagejpeg($dst_im,$toto,100);
    
    if (imagejpeg($dst_im,$toto)){
    $aVirer = '../';
    $toto = str_replace($aVirer,'',$toto);
    
    
    // le problème est ici je pense
    $ReqSQL = "UPDATE tgd_image SET chemin_image='".$toto."', txt_image='".$_POST['txt_image']."', largeur_image=".$largeurNew.", hauteur_image=".$hauteurNew.", cle_menu=".$_GET['idMenu']." WHERE id_image=".$numId;
    //echo $ReqSQL."<br/>";
    //j'exécute ma requête de modification
    mysql_query($ReqSQL, $connexionBDD) or die(mysql_error());
    }
    }
    
    $file_tmp = $_FILES["chemin_image"]["tmp_name"];
    $dest_file = $cheminImage.$file_tmp;
    resize_image($file_tmp,$dest_file,$idPhoto);
    }
    }
    }
    Merci d'avance !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    il serait bien que tu nous confirmes quelle ligne provoque l'erreur.
    Est-ce que ton $connexionBDD est bien défini ?

    pour ton histoire de minuscules, il existe la fonction mb_strtolower().
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éprouvé Avatar de Shinji62
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 135
    Par défaut
    Et si tu copies/colles ta requête dans PhpMyAdmin?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 6
    Par défaut
    Bonjour Sabotage,

    L'erreur correpond à la ligne qui suit :
    mysql_query($ReqSQL, $connexionBDD) or die(mysql_error());

    liée à cette requête :

    $ReqSQL = "UPDATE tgd_image SET chemin_image='".$toto."', txt_image='".$_POST['txt_image']."', largeur_image=".$largeurNew.", hauteur_image=".$hauteurNew.", cle_menu=".$_GET['idMenu']." WHERE id_image=".$numId;

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 6
    Par défaut
    Bonjour Shinji62,

    Je peux copier la requête dans php/myAdmin mais sans les valeurs récupérées.
    J'ai fais un test de cette requête avec des valeurs écrites directement en SQL et ça ne marche pas.

    Cependant, j'ai testé cette même update juste après le :

    if(is_uploaded_file($_FILES["chemin_image"]["tmp_name"])){

    toujours avec des valeurs écrites en SQL (puisque les vraies valeurs n'étaient pas encore traitées) et la requête marche ???

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    La question est
    Est-ce que ton $connexionBDD est bien défini ?
    Puisque c'est sur cet argument que porte ton erreur.

    Il est possible que la connexion mysql fonctionne au début du script et soit coupée à la fin du script.
    Donc, vérifier la valeur aux deux endroits.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 6
    Par défaut
    Citation Envoyé par sabotage Voir le message
    il serait bien que tu nous confirmes quelle ligne provoque l'erreur.
    Est-ce que ton $connexionBDD est bien défini ?

    pour ton histoire de minuscules, il existe la fonction mb_strtolower().
    le "$connexionBDD" est bien défini je pense puisque ma requête INSERT INTO fonctionne bien

    Merci pour la fonction mb_strtolower(), je me suis compliqué pour rien apparemment !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Enregistrer une image après redimensionnement image
    Par legrandse dans le forum jQuery
    Réponses: 1
    Dernier message: 13/08/2014, 12h42
  2. [PHP 5.2] Redirection après redimensionnement d'image
    Par ero-sennin dans le forum Langage
    Réponses: 4
    Dernier message: 26/01/2009, 22h00
  3. [Upload] Redimensionner image après upload
    Par leroidje dans le forum Langage
    Réponses: 3
    Dernier message: 21/11/2008, 12h12
  4. Réponses: 2
    Dernier message: 14/01/2008, 15h17
  5. [FPDF] Envoyer une requête UPDATE après génération du document PDF
    Par craac dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 21/12/2007, 10h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo