Bonjour à tous,

Dans la refonte de mon site, j'aurais besoin de conseils sur une manière de faire.

J'explique :

D'un côté on a une partie backoffice qui me permet d'ajouter/supprimer/éditer des news/portées/chiens/articles etc...

Pas mal de choses sont déjà fonctionnelles, ce qui me permet d'automatiser la refonte de mon site beaucoup plus vite.

Cependant, je bloque sur une chose que j'aimerais faire. Je ne sais pas trop comment m'y prendre.

J'ai une bdd avec plusieurs tables (chiens/portées/news....), chaque table contient une colonne id_chiens/id_portee etc...

Je saisis une portée via le formulaire, ensuite la portée s'affiche sur le site via la page liste_portee_canecorso.php. Cette page m'affiche donc toutes les portées saisies via une boucle. Donc là, aucun soucis pour afficher les parents, il suffit de récupérer le nom des chiens dans la table "portée" colonne "mère", "père".

La page portee_canecorso.php m'affiche les détails d'une portée sur laquelle j'aurais cliqué ( ex : portee-canecorso.php?id=1). Cette page m'affiche les colonnes de la table "portée", mais aussi la possibilité de revenir sur la page des parents comme le montre la capture.

https://i.imgur.com/4zFtzKM.png

Le souci, c'est que je ne sais pas comment m'y prendre pour qu'on arrive sur les parents correspondants à la portée, d'autant que les détails des parents sont contenus dans la table "chiens". Pourtant je suis certain que la solution est simple.

Pour le href, j'imagine qu'on pourrait faire comme ca.

 <a href="chiens-canecorso.php?id=<?= $c['id_chiens'] ?>" title="En savoir plus sur ce chien"></a>

Mais encore une fois comment faire pour que "id_chiens" corresponde bien aux chiens de la portée?

Voila j'espere avoir été assez explicite.

Pour la petite histoire, je n'ai pas vraiment de cursus dans le web dev, mais j'apprends via tuto/video/copier-coller. J'attaque sous peu la formation Web dev junior de Openclassroom, mais j'ai pas envie d'attendre la fin de cette formation pour reprendre mon site en main quitte à revenir sur certaines choses par la suite.

Merci encore de votre aide.

Nathan

4 réponses


Salut

A mon sens, si une portée à 2 parents, ce qui est a 99% le cas (sauf informations manquante), tu devrai enregistrer les id_chien des parents. comme ca, chaque portée aurait un pere_chien_id et une mere_chien_id.
un chien fait partie d'une portée. donc un chien a une portee_id (soit renseigné soit vide (car on ne sait pas qui sont les géniteurs, donc on ne connait pas la portée)).

la boucle est bouclé

Donc ajouter 2 colonnes pere_chien_id et mere_chien_id dans la table portee? et enregistrer via un input hidden par exemple?

par exemple oui. au moment d'enregistrer une portée, il faut renseigner les 2 parents dans la table portée. Et dans la table chien, il faut dire que ce chien est issu de la portée_id X. parce qu'un chien est forcement issue d'une portée.

En faite sur le formulaire de la page "ajout_portee.php" je renseigne déja les parents via mere et pere, par contre dans la table chien il faudrai plutot dire que ce chien est parent de la portée_id X. Ce que j'aimerai faire c'est que sur la page portee_canecorso.php on puisse revenir sur la page du parent.

Page ajout_portee.php

<?php require_once ('includes/meta.inc.php') ?>

<body>
  <header>

    <!--MENU-->
    <section>
      <?php require_once ('includes/menu.inc.php') ?>
    </section>
    <!-- END MENU-->
  </header>

 <div class="clear"></div>

<section class="ss-bandeau">
  <h2>Ajouter une portée</h2>
</section>

<div class="container-fluid">
  <div class="row">
  <section class="bloc-content">
   <form method="POST" enctype="multipart/form-data">

<!-- Connexion à la base de données -->
<?php require_once('includes/condb.inc.php'); ?>

<?php
$message_class = 'alert-danger';
$message = '';

