rss
Hebergeur gratuit php mysqlPlus
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

PHP/MySql: requete sur plusieurs tables

tonguim, le jeudi 22 juillet 2004 à 17:43:50
Le code suivant ne genere aucune erreur.

1- Je fais une requete sur 2 tables; chacune des tables contient un champ "matricule". Il me
semble qu'il y'a une confusion a l'affichage du matricule. Comment puis preciser le matricule
que je voudrai afficher en fonction de la table qui le contient?

2- J'affiche ensuite les enregistrements sous forme de tableau: le tableau est affiche 4 fois
de suite; je ne sais pourquoi.

Merci a ceux qui voudront bien m'aider.



<?php // ligne 1
{

$host = "localhost"; // ligne 4
$user = "root"; // ligne 5
$passwd = ""; // ligne 6
$dataB = "annuaireUo"; //ligne 7: chemin de la base de donnees
// ligne 8
$connBD = mysql_connect ($host, $user, $passwd); //ligne 9: connection au serveur MySql or die("Erreur de connection ".mysql_error())

mysql_select_db ($dataB, $connBD); // ligne 11: connection a la BD or die("Erreur de selection ".mysql_error())
$InsertionPersonnel = "insert into personnel (matricule, nom, prenom, sexe, profession, email, adresse, telDomicile, telMobile, grade ) VALUES ('".$_POST['matricule']."', '".$_POST['nom']."', '".$_POST['prenom']."', '".$_POST['sexe']."', '".$_POST['profession']."', '".$_POST['email']."', '".$_POST['adresse']."', '".$_POST['telDomicile']."', '".$_POST['telMobile']."', '".$_POST['grade']."')"; // insertion des donnes dans la BD personnel

$varcodePoste = $_POST['matricule'].$_POST['telPoste'];
$InsertionPosteTravail = "insert into postedetravail (codePoste, telPoste, codeService, matricule) values ('".$varcodePoste."', '".$_POST['telPoste']."', '".$_POST['codeServ']."', '".$_POST['matricule']."')"; // insertion des donnes dans la BD poste de travail

mysql_query ($InsertionPersonnel);
mysql_query ($InsertionPosteTravail);
//mysql_close(); // ligne 19
}
//////////////////////////////////////// affichage des enregistrements dans un tableau ////////////////////////////////

//$requete = "select * from personnel"; //selection de tous les enregistrements de la table personnel
//$sql_query2 = "select * from postedetravail"; //selection de tous les enregistrements de la table postedetravail ligne 24

$requete ="select
personnel.matricule,
personnel.grade,
personnel.nom,
personnel.prenom,
personnel.sexe,
personnel.profession,
personnel.email,
personnel.telDomicile,
personnel.telMobile,
postedetravail.codePoste,
postedetravail.telPoste,
postedetravail.codeService,
postedetravail.matricule

from personnel, postedetravail";

$result = mysql_query($requete); //ligne 42

//<!--<table> -->// ligne 44
echo "<table border = '1' bordercolor = '#000080'>";
echo '<tr>
<td><b>Matricule</b></td>
<td><b>Grade</b></td>
<td><b>Nom</b></td>
<td><b>Prenom</b></td>
<td><b>Sexe</b></td>
<td><b>Profession</b></td>
<td><b>E-mail</b></td>
<td><b>Téléphone dom</b></td>
<td><b>Téléphone mob</b></td>
<td><b>CodePoste</b></td>
</tr>';
$i=0;
While($row=mysql_fetch_array($result)) //ligne 59
{
if ($i%2==0)
$couleur='#dfdfdf';
else
$couleur='#ebebeb';
$i++; //ligne 65
echo'
<tr>
<td bgcolor="'.$couleur.'">'.$row['matricule'].' </td>
<td bgcolor="'.$couleur.'">'.$row['grade'].' </td>
<td bgcolor="'.$couleur.'">'.$row['nom'].'</td>
<td bgcolor="'.$couleur.'">'.$row['prenom'].' </td>
<td bgcolor="'.$couleur.'">'.$row['sexe'].'</td>
<td bgcolor="'.$couleur.'">'.$row['profession'].'</td>
<td bgcolor="'.$couleur.'">'.$row['email'].'</td>
<td bgcolor="'.$couleur.'">'.$row['telDomicile'].'</td>
<td bgcolor="'.$couleur.'">'.$row['telMobile'].'</td>
<td bgcolor="'.$couleur.'">'.$row['codePoste'].'</td>
</tr>';
}
echo "</table>";
mysql_close(); //ligne 81
?>
Répondre à tonguim  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
JSS, le jeudi 22 juillet 2004 à 18:21:52
bonjour,

d'apres moi pour 1 et 2 :

from personnel, postedetravail";

un peu avant la ligne 42

ajoute where postedetravail.matricule = personnel.matricule


JSS.j'ai.bon.la?
Répondre à JSS

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
tonguim, le jeudi 22 juillet 2004 à 18:42:35
J'essaie, et je te fais le rapport.
Répondre à tonguim

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
tonguim, le vendredi 23 juillet 2004 à 10:26:00
Merci Jss; j'ai testé et ça marche.
Répondre à tonguim

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
JSS, le vendredi 23 juillet 2004 à 10:56:05
Mais De Rien

JSS.oui.j'ai.bon.là.:-)
Répondre à JSS

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
tonguim, le vendredi 23 juillet 2004 à 21:14:03
Bonjour,

je voudrais effectuer une requete sur 4 tables, et voudrai afficher le resultat de la
requete dans un seul tableaux.

J'ai pu realiser une jointure avec 2 tables, mais ait des problemes pour realiser une
jointure entre 4 differentes tables.

Mes tables

table personnel(matricule varchar (10) not null,
nom varchar (30) not null,
prenom varchar (30) not null,
sexe varchar (30) not null,
profession varchar (40) not null,
email varchar (20) not null,
adresse varchar (40),
telDomicile varchar (16),
telPhoto varchar (16),
grade varchar (20), primary key(matricule))

table postedetravail(codePoste varchar(10),
telPoste varchar(10),
codeService varchar(10),
matricule(5),
primary key (codePoste))

table direction (codeDir varchar (10) not null,
nomDir varchar (50) primary key (codeDir))

table service (codeService varchar (10) not null,
nomService varchar (50) not null,
codeDir varchar (10),
primary key (codeService))


mon code


<?php // ligne 1
{

$host = "localhost"; // ligne 4
$user = "root"; // ligne 5
$passwd = ""; // ligne 6
$dataB = "annuaireUo"; //ligne 7: chemin de la base de donnees
// ligne 8
$connBD = mysql_connect ($host, $user, $passwd); //ligne 9: connection au serveur MySql or die("Erreur de connection ".mysql_error())

mysql_select_db ($dataB, $connBD); // ligne 11: connection a la BD or die("Erreur de selection ".mysql_error())
$InsertionPersonnel = "insert into personnel (matricule, nom, prenom, sexe, profession, email, adresse, telDomicile, telMobile, grade ) VALUES ('".$_POST['matricule']."', '".$_POST['nom']."', '".$_POST['prenom']."', '".$_POST['sexe']."', '".$_POST['profession']."', '".$_POST['email']."', '".$_POST['adresse']."', '".$_POST['telDomicile']."', '".$_POST['telMobile']."', '".$_POST['grade']."')"; // insertion des donnes dans la BD personnel

$varcodePoste = $_POST['matricule'].$_POST['telPoste'];
$InsertionPosteTravail = "insert into postedetravail (codePoste, telPoste, codeService, matricule) values ('".$varcodePoste."', '".$_POST['telPoste']."', '".$_POST['codeServ']."', '".$_POST['matricule']."')"; // insertion des donnes dans la BD poste de travail

$InsertionDirection = "insert into direction (codedir, nomdir) values ('".$_POST['codeDir']."', '".$_POST['nomDir']."')"; // insertion des donnes dans la BD direction
$InsertionService = "insert into service (codeService, nomService, codeDir, matricule) values ('".$_POST['codeServ']."', '".$_POST['nomServ']."', '".$_POST['matricule']."')"; // insertion des donnes dans la BD direction

mysql_query ($InsertionPersonnel);
mysql_query ($InsertionPosteTravail);
mysql_query ($InsertionDirection);
mysql_query ($InsertionService);

//mysql_close(); // ligne 19
}
//////////////////////////////////////// affichage des enregistrements dans un tableau ////////////////////////////////

