[RESOLU] PHP / MySQL

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 : [RESOLU] PHP / MySQL

Re: [RESOLU] PHP / MySQL

par Spols » 19 mars 2020, 11:09

pour info:

tu peux utiliser les clauses GROUP BY et GROUP_CONCAT pour obtenir chaque film en une ligne

https://stackoverflow.com/questions/149 ... s-in-mysql

Re: [RESOLU] PHP / MySQL

par slefevre77 » 16 mars 2020, 00:25

Merci pour ton aide.

Re: PHP / MySQL

par or 1 » 15 mars 2020, 21:59

Re: PHP / MySQL

par slefevre77 » 15 mars 2020, 21:45

Bon, je m'en suis sorti comme cela :
<?php
$id = "";
$film = "";
$acteur = "";
$nationalite = "";

$sql_acteurs = "SELECT films.id,films.film,acteurs.acteur FROM films,filmsacteurs,acteurs WHERE films.film = 'Stargate SG-1' AND filmsacteurs.idfilm = films.id AND filmsacteurs.idacteur = acteurs.id";
$sql_nationalites = "SELECT nationalites.nationalite FROM films,filmsnationalites,nationalites WHERE films.film = 'Stargate SG-1' AND filmsnationalites.idfilm = films.id AND filmsnationalites.idnationalite = nationalites.id";
echo "$sql_acteurs <br/>";
$result_acteurs = $condbi->query($sql_acteurs);
	while($data_acteurs = $result_acteurs->fetch_assoc()) {
		$id = $data_acteurs['id'];
		$film = $data_acteurs['film'];
		$acteurs .= $data_acteurs['acteur'];
		$acteurs = "$acteurs, ";
	}
echo "$sql_nationalites <br/>";
$result_nationalites = $condbi->query($sql_nationalites);
	while($data_nationalites = $result_nationalites->fetch_assoc()) {
		$nationalite .= $data_nationalites['nationalite'];
		$nationalite = "$nationalite, ";
	}
$acteurs = substr($acteurs,0,-2);
$nationalite = substr($nationalite,0,-2);
?>
Id : <?php echo $id; ?><br/>
Film : <?php echo $film; ?><br/>
Acteurs : <?php echo $acteurs; ?><br/>
Nationalit&eacute; : <?php echo $nationalite; ?><br/>
Ce qui donne :

SELECT films.id,films.film,acteurs.acteur FROM films,filmsacteurs,acteurs WHERE films.film = 'Stargate SG-1' AND filmsacteurs.idfilm = films.id AND filmsacteurs.idacteur = acteurs.id
SELECT nationalites.nationalite FROM films,filmsnationalites,nationalites WHERE films.film = 'Stargate SG-1' AND filmsnationalites.idfilm = films.id AND filmsnationalites.idnationalite = nationalites.id
Id : 1
Film : Stargate SG-1
Acteurs : Jack O'Neill, Samantha Carter, Dr. Daniel Jackson
Nationalité : U.S.A., Canada


Si quelqu'un à une idée pour améliorer la façon de faire où le code, j'aimerais faire au mieux et ne pas faire du mauvais codage !

Re: PHP / MySQL

par slefevre77 » 15 mars 2020, 20:04

J'ai fait comme tu m'as dit (enfin je pense) :

Dans des boucles :

$acteurs .= $data_acteurs['acteur'];
$nationalite .= $data_nationalites['nationalite'];

$sql_acteurs = "SELECT films.id,films.film,acteurs.acteur FROM films,filmsacteurs,acteurs WHERE films.film = 'Stargate SG-1' AND filmsacteurs.idfilm = films.id AND filmsacteurs.idacteur = acteurs.id";
$sql_nationalites = "SELECT nationalites.nationalite FROM films,filmsnationalites,nationalites WHERE films.film = 'Stargate SG-1' AND filmsnationalites.idfilm = films.id AND filmsnationalites.idnationalite = nationalites.id";
echo "$sql_acteurs <br/>";
$result_acteurs = $condbi->query($sql_acteurs);
	while($data_acteurs = $result_acteurs->fetch_assoc()) {
		$id = $data_acteurs['id'];
		$film = $data_acteurs['film'];
		$acteurs .= $data_acteurs['acteur'];
	}
