Affichage des des données entre deux tables

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Affichage des des données entre deux tables

Re: Affichage des des données entre deux tables

par Klimero12 » 19 juin 2019, 15:32

Re,
Je profite un peu mais j'ai encore une question.
J'ai ma liste de tireur sur ma page d’accueil. J'ai mon moteur de recherche par nom qui m'affiche les info du tireur ainsi que ces résultats s'ils ont été enregistrés
page de recherche
<?php
include_once 'dbconfig.php';

if (isset($_GET['q']) && !empty($_GET['q']))
{
  $q = htmlspecialchars($_GET['q']);
  //$articles = $DB_con->query('SELECT * FROM tireur WHERE nom LIKE "%'.$q.'%" ORDER BY id DESC');
  
  $articles = $DB_con->query('SELECT * FROM tireur LEFT JOIN pistolet ON tireur.id = pistolet.id_tireur WHERE nom LIKE "%'.$q.'%" ORDER BY id DESC');
  
}
?>

<!DOCTYPE html>
<html lang="fr-FR">
<head>
  <title>Rechercher un tireur</title>
  <meta charset= "utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="css/home.css" type="text/css"  />
  <!--<link rel="stylesheet" href="print.css" type="text/css"  />-->
</head>
	<body id="fond">
		<?php include('header.php'); ?>
		<?php include('menu.php'); ?>
			<div class="hauteur">	
				<h1>Rechercher par nom</h1>
					<div class="rechercheuser">
						<form method="GET">
							<input type="search" name="q" placeholder="Recherche...par NOM" />
							<input type="submit" value="Valider" />
						</form>
					</div>
															
						<?php if(isset($articles) && $donnees = $articles->fetch()): ?>
						
						
					<div class="rechercheuser">
						<h2>Résultat de votre recherche  : </h2><br/>
						Le <?php echo $donnees['nom']; ?>&nbsp;<?php echo $donnees['prenom']; ?><br/>
						Licence  : <?php echo $donnees['licence'];?></br>
						Adresse de messagerie: <?php echo $donnees['mail'];?></br>
						TIR <br/>
						Date du 1er tir :<?php echo $donnees['date1']; ?><br/>
						Résultat du 1er tir :<?php echo $donnees['tir1']; ?><br/>
						Date du 2eme tir :<?php echo $donnees['date2']; ?><br/>
						Résultat du 2eme tir :<?php echo $donnees['tir2']; ?><br/>
						Date du 3eme tir :<?php echo $donnees['date3']; ?><br/>
						Résultat du 3eme tir :<?php echo $donnees['tir3']; ?><br/>
						Date du 4eme tir :<?php echo $donnees['date4']; ?><br/>
						Résultat du 4eme tir :<?php echo $donnees['tir4']; ?><br/>
						Date du 5eme tir :<?php echo $donnees['date5']; ?><br/>
						Résultat du 5eme tir :<?php echo $donnees['tir5']; ?><br/>
						Date du 6eme tir :<?php echo $donnees['date6']; ?><br/>
						Résultat du 6eme tir :<?php echo $donnees['tir6']; ?><br/>
						<a href="modifier.php?number=<?php echo $donnees['id']; ?>">Modifier la fiche</a></br>
						<a href="modifiertir.php?number=<?php echo $donnees['id']; ?>">Modifier-compléter la fiche de tir</a></br>
					<!--	<a href="imprimer.php?number=<?php //echo $donnees['id']; ?>">Imprimer la fiche</a>-->
					</div>
					
		<?php endif;?>
		
			</div>
			
		<?php
				include('footer.php');
		?>
		
	</body>