//$requete = "select * from personnel"; //selection de tous les enregistrements de la table personnel
//$sql_query2 = "select * from postedetravail"; //selection de tous les enregistrements de la table postedetravail ligne 30

$requete ="select
personnel.matricule,
personnel.grade,
personnel.nom,
personnel.prenom,
personnel.sexe,
personnel.profession,
personnel.email,
personnel.telDomicile,
personnel.telMobile,
postedetravail.codePoste,
postedetravail.telPoste,
postedetravail.codeService,
postedetravail.matricule
direction.nomDir,
service.nomService,

from personnel, postedetravail, direction, service where postedetravail.matricule = personnel.matricule AND service.matricule = personnel.matricule AND direction.codeDir = service.codeDir";

$result = mysql_query($requete); //ligne 51

//<!--<table> -->// ligne 53
echo "<table border = '1' bordercolor = '#000080'>";
echo '<tr>
<td><b>Matricule</b></td>
<td><b>Grade</b></td>
<td><b>Nom</b></td>
<td><b>Prenom</b></td>
<td><b>Sexe</b></td>
<td><b>Profession</b></td>
<td><b>E-mail</b></td>
<td><b>Téléphone dom</b></td>
<td><b>Téléphone mob</b></td>
<td><b>CodePoste</b></td>
</tr>';
$i=0;
While($row=mysql_fetch_array($result)) //ligne 68
{
if ($i%2==0)
$couleur='#dfdfdf';
else
$couleur='#ebebeb';
$i++; //ligne 74
echo'
<tr>
<td bgcolor="'.$couleur.'">'.$row['matricule'].' </td>
<td bgcolor="'.$couleur.'">'.$row['grade'].' </td>
<td bgcolor="'.$couleur.'">'.$row['nom'].'</td>
<td bgcolor="'.$couleur.'">'.$row['prenom'].' </td>
<td bgcolor="'.$couleur.'">'.$row['sexe'].'</td>
<td bgcolor="'.$couleur.'">'.$row['profession'].'</td>
<td bgcolor="'.$couleur.'">'.$row['email'].'</td>
<td bgcolor="'.$couleur.'">'.$row['telDomicile'].'</td>
<td bgcolor="'.$couleur.'">'.$row['telMobile'].'</td>
<td bgcolor="'.$couleur.'">'.$row['codePoste'].'</td>
</tr>';
}
echo "</table>";
mysql_close(); //ligne 91
?>
Répondre à tonguim

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
ric, le samedi 24 juillet 2004 à 10:00:22
Je suppose que personnel.matricule est identique à postedetravail.matricule. Si oui, attention à la cohérence des types VARCHAR(10) et (5)
$requete ="SELECT
personnel.matricule,
personnel.grade,
personnel.nom,
personnel.prenom,
personnel.sexe,
personnel.profession,
personnel.email,
personnel.telDomicile,
personnel.telMobile,
postedetravail.codePoste,
postedetravail.telPoste,
postedetravail.codeService,
postedetravail.matricule ??? identique à personnel.matricule
direction.nomDir,
service.nomService,