if ($_SERVER['REQUEST_METHOD'] == 'POST') {

   if (!empty($_POST['mere']) AND !empty($_POST['pere']) AND !empty($_POST['date_saillie']) AND !empty($_POST['gestation']) AND !empty($_POST['date_naissance']) AND !empty($_POST['dispo']) AND !empty($_POST['adn']) AND !empty($_POST['dysplasie_mere']) AND !empty($_POST['dysplasie_pere']) AND !empty($_POST['robe']) AND !empty($_POST['methode']) AND !empty($_POST['ts_mere']) AND !empty($_POST['ts_pere']) AND !empty($_POST['chiot_f']) AND !empty($_POST['chiot_m']) AND !empty($_POST['reservation'])  AND !empty($_POST['lettre'])) {

    // Insertion du message à l'aide d'une requête préparée
    $req = $bdd->prepare('INSERT INTO portee (mere, pere, date_saillie, gestation, date_naissance, dispo, adn, dysplasie_mere, dysplasie_pere, robe, methode, ts_mere, ts_pere, chiot_f, chiot_m, reservation, lettre) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)');
    $req->execute(array($_POST['mere'], $_POST['pere'], $_POST['date_saillie'], $_POST['gestation'], $_POST['date_naissance'], $_POST['dispo'], $_POST['adn'], $_POST['dysplasie_mere'], $_POST['dysplasie_pere'], $_POST['robe'], $_POST['methode'], $_POST['ts_mere'], $_POST['ts_pere'], $_POST['chiot_f'], $_POST['chiot_m'], $_POST['reservation'], $_POST['lettre']));

        $message_class = 'alert-success';
        $message = 'Votre portée a bien été ajoutée.';
    } else {
        $message = 'Veuillez remplir tous les champs';
    }
}
?>

<!--MESSAGE ALERT -->
<?php if ($message): ?>
    <div class="container-fluid">
        <div class="row">
            <section class="bloc-content">
                <p class="alert <?= $message_class ?> t-center"><?= htmlspecialchars($message) ?></p>
             </section>
        </div>
    </div>
<?php endif ?>
<!--STOP MESSAGE ALERT -->

<!--CHAMP MERE-->
<div class="form-group">
  <label for="mere">Mère :</label>
    <select name="mere" id="mere" class="form-control">

    <?php $chiens = $bdd->query('SELECT * FROM chiens WHERE sexe = "Femelle"');
    while($c = $chiens -> fetch()) { ?>
    <option class="form-control" id="mere" type="text" name="mere" placeholder="Nom de la mère" /><?= $c['nom']." ".$c['affixe']?></option>
    <?php } ?>
    </select>
</div>
<?php $chiens->closeCursor(); ?>
<!--STOP CHAMP MERE-->

<!--CHAMP PERE-->
<div class="form-group">
  <label for="pere">Père :</label>
    <select name="pere" id="pere" class="form-control">

    <?php $chiens = $bdd->query('SELECT * FROM chiens WHERE sexe = "Mâle"');
    while($c = $chiens -> fetch()) { ?>

    <option class="form-control" id="pere" type="text" name="pere" placeholder="Nom du père" /><?= $c['nom']." ".$c['affixe'] ?></option>
    <?php } ?>
    </select>
</div>
<?php $chiens->closeCursor(); ?>
<!--STOP CHAMP PERE-->

<div class="form-group">
  <label for="date_saillie">Date de la saillie :</label>
  <input class="form-control" id="date_saillie" type="date" name="date_saillie" placeholder="date_saillie" />
</div>

<div class="form-group">
  <label for="gestation">Gestation confirmé :</label>
    <select name="gestation" id="gestation" class="form-control">
    <option class="form-control" id="gestation" type="text" name="gestation" placeholder="Oui" />Oui</option>
    <option class="form-control" id="gestation" type="text" name="gestation" placeholder="Non" />Non</option>
    </select>
</div>

<div class="form-group">
  <label for="date_naissance">Naissance prévu le :</label>
  <input class="form-control" id="date_naissance" type="date" name="date_naissance" placeholder="date_naissance" />