</html>
Quand je fais "modifier fiche", je suis redirigé vers mon modifier.php et je peux modifier ma fiche tireur sans soucis.
Quand je fais "mofiier-compléter la fiche de tir" je suis redirigé vers modifiertir.php et avec l'aide de Siain j'ai les infos qui s'affichent si il y a des données dans les deux tables. Si un tireur est enregistr&é mais qu'il n'a pas encore de tir tout les champs sont vierges (dont 'nom' et 'prenom'
<?php
// Connexion à la base de données
include_once 'dbconfig.php';
// On récupère les donnée de l'article séléctioné      


       $reponse = $DB_con->prepare('SELECT * FROM tireur t JOIN pistolet p ON p.id_tireur = t.id WHERE t.id = ?');
	$reponse->execute(array($_GET['number']));
    
 while ($donnees = $reponse->fetch())
    {
    
?>

<!DOCTYPE html>
<html lang="fr-FR">
    <head>
        <title>Modifier une fiche tireur</title>
        <meta charset= "utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<link rel="stylesheet" href="css/home.css" type="text/css"  />
	</head>
    <body id="fond">
		<?php
			include('header.php');
			include('menu.php');
		?>
			<div>
				<h1>Modifier une fiche tir-tireur</h1>
			</div>	
<!--Formulaire avec les champs préremplis-->

				<p>	
					<form id="modifieruser" action="modifiertir_post.php" method="post">
					<label class="modifier" for="nom">Nom :</label><input id="modif" type="text" name="nom" size="50" value="<?php echo $donnees['nom'];?>"/><br/>
					<label class="modifier" for="prenom">Prénom :</label><input id="modif" type="text" name="prenom" size="50" value="<?php echo $donnees['prenom'];?>"/><br/>
					<label class="modifier" for="tir1">tir1</label><input id="modif" type="text" name="tir1" size="50" value="<?php echo $donnees['tir1'];?>"/><br/>
					<label class="modifier" for="date1">date1 :</label><input id="modif" type="date" name="date1" size="50" value="<?php echo $donnees['date1'];?>"/><br/>
					<label class="modifier" for="tir2">tir2</label><input id="modif" type="text" name="tir2" size="50" value="<?php echo $donnees['tir2'];?>"/><br/>
					<label class="modifier" for="date2">date2 :</label><input id="modif" type="date" name="date2" size="50" value="<?php echo $donnees['date2'];?>"/><br/>
					<label class="modifier" for="tir3">tir3</label><input id="modif" type="text" name="tir3" size="50" value="<?php echo $donnees['tir3'];?>"/><br/>
					<label class="modifier" for="date3">date3 :</label><input id="modif" type="date" name="date3" size="50" value="<?php echo $donnees['date3'];?>"/><br/>
					<label class="modifier" for="tir4">tir4</label><input id="modif" type="text" name="tir4" size="50" value="<?php echo $donnees['tir4'];?>"/><br/>
					<label class="modifier" for="date4">date4 :</label><input id="modif" type="date" name="date4" size="50" value="<?php echo $donnees['date4'];?>"/><br/>
					<label class="modifier" for="tir5">tir5</label><input id="modif" type="text" name="tir5" size="50" value="<?php echo $donnees['tir5'];?>"/><br/>
					<label class="modifier" for="date5">date5 :</label><input id="modif" type="date" name="date5" size="50" value="<?php echo $donnees['date5'];?>"/><br/>
					<label class="modifier" for="tir6">tir6</label><input id="modif" type="text" name="tir6" size="50" value="<?php echo $donnees['tir6'];?>"/><br/>
					<label class="modifier" for="date6">date6 :</label><input id="modif" type="date" name="date6" size="50" value="<?php echo $donnees['date6'];?>"/><br/>
					<label  class="modifier" for="id">Id :</label><input id="modif" type="text" name="id" size="50" value="<?php echo $donnees['id'];?>"/><br/>
					<input type="submit" class="button" value="VALIDER" />
				</p>
   <?php
    }
    $reponse->closeCursor();
	?>
	
	</form>
	<?php
		include('footer.php');
	?>			
		
    </body>
</html>
Merci pour votre aide
Eric

Re: Affichage des des données entre deux tables

par Klimero12 » 19 juin 2019, 15:04

Saian,
Merci de ton aide, ça marche. Je ne trouvais pas la syntaxe malgré plusieurs essais.
J'avance petit a petit.
Cordialement

Re: Affichage des des données entre deux tables

par Saian » 19 juin 2019, 11:35

Salut, faudrait peut être faire une vrai jointure et pas juste un where tireur.id = ?
SELECT * FROM tireur t JOIN pistolet p ON p.id_tireur = t.id WHERE t.id = ?

Affichage des des données entre deux tables

par Klimero12 » 19 juin 2019, 09:54

Bonjour,
Je sollicite une nouvelle fois la communauté pour poursuivre ma formation.
J'ai un projet de gestion d'un stand de tir.
J'ai crée une base de donnée "tir" qui comprend deux tables "tireur" et "pistolet"
Structure de la table `tireur`
--

DROP TABLE IF EXISTS `tireur`;
CREATE TABLE IF NOT EXISTS `tireur` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  
`nom` varchar(20) NOT NULL,
  `prenom` varchar(20) NOT NULL,
  `ville` varchar(40) NOT NULL,
  `licence` varchar(7) NOT NULL,
  `mail` varchar(50) NOT NULL,
  
PRIMARY KEY (`id`)
) 

Structure de la table `pistolet`
--