FROM personnel, postedetravail, direction, service
WHERE personnel.matricule = postedetravail.matricule
AND service.matricule = personnel.matricule ??? service.matricule n'existe pas
AND service.codeService = postedetravail.codeService
AND direction.codeDir = service.codeDir"
;
Utilise des MAJUSCULES, cela facilite le lecture.
Répondre à ric

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
tonguim, le lundi 26 juillet 2004 à 15:39:16
L'exécution du code renvoie l'erreur suivante:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-7\www\annuaireuo\enregbd11.php on line 71

la ligne 71 est celle ci:

While($row=mysql_fetch_array($result))

ce qui signifie que l'erreur est générée par la requête qui se fait plus haut.
Répondre à tonguim

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
ric, le lundi 26 juillet 2004 à 18:38:56
Pour maximiser vos chances d'obtenir des réponses à votre message veuillez s'il vous plaît :
Faire usage de formules de politesse (Bonjour, merci, SVP)

Bonjour
Prends l'habitude quand tu as ce message d'afficher la requête pour vérifier sa syntaxe et essaie là dans PhpMyAdmin.
Répondre à ric

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
tonguim, le mardi 27 juillet 2004 à 11:07:13
Bonjour,

merci pour tous vos conseils, que j'ai applique. Maintenant, le code ne genere aucune erreur;
toutefois, il ne produit pas le resultat escompte: l'affichage des enregistrements.

Pouvez-vous s'il vous plait me dire pourquoi, et comment puis je resoudre ce probleme?

======

<?php // ligne 1
{

$host = "localhost"; // ligne 4
$user = "root"; // ligne 5
$passwd = ""; // ligne 6
$dataB = "annuaireUo"; //ligne 7: chemin de la base de donnees
// ligne 8
$connBD = mysql_connect ($host, $user, $passwd); //ligne 9: connection au serveur MySql or die("Erreur de connection ".mysql_error())

mysql_select_db ($dataB, $connBD); // ligne 11: connection a la BD or die("Erreur de selection ".mysql_error())
$InsertionPersonnel = "insert into personnel (matricule, nom, prenom, sexe, profession, email, adresse, telDomicile, telMobile, grade) VALUES ('".$_POST['matricule']."', '".$_POST['nom']."', '".$_POST['prenom']."', '".$_POST['sexe']."', '".$_POST['profession']."', '".$_POST['email']."', '".$_POST['adresse']."', '".$_POST['telDomicile']."', '".$_POST['telMobile']."', '".$_POST['grade']."')"; // insertion des donnes dans la BD personnel

$varcodePoste = $_POST['matricule'].$_POST['telPoste']; //concatenation du matricule et du num de tel du poste de travail

$InsertionPosteTravail = "insert into postedetravail (codePoste, telPoste, codeService, matricule) values ('".$varcodePoste."', '".$_POST['telPoste']."', '".$_POST['codeServ']."', '".$_POST['matricule']."')"; // insertion des donnes dans la BD poste de travail

$InsertionDirection = "insert into direction (codeDir, nomDir) values ('".$_POST['codeDir']."', '".$_POST['nomDir']."')"; // insertion des donnes dans la BD direction ligne 18
$InsertionService = "insert into service (codeService, nomService, codeDir, matricule) values ('".$_POST['codeServ']."', '".$_POST['nomServ']."', '".$_POST['matricule']."')"; // insertion des donnes dans la BD direction

mysql_query ($InsertionPersonnel);
mysql_query ($InsertionPosteTravail);
mysql_query ($InsertionDirection);
mysql_query ($InsertionService);

//mysql_close(); // ligne 26
}
//////////////////////////////////////// affichage des enregistrements dans un tableau ////////////////////////////////

//$requete = "select * from personnel"; //selection de tous les enregistrements de la table personnel
//$sql_query2 = "select * from postedetravail"; //selection de tous les enregistrements de la table postedetravail ligne 31