</div>

<div class="form-group">
  <label for="dispo">Disponible vers le :</label>
  <input class="form-control" id="dispo" type="date" name="dispo" placeholder="dispo" />
</div>

<div class="form-group">
  <label for="adn">Identification ADN des parents :</label>
    <select name="adn" id="adn" class="form-control">
    <option class="form-control" id="adn" type="text" name="adn" placeholder="Seulement la mère" />Seulement la mère</option>
    <option class="form-control" id="adn" type="text" name="adn" placeholder="Seulement le père" />Seulement le père</option>
    <option class="form-control" id="adn" type="text" name="adn" placeholder="Oui" />Oui</option>
    <option class="form-control" id="adn" type="text" name="adn" placeholder="Non" />Non</option>
    </select>
</div>

<div class="form-group">
  <label for="dysplasie_mere">Dysplasie de la mère:</label>
    <select name="dysplasie_mere" id="dysplasie_mere" class="form-control">
    <option class="form-control" id="dysplasie_mere" type="text" name="dysplasie_mere" placeholder="Non dépisté" />Non dépisté</option>
    <option class="form-control" id="dysplasie_mere" type="text" name="dysplasie_mere" placeholder="Dépistage en cours" />Dépistage en cours</option>
    <option class="form-control" id="dysplasie_mere" type="text" name="dysplasie_mere" placeholder="HDA - Indemne de dysplasie" />HDA - Indemne de dysplasie</option>
    <option class="form-control" id="dysplasie_mere" type="text" name="dysplasie_mere" placeholder="HDB - Etat sensiblement normal" />HDB - État sensiblement normal</option>
    <option class="form-control" id="dysplasie_mere" type="text" name="dysplasie_mere" placeholder="HDC - Dysplasie légère " />HDC - Dysplasie légère</option>
    <option class="form-control" id="dysplasie_mere" type="text" name="dysplasie_mere" placeholder="HDD - Dysplasie moyenne " />HDD - Dysplasie moyenne</option>
    <option class="form-control" id="dysplasie_mere" type="text" name="dysplasie_mere" placeholder="HDE - Dysplasie grave " />HDE - Dysplasie grave</option>
    </select>
</div>

<div class="form-group">
  <label for="dysplasie_pere">Dysplasie du père:</label>
    <select name="dysplasie_pere" id="dysplasie_pere" class="form-control">
    <option class="form-control" id="dysplasie_pere" type="text" name="dysplasie_pere" placeholder="Non dépisté" />Non dépisté</option>
    <option class="form-control" id="dysplasie_pere" type="text" name="dysplasie_pere" placeholder="Dépistage en cours" />Dépistage en cours</option>
    <option class="form-control" id="dysplasie_pere" type="text" name="dysplasie_pere" placeholder="HDA - Indemne de dysplasie" />HDA - Indemne de dysplasie</option>
    <option class="form-control" id="dysplasie_pere" type="text" name="dysplasie_pere" placeholder="HDB - Etat sensiblement normal" />HDB - État sensiblement normal</option>
    <option class="form-control" id="dysplasie_pere" type="text" name="dysplasie_pere" placeholder="HDC - Dysplasie légère " />HDC - Dysplasie légère</option>
    <option class="form-control" id="dysplasie_pere" type="text" name="dysplasie_pere" placeholder="HDD - Dysplasie moyenne " />HDD - Dysplasie moyenne</option>
    <option class="form-control" id="dysplasie_mere" type="text" name="dysplasie_mere" placeholder="HDE - Dysplasie grave " />HDE - Dysplasie grave</option>
    </select>
</div>

<div class="form-group">
  <label for="robe">Robe attendue :</label>
  <input class="form-control" id="robe" type="text" name="robe" placeholder="Robe attendue" />
</div>

