IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Une double relation dans une table [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aude (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 25
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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>

  2. #2
    Membre averti
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aude (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 25
    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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/07/2014, 14h17
  2. Réponses: 1
    Dernier message: 11/07/2011, 14h59
  3. Réponses: 5
    Dernier message: 15/12/2006, 17h34
  4. Réponses: 11
    Dernier message: 06/12/2005, 08h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo