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

CodeIgniter PHP Discussion :

Afficher une image "avatar"


Sujet :

CodeIgniter PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 18
    Points : 14
    Points
    14
    Par défaut Afficher une image "avatar"
    Bonsoir,

    Je suis toujours sur mon site avec Codeigniter 4 et je ne comprend pas comment afficher mon image "avatar" sachant que je l'ai déjà fait apparaître en la mettant en preview mais quand il s'agit de l'afficher pour mon image de profil ça ne fonctionne pas.
    Je débute complètement avec php donc il faudra être compréhensif. Merci.
    Voici mes codes :
    Ma page "View"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <div class="profile-header">
    <?php $session = session();?>
    <?php if($session->isLoggedIn==TRUE): ?>
        <div class="profile-img">
          <?php  ?>
          <img src="<?php echo base_url('assets/img/membres/'.$session->img_name)?>" width="200" alt="Profile Image">
        </div>
    Mon controller avec la fonction "UploadImage"
    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
     
    public function uploadImage()
        {
            $session = session();
            $membre = new MemberModel();
            $id = $session->get('id');
            $id_membre = $id;
     
            // image validation
            $validated = $this->validate([
                'image' => [
                    'uploaded[image]',
                    'mime_in[image,image/jpg,image/jpeg,image/gif,image/png]',
                    'max_size[image,4096]',
                ],
            ]);
            $image_file = $_FILES['image']['name'];
     
            if (!$validated) {
                return view('image', [
                    'validation' => $this->validator
                ]);
            }
     
            // Grab the file by name given in HTML form
            $file = $this->request->getFile('image');
     
            // Generate a new secure name
            $name = $file->getRandomName();
     
            // Move the file to the directory
            $file->move('assets/img/membres', $name);
     
            $model = new ImageModel();
            $model->save([
                'img_name' => $name,
                'id_membre'=> $id
            ]);
     
            session()->setFlashdata('success', 'Image envoyée avec succès.');
            return redirect()->to(site_url('image'))->withInput()->with('previewImage', $name);   
        }
    Mon Model que j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class ImageModel extends Model
    {
        protected $table      = 'image';
        protected $primaryKey = 'id';
     
        protected $useAutoIncrement = true;
     
        protected $returnType     = 'array';
     
        protected $allowedFields = ['id_membre','img_name', 'created_at'];
     
    }
    Et enfin l'affichage sur mon site
    Nom : 2022-11-26.png
Affichages : 452
Taille : 169,6 Ko

    Merci pour votre aide.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 35
    Points : 27
    Points
    27
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="<?php echo base_url('assets/img/membres/'.$session->img_name)?>" width="200" alt="Profile Image">
    Bonjour,

    Si ton image ne s'affiche pas, c'est soit parce que son URL n'est pas bonne (mal formée) : corrige la balise citée ci-dessus
    soit que l'image n'existe pas dans le dossier pointé : cherche du côté de la gestion de l'upload.
    Tu peux afficher le code source de la page (CTRL+U sous Firefox), rechercher l'url de l'image dans le flow HTML, cliquer-double sur l'URL et voir ce que le navigateur te répond. Je penche pour une URL mal formée
    Bon courage
    Eric

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 18
    Points : 14
    Points
    14
    Par défaut
    Désolé pour la non-réponse. J'ai été pris par mon projet.
    Ça a été réglé mais maintenant que je lance une inscription aucune image n'est pas présente et c'est normal mais quand j'essaie d'en rajouter j'ai un code erreur.
    Cette erreur arrive directement après la connexion du nouveau membre.

    L'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ErrorException
    Undefined array key -1
    APPPATH\Models\Entities\MemberEntity.php at line 20
     
    15 
    16     public function getImage()
    17     {
    18         $imageModel = new \App\Models\ImageModel();
    19         $images = $imageModel->where('id_membre',$this->id)->findAll();
    20         return $images[sizeof($images)-1];
    21         
    22     }
    Et dans ma partie vue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php $session = session();?>
    <?php if($session->isLoggedIn==TRUE): ?>
        <div class="profile-img">
        <a href="<?php echo base_url('avatar') ?>">
        <?php if(!empty($session->membre->getImage()['img_name'])): ?>
          <img src="<?php echo 'assets/img/membres/'.$session->membre->getImage()['img_name'];?>" width="200" alt="Profile Image"></a>
        <?php else: ?>
          <img src="<?php echo 'assets/img/img_default.png'?>" width="200" alt="Profile Image"></a>
        <?php endif; ?>
        </div>

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 35
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par djelectro95 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    19         $images = $imageModel->where('id_membre',$this->id)->findAll();
    20         return $images[sizeof($images)-1];
    [/CODE]
    Ce n'est pas propre d'uliliser $images sans verifier qu'il a renvoyé au moins une ligne.
    Mais ca te permetra juste de de gerer l'erreur, pas de l'expliquer.
    utilise dd($images) pour comprendre ce que renvoie la requete.
    Bon courage
    Eric

Discussions similaires

  1. [VB.NET] afficher une image stockée dans une table
    Par matonfire dans le forum ASP.NET
    Réponses: 4
    Dernier message: 19/03/2004, 11h21
  2. Afficher une image JPG qui se trouve dans une bdd
    Par Harry dans le forum Bases de données
    Réponses: 6
    Dernier message: 27/02/2004, 10h51
  3. Charger et afficher une image jpg avec les mfc
    Par glop - pas glop dans le forum MFC
    Réponses: 3
    Dernier message: 11/02/2004, 18h59
  4. Réponses: 2
    Dernier message: 04/02/2004, 22h32
  5. Afficher une image sans passer par les textures
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/05/2003, 19h13

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