echo "$sql_nationalites <br/>";
$result_nationalites = $condbi->query($sql_nationalites);
	while($data_nationalites = $result_nationalites->fetch_assoc()) {
		$nationalite .= $data_nationalites['nationalite'];
	}
?>
Id : <?php echo $id; ?><br/>
Film : <?php echo $film; ?><br/>
Acteurs : <?php echo $acteurs; ?><br/>
Nationalit&eacute; : <?php echo $nationalite; ?><br/>

Re: PHP / MySQL

par or 1 » 15 mars 2020, 19:54

comment tu as fait pour concatener des chaines, les noms des acteurs ?

Re: PHP / MySQL

par slefevre77 » 15 mars 2020, 19:04

Ok pour plusieurs requêtes, par contre comment faire pour mettre un séparateur entre les "acteurs" ? Genre : ", ".

Re: PHP / MySQL

par or 1 » 15 mars 2020, 17:06

mieux vaux faire plus de requêtes. une manière simple : une pour les infos du film, une pour les nationalités du film, une pour les acteurs du film.

Re: PHP / MySQL

par slefevre77 » 15 mars 2020, 09:14

J'ai fait ce que tu m'avais suggéré pour les nationalités, mais du coup j'ai des résultats en double.

Voici mon code :
<?php
$sql = "SELECT films.id,films.film,acteurs.acteur,nationalites.nationalite FROM films,filmsacteurs,acteurs,filmsnationalites,nationalites WHERE films.film = 'Stargate SG-1' AND filmsacteurs.idfilm = films.id AND filmsacteurs.idacteur = acteurs.id AND filmsnationalites.idfilm = films.id AND filmsnationalites.idnationalite = nationalites.id";
$result = $condbi->query($sql);
	while($data = $result->fetch_assoc()) {
		$id = $data['id'];
		$film = $data['film'];
		$acteurs .= $data['acteur'];
		$nationalite .= $data['nationalite'];
	}
?>
Id : <?php echo $id; ?><br/>
Film : <?php echo $film; ?><br/>
Acteurs : <?php echo $acteurs; ?><br/>
Nationalit&eacute; : <?php echo $nationalite; ?>
Et voici le résultat :

Id : 1
Film : Stargate SG-1
Acteurs : Jack O'NeillJack O'NeillSamantha CarterSamantha CarterDr. Daniel JacksonDr. Daniel Jackson
Nationalité : U.S.A.CanadaU.S.A.CanadaU.S.A.Canada


J'ai fait une erreur quelque part ?

Re: PHP / MySQL

par slefevre77 » 15 mars 2020, 08:46

Bonjour,

Cela fonctionne, merci beaucoup !

J'obtiens le résultat sur une ligne.

Id : 1
Film : Stargate SG-1
Acteurs : Jack O'NeillSamantha CarterDr. Daniel Jackson
Nationalité : USA

Par contre comment faire pour mettre un séparateur entre les "acteurs" ? Genre : ", ".

Re: PHP / MySQL

par slefevre77 » 15 mars 2020, 01:08

Merci, je vais tester demain.

Re: PHP / MySQL

par or 1 » 15 mars 2020, 00:48

$acteurs = "";
while (le resultat de la requete){
$acteurs .= $variable['acteur'];
}
echo $acteurs;

Re: PHP / MySQL

par slefevre77 » 14 mars 2020, 23:51

Bonsoir, ne serait-ce que pour ne pas rester dans l'ignorance je souhaite savoir comment faire. 😀

Re: PHP / MySQL

par or 1 » 14 mars 2020, 20:17

à quoi cela servirait d'avoir une seule ligne pour le résultat de la requête ?
il est tout à fait possible d'afficher dans une page html une seule ligne avec le résultat d'une requête qui en retourne plusieurs.

Re: PHP / MySQL

par slefevre77 » 14 mars 2020, 18:31

LOL, c'est juste pour l'exemple, j'aime bien Stargate SG-1 !

Sinon quelqu'un peut m'aider pour ma requête ?