Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/06/2011, 18h00   #1
Invité régulier
 
Femme alienor alienor
Inscription : avril 2011
Messages : 25
Détails du profil
Informations personnelles :
Nom : Femme alienor alienor
Localisation : France, Aude (Languedoc Roussillon)

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 25
Points : 7
Points : 7
Par défaut Une double relation dans une table

Bonjour,
Je Vous expose mon problème,
à partir d'un Base de Donnée Myql exposée http://www.flickr.com/photos/63935894@N02/
Je dois extraire les propriétaires , les locataires et leurs adresses, triés par rue

Les propriétaires et les locataires ne sont pas différenciés dans la table Administré.

L'application se présente de cette façon: un Formulaire ou l'on saisit un administré a qui on attribut une adresse. quelque soit son statut( propriétaire ou locataire)

et dans le formulaire des bâtiments on attribut un propriétaire par bâtiment que l'on choisit dans une liste qui déroule tout les habitants;
On est partit du principe qu'un propriétaire n'est pas locataire.

Le script ci dessous extrait le propriétaire d'une seule personne il est la pour prouver que c'est possible, mais c'est juste pour une seule personne;

J'espère que j'ai été claire.
Merci de m'aider

Code :
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
 
<?php
 
	include("../commun/params.inc.php");
	$IdAd="";
	$IdBat="";
	$cid="";
	$IdAdm="";
	$retour="";
	$requete="";
$IdBatiment="";
	$enreg="";
	$champs="";
	$valeur="";
	$Nom=""; 
	$Prenom="";
	$Mail="";
	$TelFixe="";
	$TelMobile="";
	$NomProp="";
	$PrenomProp="";
	$AccessCompteurs="";
	$Numero="";
	$Voie="";
	$TypeVoie="";
	if(isset($_POST["IdAdm"])){
		$IdAdm=$_POST["IdAdm"];
		$cid=mysql_connect(MYSQL_SERVER,MYSQL_LOGIN,MYSQL_PASSWORD) or die(mysql_error());
		mysql_select_db(MYSQL_DATABASE,$cid) or die(mysql_error());
		// extraction des données du locataire et du bâtiment
		$requete="select a.IdBat as IdBat,a.IdAdm as IdAdm,a.TelFixe as TelFixe,a.TelMobile as TelMobile,a.Mail as Mail,
				b.Numero as Numero,b.AccesCompteurs as AccessCompteurs,
				v.Voie as Voie,
				t.TypeVoie as TypeVoie
			from TAdministres as a,TBatiments as b,TVoies as v,TTypesVoie as t
			WHERE b.IdBatiment=a.IdBat && v.IdVoie=b.IdVoie && t.IdTypeVoie=v.IdTypeVoie
			&& IdAdm='$IdAdm';";
			$retour=mysql_query($requete,$cid)  or die(mysql_error());
			$enreg=mysql_fetch_array($retour);
			foreach($enreg as $champ=>$valeur)
				$$champ=$valeur;
		// extraction des données du propriétaire
		$requete="select a.Nom as NomProp,a.Prenom as PrenomProp
		from TAdministres as a,TBatiments as b
		where a.IdAdm=b.IdProprietaire && b.IdBatiment='$IdBat'
		;";
			$retour=mysql_query($requete,$cid)  or die(mysql_error());
			$enreg=mysql_fetch_array($retour);
			foreach($enreg as $champ=>$valeur)
				$$champ=$valeur;				
 
	}
?>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 
 
 
<title>Document sans titre</title>
 
<style type="text/css">
.calque {
	font: 14px Verdana, Geneva, sans-serif;
	color: #000;
	-moz- background-color:rgba(255,255,235,0.8);
    -moz- border-radius:10px;
	-moz-border-radius:10px;
	-moz-box-shadow: 10px 10px 8px rgba(0,0,0,0.2);
	-moz-box-shadow: 10px 10px 8px rgba(0,0,0,0.2);
	border-style:solid;
	border-width:1px;
	border-top-color:#d0d0d0;
	border-left-color:#d0d0d0;
	border-right-color:#606060;
	border-bottom-color:#606060;
	background: #CCC;
	background: #CCC;
	margin-right: auto;
	margin-left: auto;
	width: 400px;
	position:relative;
}
#form1{
	top:50px;
}
#affichage{
	top:100px;
 
}
 
 
 
</style>
<script type="text/javascript">
	function traitement(){
		if(document.getElementById("IdAdm").value!="")
			document.forms["f1"].submit();
		else
			alert("Choisissez d'abord une fiche");
	}
</script>
</head>
 
<body>
<div id="menu"></div>
<div id="form1" class="calque">
<form action="requeteAdresse.php" method="post" enctype="multipart/form-data" name="f1" id="f1">
<label>
  <div align="center">fiche recherchée  </div>
</label>
<br>
<br>
<div align="center">
 <select id="IdAdm" name="IdAdm" onchange="javascript:traitement();">
	<option value="">Choisissez une personne</option>
	<?php
		$cid=mysql_connect(MYSQL_SERVER,MYSQL_LOGIN,MYSQL_PASSWORD) or die(mysql_error());
		mysql_select_db(MYSQL_DATABASE,$cid) or die(mysql_error());
		$requete="select IdAdm,Nom,Prenom FROM TAdministres order by Nom,Prenom;";
		$retouradm=mysql_query($requete,$cid);
		 mysql_close($cid);
		    while($enreg=mysql_fetch_array($retouradm)){
			foreach($enreg as $champ=>$valeur)
				$$champ=$valeur;
				echo "<option value='$IdAdm'>$Nom $Prenom</option>";
			}
	?>
 </select>
</div>
<br>
<br>
 