DROP TABLE IF EXISTS `pistolet`;
CREATE TABLE IF NOT EXISTS `pistolet` (
  `idpist` int(11) NOT NULL AUTO_INCREMENT,
  
`id_tireur` int(11) NOT NULL,
  `tir1` int(11) NOT NULL,
  `date1` date NOT NULL,
  `tir2` int(11) NOT NULL,
  `date2` date NOT NULL,
  `tir3` int(11) NOT NULL,
  `date3` date NOT NULL,
  `tir4` int(11) NOT NULL,
  `date4` date NOT NULL,
  `tir5` int(11) NOT NULL,
  `date5` date NOT NULL,
  `tir6` int(11) NOT NULL,
  `date6` date NOT NULL,

  PRIMARY KEY (`idfonc`),
  KEY `id_tireur` (`id_tireur`)
)
J'ai crée une vue relationnelle entre c'est deux table entre pistolet.id_tireur et tireur.id.
J'ai créé un formulaire de recherche par nom de tireur qui m'affiche les infos des deux tables (si la table "pistolet est videil n'affiche rien)
<?php
include_once 'dbconfig.php';

if (isset($_GET['q']) && !empty($_GET['q']))
{
  $q = htmlspecialchars($_GET['q']);
  //$articles = $DB_con->query('SELECT * FROM tireur WHERE nom LIKE "%'.$q.'%" ORDER BY id DESC');
  
  $articles = $DB_con->query('SELECT * FROM tireur LEFT JOIN pistolet ON tireur.id = pistolet.id_tireur WHERE nom LIKE "%'.$q.'%" ORDER BY id DESC');
  
}
?>

<!DOCTYPE html>
<html lang="fr-FR">
<head>
  <title>Rechercher un tireur</title>
  <meta charset= "utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="css/home.css" type="text/css"  />
  <!--<link rel="stylesheet" href="print.css" type="text/css"  />-->
</head>
	<body id="fond">
		<?php include('header.php'); ?>
		<?php include('menu.php'); ?>
			<div class="hauteur">	
				<h1>Rechercher par nom</h1>
					<div class="rechercheuser">
						<form method="GET">
							<input type="search" name="q" placeholder="Recherche...par NOM" />
							<input type="submit" value="Valider" />
						</form>
					</div>
															
						<?php if(isset($articles) && $donnees = $articles->fetch()): ?>
						
						
					<div class="rechercheuser">
						<h2>Résultat de votre recherche  : </h2><br/>
						Le <?php echo $donnees['nom']; ?>&nbsp;<?php echo $donnees['prenom']; ?>&nbsp;<?php echo $donnees['ville']; ?><br/>
						Licence  : <?php echo $donnees['licence'];?></br>
						Adresse de messagerie: <?php echo $donnees['mail'];?></br>
						TIR <br/>
						Date du 1er tir :<?php echo $donnees['date1']; ?><br/>
						Résultat du 1er tir :<?php echo $donnees['tir1']; ?><br/>
						Date du 2eme tir :<?php echo $donnees['date2']; ?><br/>
						Résultat du 2eme tir :<?php echo $donnees['tir2']; ?><br/>
						Date du 3eme tir :<?php echo $donnees['date3']; ?><br/>
						Résultat du 3eme tir :<?php echo $donnees['tir3']; ?><br/>
						Date du 4eme tir :<?php echo $donnees['date4']; ?><br/>
						Résultat du 4eme tir :<?php echo $donnees['tir4']; ?><br/>
						Date du 5eme tir :<?php echo $donnees['date5']; ?><br/>
						Résultat du 5eme tir :<?php echo $donnees['tir5']; ?><br/>
						Date du 6eme tir :<?php echo $donnees['date6']; ?><br/>
						Résultat du 6eme tir :<?php echo $donnees['tir6']; ?><br/>
						<a href="modifier.php?number=<?php echo $donnees['id']; ?>">Modifier la fiche</a></br>
						<a href="modifiertir.php?number=<?php echo $donnees['id']; ?>">Modifier-compléter la fiche de tir</a></br>
					<!--	<a href="imprimer.php?number=<?php //echo $donnees['id']; ?>">Imprimer la fiche</a>-->
					</div>
					
		<?php endif;?>
		
			</div>
			
		<?php
				include('footer.php');
		?>
		
	</body>
</html>
En bas de page je peux modifier la fiche tireur ou compléter le fiche de tir.
Modifier la fiche tireur fonctionne sans soucis par contre quand je veux compléter le fiche de tir modifiertir.php mon formulaire m'affiche bien l'identité du tireur issu de la recherche mais il m'affiche les tirs de la ligne 1 de ma table pistolet,
mon formulaire modifiertir.php
<?php
// Connexion à la base de données
include_once 'dbconfig.php';
// On récupère les donnée de l'article sélectionné      
    $reponse = $DB_con->prepare('SELECT * FROM tireur, pistolet WHERE tireur.id = ?');
	$reponse->execute(array($_GET['number']));
    
  while ($donnees = $reponse->fetch())
    {
?>

<!DOCTYPE html>
<html lang="fr-FR">
    <head>
        <title>Modifier une fiche tireur</title>
        <meta charset= "utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<link rel="stylesheet" href="css/home.css" type="text/css"  />
	</head>
    <body id="fond">
		<?php
			include('header.php');
			include('menu.php');
		?>
			<div>
				<h1>Modifier une fiche tir-tireur</h1>
			</div>	
<!--Formulaire avec les champs préremplis-->

				<p>	
					<form id="modifieruser" action="modifiertir_post.php" method="post">
					<label class="modifier" for="nom">Nom :</label><input id="modif" type="text" name="nom" size="50" value="<?php echo $donnees['nom'];?>"/><br/>
					<label class="modifier" for="prenom">Prénom :</label><input id="modif" type="text" name="prenom" size="50" value="<?php echo $donnees['prenom'];?>"/><br/>
					<label class="modifier" for="tir1">tir1</label><input id="modif" type="text" name="tir1" size="50" value="<?php echo $donnees['tir1'];?>"/><br/>
					<label class="modifier" for="date1">date1 :</label><input id="modif" type="date" name="date1" size="50" value="<?php echo $donnees['date1'];?>"/><br/>
					<label class="modifier" for="tir2">tir2</label><input id="modif" type="text" name="tir2" size="50" value="<?php echo $donnees['tir2'];?>"/><br/>
					<label class="modifier" for="date2">date2 :</label><input id="modif" type="date" name="date2" size="50" value="<?php echo $donnees['date2'];?>"/><br/>
					<label class="modifier" for="tir3">tir3</label><input id="modif" type="text" name="tir3" size="50" value="<?php echo $donnees['tir3'];?>"/><br/>
					<label class="modifier" for="date3">date3 :</label><input id="modif" type="date" name="date3" size="50" value="<?php echo $donnees['date3'];?>"/><br/>
					<label class="modifier" for="tir4">tir4</label><input id="modif" type="text" name="tir4" size="50" value="<?php echo $donnees['tir4'];?>"/><br/>
					<label class="modifier" for="date4">date4 :</label><input id="modif" type="date" name="date4" size="50" value="<?php echo $donnees['date4'];?>"/><br/>
					<label class="modifier" for="tir5">tir5</label><input id="modif" type="text" name="tir5" size="50" value="<?php echo $donnees['tir5'];?>"/><br/>
					<label class="modifier" for="date5">date5 :</label><input id="modif" type="date" name="date5" size="50" value="<?php echo $donnees['date5'];?>"/><br/>
					<label class="modifier" for="tir6">tir6</label><input id="modif" type="text" name="tir6" size="50" value="<?php echo $donnees['tir6'];?>"/><br/>
					<label class="modifier" for="date6">date6 :</label><input id="modif" type="date" name="date6" size="50" value="<?php echo $donnees['date6'];?>"/><br/>
					<label  class="modifier" for="id">Id :</label><input id="modif" type="text" name="id" size="50" value="<?php echo $donnees['id'];?>"/><br/>
					<input type="submit" class="button" value="VALIDER" />
				</p>
   <?php
    } 
    $reponse->closeCursor();
	?>
					</form>
	<?php
		include('footer.php');
	?>			
		
    </body>
</html>
et mon code modifiertir_post.php
<?php
include_once 'dbconfig.php';

$reponse = $DB_con->prepare('UPDATE `pistolet` SET 
`tir1`= :Ntir1,`date1`= :Ndate1,`tir2`= :Ntir2,`date2`= :Ndate2,`tir3`= :Ntir3,`date3`= :Ndate3,
`tir4`= :Ntir4,`date4`= :Ndate4,`tir5`= :Ntir5, `date5`= :Ndate5,`tir6`= :Ntir6,`date6`= :Ndate6 
WHERE `id_tireur` = :Nid ');

$reponse->execute(array('Ntir1'         => $_POST['tir1'],
                       'Ndate1'        => $_POST['date1'],
                       'Ntir2'        => $_POST['tir2'],
                       'Ndate2'          => $_POST['date2'],
                       'Ntir3'          => $_POST['tir3'],
					   'Ndate3'          => $_POST['date3'],
					   'Ntir4'         => $_POST['tir4'],
                       'Ndate4'        => $_POST['date4'],
                       'Ntir5'        => $_POST['tir5'],
                       'Ndate5'          => $_POST['date5'],
                       'Ntir6'          => $_POST['tir6'],
					   'Ndate6'          => $_POST['date6'],
                       'Nid'          => $_POST['id'])); 
	
$reponse->closeCursor();
 
 header('Location: index.php');     
?>
J’espère avoir été clair.
Merci de votre aide
Eric