<div class="form-group">
  <label for="methode">Méthode d'élevage:</label>
    <select name="methode" id="methode" class="form-control">
    <option class="form-control" id="methode" type="text" name="methode" placeholder="Inbreeding" />Inbreeding</option>
    <option class="form-control" id="methode" type="text" name="methode" placeholder="Outcrossing" />Outcroissing</option>
    <option class="form-control" id="methode" type="text" name="methode" placeholder="Linebreeding" />Linebreeding</option>
    </select>
</div>

<div class="form-group">
  <label for="ts_mere">Test de sociabilité de la mère:</label>
    <select name="ts_mere" id="ts_mere" class="form-control">
    <option class="form-control" id="ts_mere" type="text" name="ts_mere" placeholder="Aucun" />Ancun</option>
    <option class="form-control" id="ts_mere" type="text" name="ts_mere" placeholder="Test de caractère" />Test de caractère</option>
    <option class="form-control" id="ts_mere" type="text" name="ts_mere" placeholder="CSAU" />CSAU</option>
    </select>
</div>

<div class="form-group">
  <label for="ts_pere">Test de sociabilité du père:</label>
    <select name="ts_pere" id="ts_pere" class="form-control">
    <option class="form-control" id="ts_pere" type="text" name="ts_pere" placeholder="Aucun" />Ancun</option>
    <option class="form-control" id="ts_pere" type="text" name="ts_pere" placeholder="Test de caractère" />Test de caractère</option>
    <option class="form-control" id="ts_pere" type="text" name="ts_pere" placeholder="CSAU" />CSAU</option>
    </select>
</div>

<div class="form-group">
  <label for="chiot_f">Nombre de femelles dans la portée :</label>
    <input class="form-control" id="chiot_f" type="number" name="chiot_f" placeholder="Nombre de femelles dans la portée" />
    </select>
</div>

<div class="form-group">
  <label for="chiot_m">Nombre de mâles dans la portée :</label>
    <input class="form-control" id="chiot_m" type="number" name="chiot_m" placeholder="Nombre de mâles dans la portée" />
    </select>
</div>

<div class="form-group">
  <label for="reservation">Nombre de réservation :</label>
  <input class="form-control" id="reservation" type="number" name="reservation" placeholder="Nombre de réservation" />
</div>

<div class="form-group">
  <label for="lettre">Lettre de l'année :</label>
  <input class="form-control" id="lettre" type="text" name="lettre" placeholder="Lettre de l'année" />
</div>

      <button type="submit" value="Ajouter le chien" class="form-control" />Ajouter la portée</button> <br />
      <button type="reset" value="Recommencer" class="form-control" />Recommencer </button>

   </form>
  </section>
  </div>
</div>

<?php var_dump($_POST); ?>

<?php require_once ('includes/footer.inc.php') ?>

page portee_canecorso.php

<?php require_once('includes/meta.inc.php');?>

<body>
  <header>
    <!--MENU-->
    <section>
      <?php include ('includes/menu.inc.php') ?>
    </section>
    <!-- END MENU-->
  </header>

 <div class="clear"></div>