</div>
</form>
</div>
<div class="calque" id="affichage">
 
	Adresse : <?php echo "$Numero $TypeVoie $Voie";?>
	<br>
	Mail : <?php echo "$Mail";?>
	<br> 
	Fixe : <?php echo "$TelFixe";?>
	<br> 
	Portable : <?php echo "$TelMobile";?>
	<br>
	Accés compteurs : <?php echo ($AccessCompteurs)?"Public":"Prive";?>
	<br>
	Propriétaire : <?php echo "$NomProp $PrenomProp";?>
	<br>
</div>
</body>
</html>
alienor50 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 21h04   #2
Invité régulier
 
Femme alienor alienor
Inscription : avril 2011
Messages : 25
Détails du profil
Informations personnelles :
Nom : Femme alienor alienor
Localisation : France, Aude (Languedoc Roussillon)

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 25
Points : 7
Points : 7
Par défaut enfin la solution

bonsoir,
Finalement j'ai la solution, ct pas si compliquée, je me suis braquée à cause de cette double relation, je vais poster le script au cas ou quelqu'un aurait le même problème. mes tables sont sur le lien dans le post précédant

Citation:
Code :
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
<!DOCTYPE HTML>
<html>
<title>propriétaire locataires adresses classés pae rues</title>
<head>
<link rel= 'stylesheet ' type= 'text/css' media= 'print' href= 'impression.css' »>
<script language="Javascript"> function imprimer(){window.print();} </script>
 
<style type="text/css">
table {
	border: 1px solid #000;
	background: #CCC;
	width: 500px;
	margin-right: auto;
	margin-left: auto;
}
tr {
	border: 1px solid #000;
}
td {
	width: 70px;
	border: 1px solid #000;
	text-align: center;
}
th {
	font: bold small-caps 12px "Arial Black", Gadget, sans-serif;
	color: #000;
	background: #FF9;
	text-align: center;
	width: 50px;
	border: 1px solid #000;
}
</style></head>
<body>
<form><p> <input id="bt" name="bouton" onclick="imprimer()" type="button"value="Imprimer cette page"> </p></form>
<div class="page">
<?php
 
include("../commun/params.inc.php"); 
$data="";
$req="";
$db="";
$sql="";
$retour="";
$Non="";
$Prenom="";
$IdBat="";
$IdAdm="";
$IdBatiment="";
$NomProp="";
$Numero="";
$TypeVoie="";
$Voie="";
$total="";
$Idvoie="";
$totgen=0;
  include("../php/menuinclude.php");
 // je me  connecte à MySQL 
        $db=mysql_connect(MYSQL_SERVER,MYSQL_LOGIN,MYSQL_PASSWORD) or die(mysql_error());
 
 
        //je sélectionne la base 
        mysql_select_db(MYSQL_DATABASE,$db) or die(mysql_error());
 
//requete des voies
 
$requete="select b.IdVoie as IdVoie,v.Voie as Voie,t.TypeVoie as TypeVoie FROM TAdministres as a,TBatiments as b,TVoies as v,TTypesVoie as t
WHERE b.IdBatiment=a.IdBat AND v.Idvoie=b.Idvoie AND t.IdTypeVoie=v.IdTypeVoie
GROUP BY IdVoie ORDER BY v.Voie;";
$retour= mysql_query($requete) or die(mysql_error());
while ($ligne=mysql_fetch_assoc($retour)){
	  foreach($ligne as $champ=>$valeur)
            $$champ=$valeur;
	// la requete SQL 
	$sql = "SELECT b.IdProprietaire as IdProprietaire,a.IdAdm as IdAdm,a.Nom AS Nom, a.Prenom AS Prenom, v.IdVoie AS IdVoie, v.Voie AS Voie, t.TypeVoie AS TypeVoie, b.Numero AS Numero
	FROM TAdministres AS a,TBatiments as b,TTypesVoie as t, TVoies as v
	WHERE a.IdBat=b.IdBatiment and b.IdVoie=v.IdVoie and v.IdTypeVoie=t.IdTypeVoie and b.IdVoie='$IdVoie'  
	ORDER BY IdVoie,Numero,Nom,Prenom;";
	$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
 
	$total=mysql_num_rows($req);	echo "<div id='page'>";
			echo "<br><p>Voie : $TypeVoie $Voie</p><br><br>";
			echo "<table>
						<tr><th>Pro</th>
								<th>Nom</th>
								<th>Prenom</th>					
								<th>Num</th>
											</tr>";  
	//la requete des propriétaires
	while($data = mysql_fetch_array($req)) { 
		foreach($data as $champ=>$valeur)
		    $$champ=$valeur;
		$r1="select nom as NomProp,Prenom as PrenomProp 
		from TAdministres 
		where IdAdm='$IdProprietaire';";
 
		  $req1 = mysql_query($r1) or die('Erreur SQL !<br>'.$r1.'<br>'.mysql_error());
		while($data1 = mysql_fetch_array($req1))  
			foreach($data1 as $champ1=>$valeur1)
			    $$champ1=$valeur1;
		// on affiche les informations de l'enregistrement en cours
		echo"
						<tr><td>$NomProp $PrenomProp</td>
								<td>$Nom</td>
								<td>$Prenom</td>					
								<td>$Numero</td>
 
						</tr>";
 
 
		$totgen+=$total;
		}
		echo "</table>";
}// fin de boucle des voies
		echo "<br><br><br>Total : $total habitant";
		echo ($total>1)?"s":"";
		"</div>";
		echo "<br><br>";
 
 
echo "<br><br>total pour toutes les voies : $totgen habitant";
echo ($totgen>1)?"s":"";
 
// on ferme la connexion à mysql 
 
 
mysql_close();
 
?> 
</div>
</body>
</html>
alienor50 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h47.


 
 
 
 
Partenaires

Hébergement Web