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 :

getimagesize une fois mais pas deux.


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 33
    Points : 28
    Points
    28
    Par défaut getimagesize une fois mais pas deux.
    Bonjour à tous,
    Voilà j'ai un étrange soucis.
    J'ai cette fonction :
    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
    // redimensionne taille image selon une dimension donnée
    function resizeImage($url,$hauteur,$largeur)
    {
    	$attrImage = getimagesize($url);
     
    	// redimensionnement
    	$img_w = $attrImage[0]; 
    	$img_h = $attrImage[1];
     
    	$ratio = (float)($img_w / $img_h);
     
    	// Quel cote est le plus grand ?
    	if($img_w > $img_h) //cas plus large
    	{
    		$img_mini_w = $largeur;
    		$img_mini_h = ceil($largeur*(1/$ratio));
    	}
    	else //cas plus haut ou egal
    	{
    		$img_mini_w = ceil($hauteur*($ratio));
    		$img_mini_h = $hauteur;
    	}
     
    	return $dimensions = array($img_mini_h,$img_mini_w);
    }
    Lorsque je l'utilise une première fois tout fonctionne.
    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
    // gestion taille image
    $taille_prod = resizeImage('img/produits/'.$sql[0]->image,70,50);
     
    // image produit
    $panier.= '<td class="center"><img name="img_prod_'.$sql[0]->image.'" src="img/produits/'.$sql[0]->image.'" height="'.$taille_prod[0].'" width="'.$taille_prod[1].'" alt="'.$sql[0]->libelle.'" class="bordure_image"/></td>';
    $panier.= '<td><b>'.$sql[0]->libelle.'</b><br/><br/>'.$sql[0]->description_courte.'</td>';
     
    			// quantités produits
    			$panier.= '<td class="center"><select name="choixQte_'.$key->sqltable.'_'.$key->id_produit.'" id="choixQte_'.$key->sqltable.'_'.$key->id_produit.'" class="modifQte">';
     
    			$a++;
     
    			for($i = $sql[0]->qte_mini;$i<=$sql[0]->qte_maxi;$i++)
    			{
    				if($i == $key->qte)
    					$selected = 'selected="selected"';
    				else
    					$selected = '';
     
    				$panier.= '<option value="'.$i.'" '.$selected.'>'.$i.'</option>';
    			}
     
    			$panier.= '</select></td>';
    Le soucis c'est que lorsque je met à jour la quantité(cette mise à jour se fait en Jquery), on revient sur la page et là ce "refresh", ne permet pas de redimensionner la taille de l'image, il met une erreur.
    J'ai testé en faisant un écho avant l'appel de la fonction de "$sql[0]->image" et il y a bien quelque chose, mais lorsque je fait des echo dans la fonction il ne recoit rien.

    Quel pourrait en etre la cause? on dirait que getimagesize ne fonctionne pas après le refresh...
    Lorsque le refresh est fait, j'ai testé l'affichage de l'image et un lien et ça fonctionne tout s'affiche et le lien est actif.

    Merci de vos réponses future. :-)

  2. #2
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    salut,

    tes données initiales (avant refresh) proviennent-elles d'un formulaire ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    pas du tout, elles proviennent de l'url. Avec le jquery, j'utilise le livequery ce qui permet de renvoyer des données(tel que l'identifiant du produit correspondant à l'image). Des requetes sont faites, d'une pour récupérer le contenu du panier avec les quantités, et de deux les champs correspondant à l'identifiant du produit. Donc j'ai bien de nouveau tout ce qui est libellé, prix initial, description et autre mais y'a que ce getimagesize qui bloque.

    Je viens même d'essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // on recherche le produit par son id
    $prod = "SELECT * FROM ".$key->sqltable." WHERE id_produit = '".$key->id_produit."'";
    echo "requete : ".$prod."<br />";
    $sql = selection_mysql($prod,MYSQL_DB);
    echo "image : ".$sql[0]->image."<br />";
    $color = couleur($color);
    $taillimage = getimagesize('img/produits/'.$sql[0]->image);
    echo "width : ".$taillimage[0]."<br />";
    echo "height : ".$taillimage[1]."<br />";
    echo "<a href='img/produits/".$sql[0]->image."'><img src='img/produits/".$sql[0]->image."' /></a>";
    Comme je le disais j'ai bien l'image qui apparait avec le lien -> donc pas un problème de chemin, ni de nom, ni de récupération de données.
    Comment Getimagesize pourrait fonctionner la première fois et non la deuxième sachant que c'est exactement la même chose qui est faite...
    Je m'arrache le peu de cheveux qu'il me reste sur ce problème très problématique.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    Ha c'est bon j'ai trouvé il fallait que j'ajoute ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $chemin_fichier = '../../../';
    au getimagesize, car je n'avais pas prêté attention à l'arborescence du fichier jquery vers lequel est renvoyé le traitement pour le changement de la quantité.

    Ce qui donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if(isset($_GET['refresh']))
    {
            $chemin_fichier = '../../../';
    }
    [...]
    $taille_prod = resizeImage(''.$chemin_fichier.'img/produits/'.$sql[0]->image,70,50);
    et laisser le chemin de l'image tel quel.
    Ensuite apparait un problème au niveau des accents mais je devrais trouver facilement, et c'est un autre problème ^^

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

Discussions similaires

  1. Une fonction qui marche 8 fois mais pas 9
    Par Swarley dans le forum Prolog
    Réponses: 1
    Dernier message: 04/12/2008, 10h21
  2. [MySQL] Une insertion MySql mais pas deux
    Par francoisch dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/10/2007, 18h23
  3. Requete qui marche une fois mais pas deux
    Par maxvador dans le forum Hibernate
    Réponses: 4
    Dernier message: 23/01/2007, 15h07
  4. Réponses: 3
    Dernier message: 14/03/2006, 11h34
  5. Réponses: 4
    Dernier message: 18/01/2006, 14h49

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