<?php require_once('includes/condb.inc.php'); ?>
<?php if(isset($_GET['id']) AND !empty($_GET['id'])) {
   $get_id = htmlspecialchars($_GET['id']);
   $portee = $bdd->prepare('SELECT * FROM portee WHERE id_portee = ?');
   $portee->execute(array($get_id));
   if($portee->rowCount() == 1) {
      $portee = $portee->fetch();
      $mere = $portee['mere'];
      $pere = $portee['pere'];
      $date_saillie = $portee['date_saillie'];
      $gestation = $portee['gestation'];
      $date_naissance = $portee['date_naissance'];
      $adn = $portee['adn'];
      $dispo = $portee['dispo'];
      $dysplasie_mere = $portee['dysplasie_mere'];
      $dysplasie_pere = $portee['dysplasie_pere'];
      $robe = $portee['robe'];
      $methode = $portee['methode'];
      $ts_mere = $portee['ts_mere'];
      $ts_pere = $portee['ts_pere'];
      $chiot_f = $portee['chiot_f'];
      $chiot_m = $portee['chiot_m'];
      $reservation = $portee['reservation'];
      $lettre = $portee['lettre'];

   } else {
      die('<div class="container-fluid">
              <div class="row">
                <section class="bloc-content">
                  <p class="alert alert-danger t-center">Cette portée n\'existe pas ! <br/>
                  </p>
                </section>
              </div>
            </div>
          ');
   }
} else {

   die('<div class="container-fluid">
            <div class="row">
              <section class="bloc-content">
                <p class="alert alert-danger t-center">Une erreur est survenue contacter <a href="contact.php">l\'administrateur</a> <br/>
                </p>
              </section>
            </div>
          </div>
        ');
      } ?>

<section class="bandeau bandeau-sm m0">
  <h1>Informations sur la portée</h1>
</section>

<div class="container-fluid grid mt0">
  <div class="row">
    <figure class="effect-goliath col-xs-12 col-sm-12 col-lg-12">
      <img class="img-responsive" src="http://lorempixel.com/1920/1080/animals/4" alt=""/>
        <figcaption>
          <h2>"<?= (htmlspecialchars($mere));?>"</h2>
          <p><em></em></p>
        </figcaption>
    </figure>
  </div>
</div>

<div class="container-fluid grid">
  <div class="row">
    <figure class="effect-goliath col-xs-12 col-sm-12 col-lg-12">
      <img class="img-responsive" src="http://lorempixel.com/1920/1080/animals/4" alt=""/>
        <figcaption>
          <h2><?= (htmlspecialchars($pere));?></h2>
          <p><em></em></p>
        </figcaption>
    </figure>
  </div>
</div>

<div class="container-fluid">
    <div class="row">
      <section class="bloc-content">
        <p>
        <ul>
        <li><span class="liste">Date de la saillie : </span><?= ''.date("j/n/Y",strtotime($portee["date_saillie"])).'';?></li>
        <li><span class="liste">Confirmation de la gestation : </span><?= (htmlspecialchars($gestation)) ?></li>
        <li><span class="liste">Naissance prévu le : </span><?= ''.date("j/n/Y",strtotime($portee["date_naissance"])).'';?></li>
        <li><span class="liste">Disponible à partir du : </span><?= ''.date("j/n/Y",strtotime($portee["dispo"])).'';?></li>
        <li><span class="liste">Identification ADN des parents : </span><?= (htmlspecialchars($adn)) ?></li>
        <li><span class="liste">Dysplasie de la mère : </span><?= (htmlspecialchars($dysplasie_mere)) ?></li>
        <li><span class="liste">Dysplasie du père : </span><?= (htmlspecialchars($dysplasie_pere)) ?></li>
        <li><span class="liste">Robe attendue: </span><?= (htmlspecialchars($robe)) ?></li>
        <li><span class="liste">Méthode d'élevage : </span><?= (htmlspecialchars($methode)) ?></li>
        <li><span class="liste">Test de sociabilité de la mère: </span><?= (htmlspecialchars($ts_mere)) ?></li>
        <li><span class="liste">Test de sociabilité du père: </span><?= (htmlspecialchars($ts_pere)) ?></li>
        <li><span class="liste">Nombre de femelles dans la portée : </span><?= (htmlspecialchars($chiot_f)) ?></li>
        <li><span class="liste">Nombre de mâles dans la portée : </span><?= (htmlspecialchars($chiot_m)) ?></li>
        <li><span class="liste">Chiots déjà réserver : </span><?= (htmlspecialchars($reservation)) ?></li>
        <li><span class="liste">Lettre de l'année : </span><?= (htmlspecialchars($lettre)) ?></li>
        </ul>
        </p>
      </section>
    </div>
</div>

<section class="bandeau bandeau-sm m0">
  <h1>Pedigree</h1>
</section>

<div class="container-fluid">
  <div class="row">
    <img class="img-responsive"  src="img/portee/portee-canecorso<?= $portee['id_portee'] ?>.jpg" title="" alt="" />
    </div>
</div>

<?php require_once ('includes/footer.inc.php') ?>