$requete ="SELECT
personnel.matricule,
personnel.grade,
personnel.nom,
personnel.prenom,
personnel.sexe,
personnel.profession,
personnel.email,
personnel.telDomicile,
personnel.telMobile,
postedetravail.codePoste,
postedetravail.telPoste,
postedetravail.codeService,
postedetravail.matricule,
direction.nomDir,
service.nomService

FROM personnel

INNER JOIN postedetravail ON postedetravail.matricule = personnel.matricule
INNER JOIN service ON service.codeService = postedetravail.codeService
INNER JOIN direction ON direction.codeDir = service.codeDir";

$result = mysql_query($requete) or die (mysql_error()); //ligne 56

//<!--<table> -->// ligne 58
echo "<table border = '1' bordercolor = '#000080'>";
echo '<tr>
<td><b>Matricule</b></td>
<td><b>Grade</b></td>
<td><b>Nom</b></td>
<td><b>Prenom</b></td>
<td><b>Sexe</b></td>
<td><b>Profession</b></td>
<td><b>E-mail</b></td>
<td><b>Téléphone dom</b></td>
<td><b>Téléphone mob</b></td>
<td><b>CodePoste</b></td>
<td><b>Direction</b></td>
<td><b>Service</b></td>
</tr>';
$i=0;
While($row=mysql_fetch_array($result)) //ligne 73
{
if ($i%2==0)
$couleur='#dfdfdf';
else
$couleur='#ebebeb';
$i++; //ligne 79
echo'
<tr>
<td bgcolor="'.$couleur.'">'.$row['matricule'].' </td>
<td bgcolor="'.$couleur.'">'.$row['grade'].' </td>
<td bgcolor="'.$couleur.'">'.$row['nom'].'</td>
<td bgcolor="'.$couleur.'">'.$row['prenom'].' </td>
<td bgcolor="'.$couleur.'">'.$row['sexe'].'</td>
<td bgcolor="'.$couleur.'">'.$row['profession'].'</td>
<td bgcolor="'.$couleur.'">'.$row['email'].'</td>
<td bgcolor="'.$couleur.'">'.$row['telDomicile'].'</td>
<td bgcolor="'.$couleur.'">'.$row['telMobile'].'</td>
<td bgcolor="'.$couleur.'">'.$row['codePoste'].'</td>
<td bgcolor="'.$couleur.'">'.$row['nomDir'].'</td>
<td bgcolor="'.$couleur.'">'.$row['nomService'].'</td>
</tr>';
}
echo "</table>";
//mysql_free_result($result);
mysql_close(); //ligne 96
?>
Répondre à tonguim

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
ric, le mardi 27 juillet 2004 à 17:09:50
Bonjour
$requete ="SELECT 
personnel.matricule, personnel.grade, personnel.nom, personnel.prenom, 
personnel.sexe, personnel.profession, personnel.email, personnel.telDomicile, personnel.telMobile, 
postedetravail.codePoste, postedetravail.telPoste, postedetravail.codeService, postedetravail.matricule, 
direction.nomDir, 
service.nomService 
FROM personnel, postedetravail, direction, service
WHERE postedetravail.matricule = personnel.matricule 
AND service.codeService = postedetravail.codeService 
AND direction.codeDir = service.codeDir"; 
C'est comme cela que je vois ta requête, d'après tes tables.
Mais explique exactement ce que tu veux extraire de ta base.
<td bgcolor="'.$couleur.'">'.$row[matricule].' </td> 
<td bgcolor="'.$couleur.'">'.$row[grade].' </td> 
<td bgcolor="'.$couleur.'">'.$row[nom].'</td> 
<td bgcolor="'.$couleur.'">'.$row[prenom].' </td> 
<td bgcolor="'.$couleur.'">'.$row[sexe].'</td> 
<td bgcolor="'.$couleur.'">'.$row[profession].'</td> 
<td bgcolor="'.$couleur.'">'.$row[email].'</td> 
<td bgcolor="'.$couleur.'">'.$row[telDomicile].'</td> 
<td bgcolor="'.$couleur.'">'.$row[telMobile].'</td> 
<td bgcolor="'.$couleur.'">'.$row[codePoste].'</td> 
<td bgcolor="'.$couleur.'">'.$row[nomDir].'</td> 
<td bgcolor="'.$couleur.'">'.$row[nomService].'</td> 
J'ai enlevé les quotes dans les variables $row.
Répondre à ric

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
tonguim, le jeudi 29 juillet 2004 à 12:42:33
Bonjour,
voici la structure de mes tables:

