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 :

interaction php html


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Points : 407
    Points
    407
    Par défaut interaction php html
    Bonjour,
    J'ai un fichier test.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <html>
    <body><?php
    function make_miniature($nom)
    { 
    ...
    return $nom_min; 
    } 
    $nom_miniature=make_miniature("monimage.jpg");
    echo "nom_miniature=",$nom_miniature;
    ?>
    <p><img border="0" src="mini-monimage.jpg">
    </body>
    </html>
    l'exécution de ma fonction php s'exécute correctement : elle crée bien la miniature. Dans mon navigateur j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nom_miniature=mini-monimage.jpg
    suivi de ma miniature, ce qui est correct.
    A présent, il faut paramètrer tout cela. J'ai fais beaucoup de tests, lu des exemples similaires, mais il reste des différences qui fait que ça ne marche pas.
    Deux pb : l'appel de la procedure make_miniature à partir du source html, puis le passage de paramètre.
    Je pensais faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img border="0" src="make_miniature.php?image=monimage.jpg">
    Le résultat est le logo qui signifie que l'image n'est pas trouvé. J'ai un doute sur le make_miniature.php car ça fait nom de fichier. et dans la fonction php comment récupérer le paramètre "image".
    Merci de votre aide

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2010
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 144
    Points : 241
    Points
    241
    Par défaut
    Tu peux récupérer le paramètre "image" avec $_GET['image']

    Peut on avoir un aperçu du code de ton script make_miniature.php ?

  3. #3
    Membre averti Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Points : 407
    Points
    407
    Par défaut
    J'avais essayé d'utiliser $_GET['param'], mais cela ne retournait rien. Je crois que le pb vient de l'appel de la fonction make_miniature, pourquoi cette extension .php ? et je passe bien un paramètre (image) à la fonction alors qu'apporte $_GET ? J'avais cru aussi comprendre que $_GET servait de PHP à PHP, moi mon appel se fait à partir d'HTML. Soit c'est un pb de syntaxe d'appel, soit c'est impossible à faire (j'ai lu que certains passait par du javascript pour appeler le php à partir d'html, mais c'était de vieux posts). Je bute la dessus depuis pas mal de jours.
    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
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    <html>
    <body><?php
    function make_miniature($img, $max_width=400, $max_height=400, $repertoire_destination='./Images/ImagePeinture/', $prefixe='mini-', $supprimer_original=false)
    { 
    /*Fonction qui créer la mimiature d'une image. 
    Retourne nom complet de la miniature 
    
    Liste des paramètres : 
    - $img : nom complet de l'image originale 
    - $max_width : Largeur maximale pour la miniature 
    - $max_height : Hauteur maximale pour la miniature 
    - $repertoire_destination : Répertoire dans lequel doit être sauvegardée la miniature 
    - $prefixe : Préfixe donné à la miniature (Ex : "ma-photo.jpg" devient "mini-ma-photo.jpg" 
    - $supprimer_original : Si est égal à true on supprime l'image originale 
    
    /*Initialisations*/ 
    echo "img=",$img,"\n";
    echo "image=",$_GET['image'],"\n";
    $message = ''; 
    /*on ouvre le fichier*/ 
    $file = fopen($img,'r'); 
    if ($file !== false) //Le fichier existe 
    { 
    /*On recupere le nom de l'image*/ 
    $nom = $prefixe.basename($img); 
    /*getimagesize() renvoie FALSE si le fichier n'est pas une image*/ 
    if (false !== list($largeur_orig,$hauteur_orig,$extension) = getimagesize($img)) 
    { 
    /*On récupère l'extension de l'image*/ 
    $extension_img = substr(strchr($img,'.'),1); 
    /*On vérifie que le fichier soit bien au format jpg, gif ou png*/ 
    if(ereg('(jpeg|jpg|gif|png)$',$extension_img)) 
    { 
    switch ($extension) 
    { 
    case 1: // GIF 
    $type_img = imagecreatefromgif($img); break; 
    case 2: //JPEG 
    $type_img = imagecreatefromjpeg($img); break; 
    case 3: // PNG 
    $type_img = imagecreatefrompng($img); break; 
    } 
    /*On verifie la taille*/ 
    if(($largeur_orig > $max_width) || ($hauteur_orig >
     $max_height)) 
    { 
    // si l'image est trop large ou trop haute 
    if ($largeur_orig > $hauteur_orig) 
    { 
    // image plus large que haute 
    $hauteur = round(($hauteur_orig * $max_width) / $largeur_orig); 
    $largeur = $max_width; 
    } 
    else 
    { 
    // image plus haute que large 
    $hauteur = $max_height; 
    $largeur = round(($largeur_orig * $max_height) / $hauteur_orig); 
    } 
    } 
    else 
    { 
    $largeur = $largeur_orig; 
    $hauteur = $hauteur_orig; 
    } 
    /*On crée la miniature*/ 
    $src = imagecreatetruecolor($largeur,$hauteur); 
    imagecopyresized($src,$type_img,0,0,0,0,$largeur,$hauteur,$largeur_orig,$hauteur_orig); 
     
    /*On sauvegarde la miniature*/ 
    imagejpeg($src, $repertoire_destination.$nom); 
     
    /*On libere la memoire utilisée par cette image.*/ 
    imagedestroy($src); 
     
    /*On supprime éventuellement l'image originale*/ 
    if ($supprimer_original === true) 
    unlink($img); 
    } 
    else 
    { 
    $message = 'Erreur : L\'extension de l\'image est '.$extension_img.' ! Elle devrait être JPG, JPEG, GIF ou PNG'; 
    } 
    } 
    else 
    { 
    $message = 'Erreur : Le fichier n\'est pas une image !'; 
    } 
    } 
    else 
    { 
    $message = 'Erreur : Le fichier n\'existe pas !'; 
    } 
    return $repertoire_destination.$nom; 
     
    } 
    /*$imagephp="./Images/ImagePeinture/image1.jpg";
    echo "image=",$imagephp,"\n";
    $var=make_miniature($imagephp);
    echo "var=",$var;*/
     
    ?>
    <img border="0" src="make_miniature.php?image=./Images/ImagePeinture/image1.jpg">
    </body>
    </html>

  4. #4
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2010
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 144
    Points : 241
    Points
    241
    Par défaut
    Le script que tu viens de copier ne fonctionne pas pour ce que tu veux faire. Il permet simplement de générer une miniature à partir d'une image existante et de l'enregistrer dans un répertoire ("./Images/ImagePeinture/" dans ton cas).

    Il faudrait savoir quel est le but recherché, soit générer une miniature à la volée à chaque chargement de la page, soit générer une miniature une bonne fois pour toute et l'enregistrer sur le serveur.

    Il est tout à fait possible de mettre une page PHP en source sur la balise image dans ton code HTML, il faut simplement que le PHP ait un retour correct (image/jpeg, image/png...)

  5. #5
    Membre confirmé Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Points : 578
    Points
    578
    Par défaut
    Bonjour,

    Est-ce que la page qui te renvoie ton image déclare bien les entêtes en précisant que c'est une image pour que ce soit traité en tant que tel ?

  6. #6
    Membre averti Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Points : 407
    Points
    407
    Par défaut
    je voulais faire une galerie de photos accessible à partir de leurs miniatures : le curseur passe sur la miniature et l'image réelle apparait en popup. Je suis conscient qu'il y a d'autres manières de faire, mais bon ce que je veux faire ne me semble pas inconsidéré :
    En html je crée une image :????? est l'appel à ma fonction php avec le nom du fichier jpg en paramètre. La fonction php va créer la miniature coté serveur si elle n'existe pas déjà (c'est à faire) et renvoie le nom de la miniature.
    Pour "humitake": la fonction php renvoie le nom de l'image miniature, c'est bien ce qui est attendu par la directive <img src=?????? >.
    Merci

  7. #7
    Membre confirmé Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Points : 578
    Points
    578
    Par défaut
    Citation Envoyé par awalter1
    Pour "humitake": la fonction php renvoie le nom de l'image miniature, c'est bien ce qui est attendu par la directive <img src=?????? >.
    Cela dépend du cas et j'ai un peu de mal à comprendre dans lequel tu te trouve.

    Soit tu créer ta miniature à la volée, dans ce cas tu doit créer une page PHP qui génère ton image en miniature et est retournée en HTML avec les entêtes indiquant au navigateur qu'il s'agit d'une image. Avec cette solution tu place le nom de la page PHP en source.

    Soit tu créer la miniature seulement si elle n'existe pas, tu as donc une solution de stockage derrière. C'est la solution que tu utilise il me semble.
    Dans ce cas il te suffit de passer dans src le chemin de ton image et dans ce cas ce qui est attendu est effectivement le nom de l'image (avec son chemin si différent du dossier de la page).

    Mais dans ce cas tu t'y prend mal ce que tu fait ici :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <img border="0" src="make_miniature.php?image=monimage.jpg">
    C'est indiqué que la source de l'image est "make_miniature.php?image=monimage.jpg" or ce n'est pas du tout ce que tu souhaite.

    Il faut appeler la fonction dirrectement (en php) et utiliser alors le retour de cette dernière.
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <img border="0" src="<php echo make_miniature('monimage.jpg'); ?>">

  8. #8
    Membre averti Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Points : 407
    Points
    407
    Par défaut
    Grand merci.
    C'est en effet la solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    img border="0" src="<php echo make_miniature('monimage.jpg'); ?>">
    qui est la bonne, en plus j'avais trouvé ce type d'invocation mais j'ai du me tromper dans les ' ou ".

  9. #9
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    ... le curseur passe sur la miniature et l'image réelle apparait en popup ...
    Le survole d'un élément HTML c'est une action venant de l'utilisateur, du navigateur plus exactement (le client).
    Du coup, la solution vient forcément d'un langage coté client (html, css, javascript).

    A ma connaissance, il existe que 2 manières de déclencher quelque chose au survole, soit en Css, soit en JS.

    En faite, ce que tu recherche serait ni plus ni moins ce qu'on appel une fausse popup.
    C'est à dire qu'on affiche une image en miniature par défaut, puis on place aussi une 2ème image plus grande dans une DIV cachée/masqué par défaut.
    Au survole de la miniature, on rend visible cette DIV masqué.

    Pour cela, en général on exploite du JS, évènement onmaouseover/onmouseout (au-dessus/en-dehors de l'élément à survoler) pour changer des propriétés Css (display : none ou block) de l'autre élément à afficher/masquer.


    A coté de ça, si tu souhaite créer "à la volée" (en Php) la miniature, effectivement il te faut faire ce qui est évoqué plus haut.

    Il me semble que cette technique est de moins en moins utilisée car (très) gourmande en ressource.
    Il est préférable à mon sens de créer la miniature au moment où l'image est déposée sur le serveur lors d'un upload par exemple (cela en Php).
    Cette opération ce fera qu'une seule fois (alors qu'une miniature créé à la volée se fera autant de fois qu'il y aura d'utilisateurs affichant celle-ci).


    Apparemment, la fonction make_miniature() sert à créer la miniature si elle n'existe pas.
    C'est un moindre mal il est vrai.
    Citation Envoyé par humitake
    <img border="0" src="<php echo make_miniature('monimage.jpg'); ?>">
    A mon sens il n'est pas vraiment utile d'appeler cette fonction pile à cet endroit, c'est à dire dans le ...src="make_miniature()"...
    Le déroulement du code Php (coté serveur) n'a rien avoir avec le déroulement du code Html.
    On peu très bien appeler cette fonction avant la 1ère balise Html (doctype/html>), et c'est même mieux (meilleure séparation des traitements et de l'interface).
    Suffit d’initialiser le nom de l'image.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    $monimage_miniature = make_miniature('monimage.jpg');
    ?>
     
    <html>
    ... etc ...
     
    <img border="0" src="<php echo $monimage_miniature; ?>">
     
    </html>

  10. #10
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Je remarque ceci dans la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $message = 'Erreur : Le fichier n\'existe pas !';
    Ne faudrait il pas créer une image en miniature par défaut, et renvoyer sont nom lors d'une erreur ?
    Car un contenu comme "Erreur : Le fichier n\'existe pas !" dans un attribut src="...", ce n'est pas correcte.

    Ou alors il faudrait faire une alternative avant de créer la balise <img />.

  11. #11
    Membre averti Avatar de awalter1
    Inscrit en
    Août 2004
    Messages
    994
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 994
    Points : 407
    Points
    407
    Par défaut
    Je suis d'accord avec vos remarques, en effet les miniatures peuvent être créées avant de s'occuper de l'affichage et le code source que j'ai fourni n'est pas finalisé, c'est un ensemble de copier/coller à retester précisément.
    Pour le rendu, voici ce que j'appelle popup : http://cssglobe.com/lab/tooltip/02/
    Pour l'instant j'explore la faisabilité avant de me décider quoi faire, avec php, javascript, ajax, jquery ... c'est tout un monde que je ne connais pas (je suis plus à l'aise en C, python, X11/motif, gtk+, oracle, c'est pourquoi je dois me mettre à niveau)
    Merci encore

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

Discussions similaires

  1. Boite de dialogue et interaction PHP et HTML
    Par casavba dans le forum Langage
    Réponses: 13
    Dernier message: 11/09/2008, 11h20
  2. [PHP/HTML] Soumission d'un fromulaire par "entrée"
    Par dychentrus dans le forum Langage
    Réponses: 5
    Dernier message: 28/11/2005, 18h14
  3. quel language complete PHP HTML ou xHTML
    Par ghita269 dans le forum Langage
    Réponses: 3
    Dernier message: 21/10/2005, 19h39
  4. [Couleur] Différence entre Delphi, Php/Html
    Par Rayek dans le forum Langage
    Réponses: 5
    Dernier message: 19/10/2005, 13h06
  5. [FLASH MX] php => html => Flash MX
    Par Jefekoi dans le forum Flash
    Réponses: 10
    Dernier message: 03/09/2005, 21h52

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