L'image ne s'affiche pas correctement
Résolu
chrisCL974
Messages postés
63
Date d'inscription
Statut
Membre
Dernière intervention
-
chrisCL974 Messages postés 63 Date d'inscription Statut Membre Dernière intervention -
chrisCL974 Messages postés 63 Date d'inscription Statut Membre Dernière intervention -
<?php include '../model/creerForm.php'; include '../model/creerPogramme.php'; include '../model/participant.php'; $creerForm = new creerForm; $creerProgramme = new creerProgramme; $participant = new participant; $insert = $creerForm->createForm(); $insertPro = $creerProgramme->createProgramme(); $insertParticipant = $participant->participant(); include 'create.php'; $rowsall = $creerForm->getAllForm(); $rowsallPro = $creerProgramme->getAllProgramme(); $rowsallParticipant = $participant->getAllParticipant(); ?> <?php if(!empty($rowsall) AND ($rowsallPro)) { foreach($rowsall as $k => $row) { $rowPro = $rowsallPro[$k]; ?> <div class="col"> <div class="card" style="width: 28rem;display:inline-block;margin-bottom:20px"> <img src="<?php echo $rowPro['imageProgramme']; ?>" class="card-img-top" alt="..."> <div class="card-body"> <h3 style="color: #FFBC42;" class="card-title"><b><?php echo $row['programme'];?></b></h3> <h5 class="card-title"><?php echo $rowPro['sousTitre'];?></h5> <div style="background-color: #FFBC42;color:white;border-radius:20px;height:40px"> <h5 style="text-align: center;padding-top:10px;padding-bottom:10px;">Durée : <?php echo $rowPro['heurePro'] . "h" . $rowPro['minutePro'];?></h5> </div> <br> <p><b>Formateur : </b> <?php echo $row['formateur'];?> <div class="row"> <div class="col"> <b>Date : </b> <?php echo $row['forma_date'];?> </div> <div class="col"> <b>Heure : </b> <?php echo $row['forma_time'];?> </div> </div> <br> <p><b>Lieu : </b> <?php echo $row['lieu'];?></p> <p><b>Nombre de place : </b> <?php echo $row['nb_place'];?></p> <div class="d-flex justify-content-center"> <a href="#staticBackdropParticipe" class="btn btn-warning" style="color:white">Participer</a> <a href="#staticBackdropVoirPlus" class="btn btn-secondary" style="color:white">Voir plus</a> </div> </div> </div> </div> <?php } }?>
Bonjour, je commence Php et j'ai un projet qui porte sur la création de formation. C'est comme un genre de cours qu'on peut participer en fonction des matières créées.
En gros, "programme" c'est comme une matière, j'ai réalisé un formulaire avec la method POST pour insérer l'image, le titre, la durée, les descriptions du programme. Et la "formation" qui est le cours, j'ai fait de même, un formulaire pour insérer le nom du programme, le formateur, la durée du programme, etc...
Lors de la création de formation, tout se passe bien, tout est bien importé. Le problème c'est lors de l'affichage des formations créées, l'image et la durée de la formation ne correspond pas à celui de la formation créées.
Et là en dessous, comme vous pouvez le voir, l'image ne correspond pas au titre du programme. Et la durée du programme correspond bien à l'image mais pas au reste
A voir également:
- L'image ne s'affiche pas correctement
- Votre appareil ne dispose pas des correctifs de qualité et de sécurité importants - Guide
- Image iso - Guide
- Le clavier de mon telephone ne s'affiche plus - Guide
- Acronis true image - Télécharger - Sauvegarde
- Reduire taille image - Guide
4 réponses
Bonjour
Faudrait déjà voir ce que contient la variable $rowsallPro (en en faisant un var_dump)
Et aussi nous montrer le code de la fonction...
Faudrait déjà voir ce que contient la variable $rowsallPro (en en faisant un var_dump)
Et aussi nous montrer le code de la fonction...
Ce code est pour la création de la formation/cours qui dépend de creerForm.php :
Ce code est creerForm.php :
Ce code est creerProgramme.php (où le titre du programme de la formation dépend du titreProgramme) :
<form action="" method="post"> <select value="$programme" class="form-select" aria-label="Default select example" name="programme" required> <option disabled selected>Programme</option> <?php if(!empty($rowsallPro)) { foreach($rowsallPro as $rowPro){?> <option value="<?php echo $rowPro['titreProgramme'];?>"><?php echo $rowPro['titreProgramme']; ?></option> <?php } } ?> </select> </form>
Ce code est creerForm.php :
public function createForm(){ if(isset($_POST['programme']) && isset($_POST['lieu']) && isset($_POST['formateur']) && isset($_POST['nb_place']) && isset($_POST['forma_time']) && isset($_POST['forma_date'])) { $programme = $_POST['programme']; $lieu = $_POST['lieu']; $formateur = $_POST['formateur']; $nb_place = $_POST['nb_place']; $forma_date = $_POST['forma_date']; $forma_time = $_POST['forma_time']; if(empty($programme)) { header("Location: index_admin.php?error=Nom de la formation requis"); exit(); } else { $query = "INSERT INTO forma (programme, lieu, formateur, forma_time, forma_date, nb_place) VALUES ('$programme', '$lieu', '$formateur', '$forma_time', '$forma_date', '$nb_place')"; if($sql = $this->conn->query($query)) { echo "<div class='card w-25' style='padding:20px;color: #45509E; margin:auto;'> <h5 style='text-align:center'> <i class='fas fa-check-circle'></i> <b>La formation sur le programme <q> ". $_POST['programme']. " </q> a bien été créé</b></h5> <a href='../admin/index_admin.php' style='color:grey;text-align:center'>Retour vers les programmes</a> </div>"; exit(); } else { header("Location: index_admin.php"); exit(); } } } }
Ce code est creerProgramme.php (où le titre du programme de la formation dépend du titreProgramme) :
public function createProgramme(){ if(isset($_POST['titreProgramme']) && isset($_POST['sousTitre']) && isset($_POST['descriProgramme']) && isset($_POST['heurePro']) && isset($_POST['minutePro']) && isset($_POST['itemProgramme']) && isset($_POST['modaliteProgramme']) && isset($_FILES['imageProgramme'])) { $titreProgramme = $_POST['titreProgramme']; $sousTitre = $_POST['sousTitre']; $descriProgramme = $_POST['descriProgramme']; $heurePro = $_POST['heurePro']; $minutePro = $_POST['minutePro']; $itemProgramme = $_POST['itemProgramme']; $modaliteProgramme = $_POST['modaliteProgramme']; $imageProgramme = $_FILES['imageProgramme']['name']; if(empty($titreProgramme)) { header("Location: index_admin.php?error=Nom du programme requis"); exit(); } else { $query = "INSERT INTO programme (titreProgramme, sousTitre, descriProgramme, heurePro, minutePro, itemProgramme, modaliteProgramme, imageProgramme) VALUES ('$titreProgramme', '$sousTitre', '$descriProgramme', '$heurePro', '$minutePro', '$itemProgramme', '$modaliteProgramme', '$imageProgramme')"; if($sql = $this->conn->query($query)) { move_uploaded_file($_FILES['imageProgramme']['tmp_name'], "$imageProgramme"); echo "<div class='card w-25' style='padding:20px;color: #45509E; margin:auto;'> <h5 style='text-align:center'> <i class='fas fa-check-circle'></i> <b>Le programme <q> ". $_POST['titreProgramme']. " </q> a bien été créé</b></h5> <a href='../admin/programme.php' style='color:grey;text-align:center'>Retour vers les programmes</a> </div>"; exit(); } else { header("Location:programme.php"); exit(); } } } }
Code creerProgramme.php :
Code participant.php :
public function getAllProgramme(){ $data = null; $query = "SELECT programmeID, titreProgramme, sousTitre, descriProgramme, heurePro, minutePro, itemProgramme, modaliteProgramme, imageProgramme FROM programme"; if($sql = $this->conn->query($query)) { while($row = mysqli_fetch_assoc($sql)) { $data[] = $row; } } return $data; }
Code participant.php :
public function getAllParticipant(){ $data = null; $query = "SELECT participantID, programmeChoisi, nomParticipant, prenomParticipant, fonctionParticipant, serviceParticipant FROM participant"; if($sql = $this->conn->query($query)) { while($row = mysqli_fetch_assoc($sql)) { $data[] = $row; } } return $data; }
Dans ta requête pour avoir les participants, à quoi correspond la colonne programmeChoisi ?
C'est l'ID de la formation ( la colonne programmeID de la table programme ) ?
Si oui, c'est ce champ là qu'il faut utiliser dans ton code..
C'est l'ID de la formation ( la colonne programmeID de la table programme ) ?
Si oui, c'est ce champ là qu'il faut utiliser dans ton code..
$rowsallPro = $creerProgramme->getAllProgramme(); $rowsallParticipant = $participant->getAllParticipant(); if(!empty($rowsall) AND ($rowsallPro)) { foreach($rowsall as $k => $row) { $programmeChoisi = $row['programmeChoisi']; $rowPro = $rowsallPro[$programmeChoisi];
Oupsss...
ce n'est pas la jointure avec la participants qui pose problème...
Désolé.
Donc, il nous faut le code de
et sur le principe.. c'est la même chose... il faut utiliser le champ qui sert de "lien" entre tes deux requetes
Mais en regardant tes var_dump .. je ne vois pas de champs qui correspondent ...
N'aurais tu pas oublié une table (une jointure) dans ton code ???
ce n'est pas la jointure avec la participants qui pose problème...
Désolé.
Donc, il nous faut le code de
$rowsall = $creerForm->getAllForm();
et sur le principe.. c'est la même chose... il faut utiliser le champ qui sert de "lien" entre tes deux requetes
Mais en regardant tes var_dump .. je ne vois pas de champs qui correspondent ...
N'aurais tu pas oublié une table (une jointure) dans ton code ???
creerForm.php fonction getAllForm:
Comment je pourrais joindre le programme avec le titreProgramme du programme.php?
public function getAllForm(){ $data = null; $query = "SELECT formaID, programme, lieu, formateur, forma_date, forma_time, nb_place FROM forma ORDER BY forma_date ASC"; if($sql = $this->conn->query($query)) { while($row = mysqli_fetch_assoc($sql)) { $data[] = $row; } } return $data; }
Comment je pourrais joindre le programme avec le titreProgramme du programme.php?
Déjà, il faut éviter de faire des "liens" en se basant sur du texte ( le titre... )
Il est largement préférable de ne travailler qu'avec des identifiants uniques ( en général, les ID (clés primaires..), de tes tables )
Quel le schéma de ta bdd ?
As tu fais le MCD de ta base ? quelles sont les cardinalités de tes tables ?
Un programme peut être lié à combien de formations ?
Une formation peut être rattachée à combien de programme ?
Si une formation peut se trouver dans plusieurs programmes et ou un programme avoir plusieurs formations .. il va te falloir une table supplémentaire pour gérer ces associations.
Si, la relation, par contre, est du un pou un ( une formation associé à un programme ).. là, il suffit d'ajouter un champ dans ta table formation ( id_programme) le lien se fera alors sur ce champ.
Il est largement préférable de ne travailler qu'avec des identifiants uniques ( en général, les ID (clés primaires..), de tes tables )
Quel le schéma de ta bdd ?
As tu fais le MCD de ta base ? quelles sont les cardinalités de tes tables ?
Un programme peut être lié à combien de formations ?
Une formation peut être rattachée à combien de programme ?
Si une formation peut se trouver dans plusieurs programmes et ou un programme avoir plusieurs formations .. il va te falloir une table supplémentaire pour gérer ces associations.
Si, la relation, par contre, est du un pou un ( une formation associé à un programme ).. là, il suffit d'ajouter un champ dans ta table formation ( id_programme) le lien se fera alors sur ce champ.
Comme je te le disais, il faut modifier dans ta table forma, le champ "programme" pour le lier au champ programmID de ta table programme.
Ca évitera des erreurs et rendra le fonctionnement du code plus performant.
et donc, dans ton code, ça deviendra
Ca évitera des erreurs et rendra le fonctionnement du code plus performant.
et donc, dans ton code, ça deviendra
if(!empty($rowsall) AND ($rowsallPro)) { foreach($rowsall as $k => $row) { $programmeChoisi = $row['programmID']; $rowPro = $rowsallPro[$programmeChoisi];
Les participants sont ceux qui ont choisi la formation créées.
J'ai voulu faire le lien avec mysql mais cela n'a pas marché
$rowsall et $rowsallPro sont pour récupérer les informations dont la base où les formulaires ont submit.
Et là c'est d'afficher l'image par rapport au programme choisi où la formation a été créée
Vu que la formation dépend du programme choisis. (je sais pas si c'est compréhensible.. ????????)
J'ai voulu faire le lien avec mysql mais cela n'a pas marché
$rowsall et $rowsallPro sont pour récupérer les informations dont la base où les formulaires ont submit.
Et là c'est d'afficher l'image par rapport au programme choisi où la formation a été créée
Vu que la formation dépend du programme choisis. (je sais pas si c'est compréhensible.. ????????)
Et qu'il faut remplacer $k. Par $row['lechampquifaitlelien..']