table personnel
(matricule varchar (5) not null,
nom varchar (30) not null,
prenom varchar (30) not null,
sexe varchar (30) not null,
profession varchar (40) not null,
email varchar (20) not null,
adresse varchar (40),
telDomicile varchar (16),
telMobile varchar (16),
grade varchar (20), primary key(matricule))


table postedetravail
(codePoste varchar(10),
telPoste varchar(10),
codeService varchar(10),
matricule(5),
primary key (codePoste))


table direction
(codeDir varchar (10) not null,
nomDir varchar (50) primary key (codeDir))


table service
(codeService varchar (10) not null,
nomService varchar (50) not null,
codeDir varchar (10),
primary key (codeService))


Je voudrais afficher dans le meme tableau,

personnel.matricule, personnel.grade, personnel.nom, personnel.prenom, personnel.sexe, personnel.profession, personnel.email,
personnel.adresse, personnel.telDomicile, personnel.Mobile,
direction.nomDir,
service.nomService,
postedetravail.telPoste


mais je n'y arrive pas depuis. Merci de votre aide.
Répondre à tonguim

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
ric, le jeudi 29 juillet 2004 à 20:20:22
Salut
Essaie déjà cette requête
SELECT personnel.matricule, personnel.grade, personnel.nom, personnel.prenom, personnel.sexe, personnel.profession, personnel.email, personnel.telDomicile, personnel.telMobile, postedetravail.codePoste, postedetravail.telPoste, postedetravail.codeService, direction.nomDir, service.nomService 
FROM personnel, postedetravail, direction, service 
WHERE postedetravail.matricule = personnel.matricule 
AND service.codeService = postedetravail.codeService 
AND direction.codeDir = service.codeDir;
et affiche la simplement
echo "<tr><td>$row[matricule]</td>
<td>$row[grade]</td>
<td>$row[nom]</td>
<td>$row[prenom]</td>
<td>$row[sexe]</td>
<td>$row[profession]</td>
<td>$row[email]</td>
<td>$row[telDomicile]</td>
<td>$row[telMobile]</td>
<td>$row[codePoste]</td>
<td>$row[nomDir]</td>
<td>$row[nomService]</td></tr>
Quand cela marchera, tu pourras mettre l'habillage
Répondre à ric

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 zouzou, le vendredi 12 octobre 2007 à 10:31:02
moi aussi j'ai une probleme comme ça
aprés la remplissage de formulaire j'aurrai envies d'enregistrer dans une table
Répondre à zouzou
Logiciels pertinents trouvés dans les téléchargements
Télécharger WAMP Server 2.0cWAMP Server - WAMP5 (WAMP signifiant Windows Apache Mysql PHP) est une plateforme de développement Web sous Windows. Il vous permet de...Catégorie: Serveurs
Licence: Freeware/gratuit
Télécharger MySQL 5.0.67MySQL - MySQL est une des systèmes de gestion de bases de données le plus répandu au monde. Catégorie: Bases de données
Licence: Open Source
Télécharger easyPHP 2.0b1easyPHP - EasyPHP est un environnement de travail packagé comprenant le serveur web Apache, le système de gestion de bases de données...Catégorie: Serveurs
Licence: Open Source
Télécharger PHP Edit 0.6PHP Edit - PHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de...Catégorie: PHP
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « PHP/MySql: requete sur plusieurs tables »