tableau php multiple jointure mysql

Eléphanteau du PHP | 16 Messages

04 mars 2010, 18:37

je sèche lamentablement sur un tableau php avec mes données mysql

mes tables et leurs champs :

societe
societe_id, societeNom

user_fo (contact societe)
user_fo_id
nom

entretien
entretien_id
contenu
date
statutID (int)
user_foID (int)
commercialID (int)

statut_travail
statut_id
statut

commercial
commercial_id
login


mon tableau affiche comme colonnes :

societe user_fo commercial contenu statut date

j'obtiens bien toutes mes infos,
seulement je voudrais au lieu de mes champs statutID (int) user_foID (int) commercialID (int),
une liason avec l'intitulé au lieu de chaque ID

Pour une liaison unique, j'arrive à le faire par exemple dans la requette principale du tableau :
avec un SELECT * FROM entretien,user_fo WHERE user_fo_id=user_foID par exemple

par contre je n'arrive pas à faire les autres, même en y ajoutant un AND à ma requête

help !!! :?
Modifié en dernier par jplale le 05 mars 2010, 09:21, modifié 1 fois.

ViPHP
AB
ViPHP | 5818 Messages

04 mars 2010, 20:23

C'est un peu flou...

Quelles données veux tu récupérer avec ta requête ? Donnes un exemple précis avec tes noms de champs sinon pas facile à comprendre ta demande.

Eléphanteau du PHP | 16 Messages

05 mars 2010, 09:27

Pour être plus précis et plus concret, je veux faire un tableau des entretiens pris par des commerciaux lors de leurs visites dans des sociétés avec leurs contacts (user_fo) respectifs.

voici ma requête pardon :
$requete="SELECT entretien_id,user_foID,commercialID,contenu,date,statutID
        FROM entretien
        ORDER BY entretien_id DESC ";
$resultat=mysql_query($requete);

et la boucle  :

while($entretiens=mysql_fetch_array($resultat) ){ ...
 
il me faut inclure aussi societeNom en liaison avec la table user_fo

merci

Eléphanteau du PHP | 16 Messages

08 mars 2010, 10:21

une petite up !

personne pour mon problème ?

ViPHP
AB
ViPHP | 5818 Messages

08 mars 2010, 21:14

Ben oui mais pour faire des liaisons tu ne nous dit pas quels sont les champs en commun dans tes tables !
Il faut nous dire quels sont les champs communs entre tes tables "entretien", "user_fo" et "societe" pour pouvoir te dire comment écrire les liaisons (jointures).
On ne peut pas dire que les noms des champs que tu as choisi pour tes tables aident beaucoup à la compréhension de la structure de tes tables :wink:

Eléphanteau du PHP | 16 Messages

09 mars 2010, 11:06

pardon...

voici mes jointures à faire :

champ de la table entretien :
statutID (int) jointure avec table statut pour avoir le champ statut
user_foID (int) jointure jointure avec table user_fo pour avoir le champ nom
commercialID (int) jointure jointure avec table commercial pour avoir le champ login

ViPHP
AB
ViPHP | 5818 Messages

10 mars 2010, 02:28

il me faut inclure aussi societeNom en liaison avec la table user_fo
Pour que la table "société" soit en liaison avec ta table "user_fo" il faut qu'il y ait un champ commun entre les deux.

Plus généralement pour récupérer un champ de la table "société" à partir d'une autre table il faudrait que la table société ait un champ commun avec une autre table. Et je ne le trouve pas.

Donc en l'état actuel de la structure de tes tables je ne vois pas comment on pourrait faire une jointure avec la table "société".

...pour pouvoir faire des jointures il faut que les tables soient prévues pour cela.

Eléphanteau du PHP | 16 Messages

10 mars 2010, 10:19

Gros boulet que je suis j'ai oublié de le mettre !

la table user_fo contient le champ societeID pour la liaison bien entendu

je viens de trouver ma réponse pour ma liste, ouf !
$requete="SELECT user_fo.*, entretien.*, commercial.*, statut_travail.*, societe.*
	FROM entretien
	LEFT JOIN commercial ON (SELECT commercial_id FROM commercial WHERE commercial_id=commercialD)
	LEFT JOIN user_fo ON (SELECT user_fo_id FROM user_fo WHERE user_fo_id=user_folD)	
	LEFT JOIN statut_travail ON (SELECT statut_id FROM statut_travail WHERE statut_id=statutID)
	ORDER BY entretien_id DESC ";
je remplacerai mes * plus tard... :wink:

par contre sur ma page de modif d'un entretien, mes champs select ne se mettent pas à jour, le reste c'est ok, voici mon exemple :
$requete4="SELECT statut_id,statut FROM statut_travail";
$resultat4=mysql_query($requete4);

<select name="statutID" id="statutID">
	<?php while($travail=mysql_fetch_array($resultat4))  { ?>
	<option <?php if($travail['statut_id']==$entretiens['statutID']) echo  "selected='selected'"; ?> value="<?php echo $travail['statut_id']; ?>"><?php echo $travail['statut']; ?></option>
	<?php } ?>
</select>

Eléphanteau du PHP | 16 Messages

10 mars 2010, 12:20

j'ai dit ouf trop vite, ma requête m'envoie un tableau avec des lignes en doublon, triple, etc lorsque les statutID, user_foID, commercialID ont comme valeur 0 ou autre :(

ViPHP
AB
ViPHP | 5818 Messages

10 mars 2010, 16:04

Fait un export de ta table (structure + données) via phpMyAdmin pour que je puisse faire un test.

Eléphanteau du PHP | 16 Messages

10 mars 2010, 17:16

merci AD, voici mon dump :
-- phpMyAdmin SQL Dump
-- version 2.10.1
-- http://www.phpmyadmin.net
-- 
-- Serveur: localhost
-- Généré le : Mer 10 Mars 2010 à 16:05
-- Version du serveur: 4.1.22
-- Version de PHP: 5.2.2

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

-- 
-- Base de données: `blint`
-- 

-- --------------------------------------------------------

-- 
-- Structure de la table `entretien`
-- 

CREATE TABLE IF NOT EXISTS `entretien` (
  `entretien_id` int(5) NOT NULL auto_increment,
  `date` date NOT NULL default '2007-08-01',
  `contenu` text NOT NULL,
  `utilisateurID` int(2) NOT NULL default '0',
  `user_foID` int(5) NOT NULL default '0',
  `faire` text NOT NULL,
  `statutID` int(2) NOT NULL default '0',
  `pj` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`entretien_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=26 ;

-- 
-- Contenu de la table `entretien`
-- 

INSERT INTO `entretien` (`entretien_id`, `date`, `contenu`, `utilisateurID`, `user_foID`, `faire`, `statutID`, `pj`) VALUES 
(1, '2010-02-09', 'très bon entretien :\r\n\r\ndemande sur clé USB\r\ndemande sur classeur...', 0, 8, 'achat : voir prix mémoire en cours si hausse dans les prochains mois', 0, ''),
(2, '2010-02-09', 'pistes graphiques pour nos nouveaux crayons de papier…', 7, 35, 'jpl : voir pour maquette', 1, ''),
(3, '2010-02-09', 'la société veut se positionner sur le segment de l''écodurable.\r\n\r\n-> liste produits BL à faire passé rapidement\r\n\r\n', 15, 21, '', 0, ''),
(4, '2010-02-09', 'Nous avons déjà depuis quelques jour reçu un prototype aux couleurs Schenker-Joyau. Nous avons perdu quelques jours avant de vous l''envoyer, afin de finaliser avec l''usine le bon paramétrage du lien vers votre site internet, c''est bientôt prêt. Néanmoins je préconise un complément d''information à imprimer sur le bumper '''' pour le suivi de vos colis Schenker-Joyau appuyez ici" en ajoutant une petite création graphique ou un picto sympa. Jean-Philippe LALE va vous faire suivre un suggestion de création\r\n', 15, 301, '', 0, ''),
(5, '0000-00-00', 'Procoralan\r\n\r\nClef rouge marquée recto Procoralan en rouge verso http://www.procoralan.com en rouge\r\n\r\nCordon orange imprimé Procoralan en rouge\r\n\r\nSHIFT\r\n\r\nClef rouge marquée recto SHIFT(logo) en orange et rouge verso http://www.shift-study.com en rouge\r\n\r\nCordon orange imprimé Procoralan en rouge\r\n\r\nProtelos (plus de site internet)\r\n\r\nClef bleue marquée recto Protelos en bleu verso Servier bleu\r\n\r\nCordon bleu imprimé Protelos en blanc \r\n\r\nValdoxan (plus de site internet)\r\n\r\nClef bleue marquée recto Valdoxan en bleu verso Servier bleu\r\n\r\nCordon jaune imprimé Valdoxan en bleu ', 7, 238, 'préparer fichiers pour fab\r\nc''est fait', 0, ''),
(6, '2010-02-15', 'dsfdsfdsfdsfds', 0, 409, '', 0, ''),
(7, '2010-02-15', 'xwcwxcwxcwxcwxc', 0, 300, '', 0, ''),
(8, '2010-02-15', 'cxvxcvxcvxcv', 0, 139, '', 0, ''),
(9, '2010-02-16', 'dfbdfbd', 0, 409, 'creation maquette ....', 0, ''),
(10, '2010-02-16', 'ghgfhgfh', 0, 409, 'maquette dans ton commun', 0, ''),
(11, '2010-02-16', 'iuhhyughuyhuyhuyhuyhuyh', 0, 475, '', 0, ''),
(12, '2010-02-17', ' test accent : é è ô ö €', 0, 320, '', 0, ''),
(13, '2010-02-17', 'à é è ö ô', 0, 409, 'à é è ö ô', 0, ''),
(17, '2010-03-03', 'cqscqcqsc', 0, 104, '', 0, ''),
(18, '2010-03-03', 'pppppppppppppppppppppp', 0, 456, '', 0, 'BL04530.jpg'),
(19, '2010-03-03', 'scwxcwxcwxc', 0, 409, '', 0, 'bouteille site.jpg'),
(20, '2010-03-03', 'dsvvdsvdsv', 5, 259, '', 1, 'bouteille site.jpg'),
(21, '2010-03-03', 'pppp', 0, 293, '', 0, 'bouteille site.jpg'),
(22, '2010-03-03', 'fdfdfdf', 7, 409, 'cwxcwxc', 2, ''),
(24, '2010-03-05', 'zefzefzef', 1, 69, '', 3, 'license.txt'),
(25, '2010-03-08', 'commercial NL', 5, 504, '', 2, 'GroupOffice Installation.txt');

-- --------------------------------------------------------

-- 
-- Structure de la table `societe`
-- 

CREATE TABLE IF NOT EXISTS `societe` (
  `societe_id` int(3) NOT NULL auto_increment,
  `societeNom` varchar(100) character set utf8 NOT NULL default '',
  `adresse` varchar(255) character set utf8 NOT NULL default '',
  `adresse2` varchar(255) character set utf8 NOT NULL default '',
  `ville` varchar(255) character set utf8 NOT NULL default '',
  `cp` varchar(10) character set utf8 NOT NULL default '',
  `pays` varchar(50) character set utf8 NOT NULL default '',
  `tel` varchar(12) character set utf8 NOT NULL default '',
  `fax` varchar(12) character set utf8 NOT NULL default '',
  `web` varchar(255) character set utf8 NOT NULL default '',
  `CA` int(12) NOT NULL default '0',
  `activite` varchar(255) character set utf8 NOT NULL default '',
  `nbemploye` int(3) NOT NULL default '0',
  `marque` varchar(255) character set utf8 NOT NULL default '',
  `statut` int(2) NOT NULL default '0',
  `nbclient` int(5) NOT NULL default '0',
  `typeclient` varchar(255) character set utf8 NOT NULL default '',
  `nbevent` int(5) NOT NULL default '0',
  `moyachat` int(5) NOT NULL default '0',
  `typeremis` varchar(255) character set utf8 NOT NULL default '',
  `qte` int(5) NOT NULL default '0',
  `valeur` int(5) NOT NULL default '0',
  `salon` varchar(255) character set utf8 NOT NULL default '',
  `fabspe` varchar(255) character set utf8 NOT NULL default '',
  `logiadresse` varchar(255) character set utf8 NOT NULL default '',
  `logiadresse2` varchar(255) character set utf8 NOT NULL default '',
  `logiville` varchar(255) character set utf8 NOT NULL default '',
  `logicp` varchar(10) character set utf8 NOT NULL default '',
  PRIMARY KEY  (`societe_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

-- 
-- Contenu de la table `societe`
-- 

INSERT INTO `societe` (`societe_id`, `societeNom`, `adresse`, `adresse2`, `ville`, `cp`, `pays`, `tel`, `fax`, `web`, `CA`, `activite`, `nbemploye`, `marque`, `statut`, `nbclient`, `typeclient`, `nbevent`, `moyachat`, `typeremis`, `qte`, `valeur`, `salon`, `fabspe`, `logiadresse`, `logiadresse2`, `logiville`, `logicp`) VALUES 
(5, 'SERVIER Diamicron', '', '', '', '', '', '', '', '', 0, 'Labo', 0, '', 0, 0, '', 0, 0, '', 0, 0, '', '', '', '', '', ''),
(2, 'DE SANGOSSE', '', '', 'Pont du Casse', '', 'France', '', '', '', 0, '', 0, '', 0, 0, '', 0, 0, '', 0, 0, '', '', '', '', '', ''),
(4, 'Pipot et molo', '', '', 'Agen', '47000', '', '', '', '', 0, 'farces et attrapes', 120, '', 0, 200000, '', 14, 5, '', 0, 0, 'non', '', '', '', '', ''),

-- --------------------------------------------------------

-- 
-- Structure de la table `statut_fournisseur`
-- 

CREATE TABLE IF NOT EXISTS `statut_fournisseur` (
  `statut_fournisseur_id` int(11) NOT NULL auto_increment,
  `nom_fr` varchar(25) default NULL,
  `nom_en` varchar(25) default NULL,
  PRIMARY KEY  (`statut_fournisseur_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

-- 
-- Contenu de la table `statut_fournisseur`
-- 

INSERT INTO `statut_fournisseur` (`statut_fournisseur_id`, `nom_fr`, `nom_en`) VALUES 
(2, 'FIDELE', ''),
(1, 'EN TEST', ''),
(3, 'A EVITER', '');

-- --------------------------------------------------------

-- 
-- Structure de la table `statut_travail`
-- 

CREATE TABLE IF NOT EXISTS `statut_travail` (
  `statut_id` int(2) NOT NULL auto_increment,
  `statut` varchar(20) character set utf8 NOT NULL default '',
  PRIMARY KEY  (`statut_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

-- 
-- Contenu de la table `statut_travail`
-- 

INSERT INTO `statut_travail` (`statut_id`, `statut`) VALUES 
(1, 'En attente'),
(2, 'En cours'),
(3, 'Fini'),
(4, 'exemple');

-- --------------------------------------------------------

-- 
-- Structure de la table `user_fo`
-- 

CREATE TABLE IF NOT EXISTS `user_fo` (
  `user_fo_id` int(11) NOT NULL auto_increment,
  `civilite` varchar(255) default NULL,
  `nom` varchar(255) default NULL,
  `prenom` varchar(255) default NULL,
  `mail` varchar(255) default NULL,
  `password` varchar(255) default NULL,
  `service` varchar(255) default NULL,
  `fonction` varchar(255) default NULL,
  `societe` varchar(255) default NULL,
  `secteur` varchar(255) default NULL,
  `pays` varchar(255) default NULL,
  `ville` varchar(255) default NULL,
  `code_postal` varchar(255) default NULL,
  `adresse` varchar(255) default NULL,
  `adresse2` varchar(255) default NULL,
  `tel` varchar(255) default NULL,
  `fax` varchar(255) default NULL,
  `internet` varchar(255) default NULL,
  `langue_site_id` int(11) NOT NULL default '0',
  `commercial_id` int(11) NOT NULL default '0',
  `en_ligne` tinyint(1) default '0',
  `envoi` longtext,
  `statutID` int(2) NOT NULL default '1',
  `societeID` int(3) default NULL,
  PRIMARY KEY  (`user_fo_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

-- 
-- Contenu de la table `user_fo`
-- 

INSERT INTO `user_fo` (`user_fo_id`, `civilite`, `nom`, `prenom`, `mail`, `password`, `service`, `fonction`, `societe`, `secteur`, `pays`, `ville`, `code_postal`, `adresse`, `adresse2`, `tel`, `fax`, `internet`, `langue_site_id`, `commercial_id`, `en_ligne`, `envoi`, `statutID`, `societeID`) VALUES 
(1, 'Mme', 'Pipot et molo1', 'lulu', '[email protected]', NULL, '', '', '', NULL, '', '', '', '', '', '5645645643', '', '', 0, 0, 0, 'Entrez ici un catalogue ou un cadeau, pr&#65533;ciser &#65533;galement la date d''envoi', 1, 1),
(2, 'Mlle', 'TAILLEUR', 'Hélène', '[email protected]', NULL, '', '', 'bl international', NULL, '', '', '', '', '', '', '', '', 0, 0, 0, 'Entrez ici un catalogue ou un cadeau, préciser également la date d''envoi', 3, 2),
(3, 'M.', 'molo', 'tttttt', '[email protected]', NULL, '', '', 'Pipo', NULL, '', '', '', '', '', '', '', '', 0, 0, 0, 'Entrez ici un catalogue ou un cadeau, préciser également la date d''envoi', 0, 0);

-- --------------------------------------------------------

-- 
-- Structure de la table `utilisateur`
-- 

CREATE TABLE IF NOT EXISTS `utilisateur` (
  `utilisateur_id` int(11) NOT NULL auto_increment,
  `fonction_site_id` int(11) NOT NULL default '0',
  `nom` varchar(30) default NULL,
  `prenom` varchar(30) default NULL,
  `telephone` varchar(20) default NULL,
  `login` varchar(20) default NULL,
  `pwd` varchar(20) default NULL,
  `e_mail` varchar(255) default NULL,
  `en_ligne` tinyint(1) default NULL,
  `privilege` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`utilisateur_id`),
  KEY `fk_utilisateur_fonction` (`fonction_site_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=16 ;

-- 
-- Contenu de la table `utilisateur`
-- 

INSERT INTO `utilisateur` (`utilisateur_id`, `fonction_site_id`, `nom`, `prenom`, `telephone`, `login`, `pwd`, `e_mail`, `en_ligne`, `privilege`) VALUES 
(1, 0, 'TOTO', 'Titi', '0505050505', 'toto', 'aa36dc6e81e2ac7ad03e', '[email protected]', 0, 'admin');
et voici ma page liste des entretiens :
<?php
session_start();
require("auth.php");

	if(Auth::islogged() ){
		// utilisateur loggué
		}
	else {
	header("Location:index.php");
	}
	

require_once("includes/connexionMysql.inc.php");
 
$requete="SELECT entretien.*, utilisateur.utilisateur_id, utilisateur.login, user_fo.nom, user_fo.user_fo_id, statut_travail.*
        FROM entretien
        LEFT JOIN utilisateur ON (SELECT utilisateur_id FROM utilisateur WHERE utilisateur_id=utilisateurID)
        LEFT JOIN user_fo ON (SELECT user_fo_id FROM user_fo WHERE user_fo_id=user_folD)
        LEFT JOIN statut_travail ON (SELECT statut_id FROM statut_travail WHERE statut_id=statutID)
        ORDER BY entretien_id DESC ";
$resultat=mysql_query($requete);


//----Requete suppression
if(isset($_GET['supp']))
{
	$requete6="DELETE FROM entretien WHERE id='".$_GET['id']."' ";
	mysql_query($requete6);
	
	//redirection fin de suppr
	function redirection($url){
		echo "<script type=\"text/javascript\">\n"
		. "<!--\n"
		. "\n"
		. "function redirect() {\n"
		. "window.location='" . html_entity_decode($url) . "'\n"
		. "}\n"
		. "setTimeout('redirect()','0');\n"
		. "\n"
		. "// -->\n"
		. "</script>\n";
	}
	redirection('Entretien_liste.php');
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//FR" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Liste entretiens</title>

<link href="includes/general.css" rel="stylesheet" type="text/css" />

<link rel="stylesheet" href="includes/modalbox.css" type="text/css" media="screen" />
<script type="text/javascript" src="includes/prototype.js"></script>
<script type="text/javascript" src="includes/scriptaculous.js?¬
load=builder,effects"></script>
<script type="text/javascript" src="includes/modalbox.js"></script>

</head>
<body>

<div class="centrage">

	<div id="dolphincontainer">
		<div id="dolphinnav">
		<ul>
		<li><a href="Accueil.php" title="Accueil" ><span>Accueil</span></a></li>
		<li><a href="Entretien_liste.php" title="css website navigation menus" class="current"><span>Entretiens</span></a></li>
		<li><a href="client_liste.php" title="css website navigation menus"><span>Contacts</span></a></li>
		<li><a href="societe_liste.php" title="Liste des soci&eacute;t&eacute;s" ><span>Soci&eacute;t&eacute;s</span></a></li>
		</ul>
		</div>
		
		<table width="100%" border="0" cellspacing="2" cellpadding="2">
		  <tr >
		    <td align="left">
			<span style="color:#fff"><strong></strong>
		    
			<?php    
			// calcul nombre de lignes suivant requette
				$req = mysql_query("SELECT entretien_id FROM entretien") or die(mysql_error());
				$res = mysql_numrows($req);		
				echo '<strong>Statistiques entretiens : </strong>'.$res.' entretien(s)'.' en base';
			?> 
			</span>
		
		    </td>
		    
		   <td align="right">
			<span style="color:#fff">
				<?php $date = "le ".date("d-m-Y")." &agrave; ".date("H-i-s");
				  echo $date
				?> - <a href="logout.php" style="color:white">se d&eacute;connecter</a>
			</span>
		    </td>    
		  </tr>
		</table>
	</div>
	
	<form id="form2" name="form2" method="get" action="<?php  echo $_SERVER['PHP_SELF']; ?>">
		  <tr align="center" height="16">
			<a href="Entretien_ajoutPop.php" title="Ajout entretien" onclick="Modalbox.show(this.href, {title: this.title, width: 1000}); return false;"><span>Ajout entretien</span></a>
		  </tr>
	</form>
		
	<?php 
	    // coloration 1 ligne sur 2
		    $compteur=0;
	?> 
	
	<table width="100%" border="0" cellspacing="2" cellpadding="3">
	  <tr bgcolor="#d3dce3">
	    <td><strong>Modif</strong></td>
	    <td align="center"><strong>Contact</strong></td>
	    <td align="center"><strong>Commercial</strong></td>
	    <td align="center"><strong>Entretien</strong></td> 
	    <td align="center"><strong>Travail pour achat ou graphiste</strong></td>
	    <td align="center"><strong>Fait</strong></td>
	    <td align="center"><strong>Date</strong></td>
	    <td align="center"><strong>suppr</strong></td>
	  </tr>
	  <?php while($entretiens=mysql_fetch_array($resultat) ){
	    
	    for($i=0;$i<1;$i++)
	      {
	      if($compteur%2 ==1) {
		      $classe = "impair";
	      } else {
		      $classe = "pair";
	      }
	      
	      //formatage date
		  // intialisation
		  $date = $entretiens['date'];
		  // d&eacute;coupage
		  $annee = substr($date, 0, 4);
		  $mois = substr($date, 5, 2);
		  $jour = substr($date, 8, 2);
		  // affichage dans la colonne
	    
	  ?> 
	  <tr class="<?php echo $classe;?>" > 
	    <td align="center"><a href="Entretien_modifPop.php?entretien_id=<?php echo $entretiens['entretien_id']; ?>" title="Modif entretien" onclick="Modalbox.show(this.href, {title: this.title, width: 1000}); return false;"><img src="images/edit.png" width="16" height="16" alt="modif" /></a></td>
	    <td ><a href="client_modifPop.php?user_fo_id=<?php echo $entretiens['user_foID']; ?>" title="Modif contact" onclick="Modalbox.show(this.href, {title: this.title, width: 800}); return false;"><?php echo $entretiens['nom']; ?></a></td>
	    <td align="center"><?php echo $entretiens['login']; ?></td>
	    <td width="30%"><?php echo $entretiens['contenu']; ?></td>
	    <td width="25%"><?php echo $entretiens['faire']; ?></td>
	    <td align="center"><?php echo $entretiens['statut']; ?></td>
	    <td align="center"><?php echo $jour . '-' . $mois . '-' . $annee; ?></td>
	    <td align="center">
	      <a href="javascript:if(confirm('Etes-vous sûr de vouloir supprimer ce contact ?'))document.location.href='Entretien_liste.php?entretien_id=<?php echo $entretiens['entretien_id']; ?>&supp=ok'"><img src="images/croix.png" width="16" height="16" alt="suppr" /></a></td>			
	    </td>
	  </tr>
	  <?php $compteur++;
	      }
	  }
	  ?>
	</table>
	
	<div id="pied" align="center">
		<span style="color:#fff">
		pied de page ...
		</span>
	</div>
	
</div> <!-- fin div centrage 1-->

</body>
</html>
<?php mysql_close(); ?> 

ViPHP
AB
ViPHP | 5818 Messages

11 mars 2010, 20:59

ça risquait pas de fonctionner car tes tables d'essai n'étaient pas cohérentes (pas d'id société en commun avec la table user_fo par exemple).

Ensuite si tu fais des jointures, c'est normal que cela te renvoie des doublons si la table entretien fait référence à plusieurs user (ce qui est le cas et qui est normal...). Mais tu peux faire le tri en créant ton tableau de résultat.

Ci dessous un jeu de table dont j'ai modifié certains enregistrements pour pouvoir faire des essais
-- phpMyAdmin SQL Dump
-- version 3.2.0.1
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Jeu 11 Mars 2010 à 18:43
-- Version du serveur: 5.1.36
-- Version de PHP: 5.3.0

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Base de données: `test_php_france`
--

-- --------------------------------------------------------

--
-- Structure de la table `entretien`
--

CREATE TABLE IF NOT EXISTS `entretien` (
  `entretien_id` int(5) NOT NULL AUTO_INCREMENT,
  `date` date NOT NULL DEFAULT '2007-08-01',
  `contenu` text NOT NULL,
  `utilisateurID` int(2) NOT NULL DEFAULT '0',
  `user_foID` int(5) NOT NULL DEFAULT '0',
  `faire` text NOT NULL,
  `statutID` int(2) NOT NULL DEFAULT '0',
  `pj` varchar(50) NOT NULL DEFAULT '',
  PRIMARY KEY (`entretien_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=26 ;

--
-- Contenu de la table `entretien`
--

INSERT INTO `entretien` (`entretien_id`, `date`, `contenu`, `utilisateurID`, `user_foID`, `faire`, `statutID`, `pj`) VALUES
(1, '2010-02-09', 'très bon entretien :\r\n\r\ndemande sur clé USB\r\ndemande sur classeur...', 0, 8, 'achat : voir prix mémoire en cours si hausse dans les prochains mois', 0, ''),
(2, '2010-02-09', 'pistes graphiques pour nos nouveaux crayons de papier…', 7, 2, 'jpl : voir pour maquette', 1, ''),
(3, '2010-02-09', 'la société veut se positionner sur le segment de l''écodurable.\r\n\r\n-> liste produits BL à faire passé rapidement\r\n\r\n', 15, 21, '', 0, ''),
(4, '2010-02-09', 'Nous avons déjà depuis quelques jour reçu un prototype aux couleurs Schenker-Joyau. Nous avons perdu quelques jours avant de vous l''envoyer, afin de finaliser avec l''usine le bon paramétrage du lien vers votre site internet, c''est bientôt prêt. Néanmoins je préconise un complément d''information à imprimer sur le bumper '''' pour le suivi de vos colis Schenker-Joyau appuyez ici" en ajoutant une petite création graphique ou un picto sympa. Jean-Philippe LALE va vous faire suivre un suggestion de création\r\n', 15, 301, '', 0, ''),
(5, '0000-00-00', 'Procoralan\r\n\r\nClef rouge marquée recto Procoralan en rouge verso http://www.procoralan.com en rouge\r\n\r\nCordon orange imprimé Procoralan en rouge\r\n\r\nSHIFT\r\n\r\nClef rouge marquée recto SHIFT(logo) en orange et rouge verso http://www.shift-study.com en rouge\r\n\r\nCordon orange imprimé Procoralan en rouge\r\n\r\nProtelos (plus de site internet)\r\n\r\nClef bleue marquée recto Protelos en bleu verso Servier bleu\r\n\r\nCordon bleu imprimé Protelos en blanc \r\n\r\nValdoxan (plus de site internet)\r\n\r\nClef bleue marquée recto Valdoxan en bleu verso Servier bleu\r\n\r\nCordon jaune imprimé Valdoxan en bleu ', 7, 238, 'préparer fichiers pour fab\r\nc''est fait', 0, ''),
(6, '2010-02-15', 'dsfdsfdsfdsfds', 0, 1, '', 0, ''),
(7, '2010-02-15', 'xwcwxcwxcwxcwxc', 0, 300, '', 0, ''),
(8, '2010-02-15', 'cxvxcvxcvxcv', 0, 139, '', 0, ''),
(9, '2010-02-16', 'dfbdfbd', 0, 1, 'creation maquette ....', 0, ''),
(10, '2010-02-16', 'ghgfhgfh', 0, 1, 'maquette dans ton commun', 0, ''),
(11, '2010-02-16', 'iuhhyughuyhuyhuyhuyhuyh', 0, 475, '', 0, ''),
(12, '2010-02-17', ' test accent : é è ô ö €', 0, 320, '', 0, ''),
(13, '2010-02-17', 'à é è ö ô', 0, 1, 'à é è ö ô', 0, ''),
(17, '2010-03-03', 'cqscqcqsc', 0, 104, '', 0, ''),
(18, '2010-03-03', 'pppppppppppppppppppppp', 0, 456, '', 0, 'BL04530.jpg'),
(19, '2010-03-03', 'scwxcwxcwxc', 0, 1, '', 0, 'bouteille site.jpg'),
(20, '2010-03-03', 'dsvvdsvdsv', 5, 259, '', 1, 'bouteille site.jpg'),
(21, '2010-03-03', 'pppp', 0, 293, '', 0, 'bouteille site.jpg'),
(22, '2010-03-03', 'fdfdfdf', 7, 1, 'cwxcwxc', 2, ''),
(24, '2010-03-05', 'zefzefzef', 1, 69, '', 3, 'license.txt'),
(25, '2010-03-08', 'commercial NL', 5, 504, '', 2, 'GroupOffice Installation.txt');

-- --------------------------------------------------------

--
-- Structure de la table `societe`
--

CREATE TABLE IF NOT EXISTS `societe` (
  `societe_id` int(3) NOT NULL AUTO_INCREMENT,
  `societeNom` varchar(100) CHARACTER SET utf8 NOT NULL DEFAULT '',
  `adresse` varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT '',
  `adresse2` varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT '',
  `ville` varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT '',
  `cp` varchar(10) CHARACTER SET utf8 NOT NULL DEFAULT '',
  `pays` varchar(50) CHARACTER SET utf8 NOT NULL DEFAULT '',
  `tel` varchar(12) CHARACTER SET utf8 NOT NULL DEFAULT '',
  `fax` varchar(12) CHARACTER SET utf8 NOT NULL DEFAULT '',
  `web` varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT '',
  `CA` int(12) NOT NULL DEFAULT '0',
  `activite` varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT '',
  `nbemploye` int(3) NOT NULL DEFAULT '0',
  `marque` varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT '',
  `statut` int(2) NOT NULL DEFAULT '0',
  `nbclient` int(5) NOT NULL DEFAULT '0',
  `typeclient` varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT '',
  `nbevent` int(5) NOT NULL DEFAULT '0',
  `moyachat` int(5) NOT NULL DEFAULT '0',
  `typeremis` varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT '',
  `qte` int(5) NOT NULL DEFAULT '0',
  `valeur` int(5) NOT NULL DEFAULT '0',
  `salon` varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT '',
  `fabspe` varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT '',
  `logiadresse` varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT '',
  `logiadresse2` varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT '',
  `logiville` varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT '',
  `logicp` varchar(10) CHARACTER SET utf8 NOT NULL DEFAULT '',
  PRIMARY KEY (`societe_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

--
-- Contenu de la table `societe`
--

INSERT INTO `societe` (`societe_id`, `societeNom`, `adresse`, `adresse2`, `ville`, `cp`, `pays`, `tel`, `fax`, `web`, `CA`, `activite`, `nbemploye`, `marque`, `statut`, `nbclient`, `typeclient`, `nbevent`, `moyachat`, `typeremis`, `qte`, `valeur`, `salon`, `fabspe`, `logiadresse`, `logiadresse2`, `logiville`, `logicp`) VALUES
(1, 'SERVIER Diamicron', '', '', '', '', '', '', '', '', 0, 'Labo', 0, '', 0, 0, '', 0, 0, '', 0, 0, '', '', '', '', '', ''),
(2, 'DE SANGOSSE', '', '', 'Pont du Casse', '', 'France', '', '', '', 0, '', 0, '', 0, 0, '', 0, 0, '', 0, 0, '', '', '', '', '', ''),
(4, 'Pipot et molo', '', '', 'Agen', '47000', '', '', '', '', 0, 'farces et attrapes', 120, '', 0, 200000, '', 14, 5, '', 0, 0, 'non', '', '', '', '', '');

-- --------------------------------------------------------

--
-- Structure de la table `user_fo`
--

CREATE TABLE IF NOT EXISTS `user_fo` (
  `user_fo_id` int(11) NOT NULL AUTO_INCREMENT,
  `civilite` varchar(255) DEFAULT NULL,
  `nom` varchar(255) DEFAULT NULL,
  `prenom` varchar(255) DEFAULT NULL,
  `mail` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  `service` varchar(255) DEFAULT NULL,
  `fonction` varchar(255) DEFAULT NULL,
  `societe` varchar(255) DEFAULT NULL,
  `secteur` varchar(255) DEFAULT NULL,
  `pays` varchar(255) DEFAULT NULL,
  `ville` varchar(255) DEFAULT NULL,
  `code_postal` varchar(255) DEFAULT NULL,
  `adresse` varchar(255) DEFAULT NULL,
  `adresse2` varchar(255) DEFAULT NULL,
  `tel` varchar(255) DEFAULT NULL,
  `fax` varchar(255) DEFAULT NULL,
  `internet` varchar(255) DEFAULT NULL,
  `langue_site_id` int(11) NOT NULL DEFAULT '0',
  `commercial_id` int(11) NOT NULL DEFAULT '0',
  `en_ligne` tinyint(1) DEFAULT '0',
  `envoi` longtext,
  `statutID` int(2) NOT NULL DEFAULT '1',
  `societeID` int(3) DEFAULT NULL,
  PRIMARY KEY (`user_fo_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

--
-- Contenu de la table `user_fo`
--

INSERT INTO `user_fo` (`user_fo_id`, `civilite`, `nom`, `prenom`, `mail`, `password`, `service`, `fonction`, `societe`, `secteur`, `pays`, `ville`, `code_postal`, `adresse`, `adresse2`, `tel`, `fax`, `internet`, `langue_site_id`, `commercial_id`, `en_ligne`, `envoi`, `statutID`, `societeID`) VALUES
(1, 'Mme', 'Pipot et molo1', 'lulu', '[email protected]', NULL, '', '', '', NULL, '', '', '', '', '', '5645645643', '', '', 0, 0, 0, 'Entrez ici un catalogue ou un cadeau, pr&#65533;ciser &#65533;galement la date d''envoi', 1, 1),
(2, 'Mlle', 'TAILLEUR', 'Hélène', '[email protected]', NULL, '', '', 'bl international', NULL, '', '', '', '', '', '', '', '', 0, 0, 0, 'Entrez ici un catalogue ou un cadeau, préciser également la date d''envoi', 3, 2),
(3, 'M.', 'molo', 'tttttt', '[email protected]', NULL, '', '', 'Pipo', NULL, '', '', '', '', '', '', '', '', 0, 0, 0, 'Entrez ici un catalogue ou un cadeau, préciser également la date d''envoi', 0, 0);

-- --------------------------------------------------------

--
-- Structure de la table `utilisateur`
--

CREATE TABLE IF NOT EXISTS `utilisateur` (
  `utilisateur_id` int(11) NOT NULL AUTO_INCREMENT,
  `fonction_site_id` int(11) NOT NULL DEFAULT '0',
  `nom` varchar(30) DEFAULT NULL,
  `prenom` varchar(30) DEFAULT NULL,
  `telephone` varchar(20) DEFAULT NULL,
  `login` varchar(20) DEFAULT NULL,
  `pwd` varchar(20) DEFAULT NULL,
  `e_mail` varchar(255) DEFAULT NULL,
  `en_ligne` tinyint(1) DEFAULT NULL,
  `privilege` varchar(50) NOT NULL DEFAULT '',
  PRIMARY KEY (`utilisateur_id`),
  KEY `fk_utilisateur_fonction` (`fonction_site_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=16 ;

--
-- Contenu de la table `utilisateur`
--

INSERT INTO `utilisateur` (`utilisateur_id`, `fonction_site_id`, `nom`, `prenom`, `telephone`, `login`, `pwd`, `e_mail`, `en_ligne`, `privilege`) VALUES
(1, 0, 'TOTO', 'Titi', '0505050505', 'toto', 'aa36dc6e81e2ac7ad03e', '[email protected]', 0, 'admin');
Ensuite voici une requête et un tableau de résultats avec en premier les résultats bruts des lignes de requête (uniquement pour que tu puisse visualiser en phase de test) et à la fin le tableau trié :
$query = "SELECT 

			entretien_id,
			date,
			contenu,
			faire,
			
			civilite,
			nom,
			prenom,
			mail,
			
			societeNom,
			societe.ville,
			activite
			
			FROM entretien
			
			LEFT JOIN user_fo 
			ON entretien.user_foID = user_fo.user_fo_id
			
			LEFT JOIN societe
			ON user_fo.societeID = societe.societe_id";
			
			$ressource = mysql_query($query) or die(mysql_error());
			
			$tab_result = array();
			
			while($result = mysql_fetch_assoc($ressource))
			{
			echo '<pre>';
			echo 'resultat ligne requete<br />';
			print_r($result);
			echo '</pre>';

				$tab_result[$result['entretien_id']]['date'] = $result['date'];
				$tab_result[$result['entretien_id']]['contenu'] = $result['contenu'];
				$tab_result[$result['entretien_id']]['faire'] = $result['faire'];
				
				$tab_result[$result['entretien_id']]['civilite'] = $result['civilite'];
				$tab_result[$result['entretien_id']]['nom'] = $result['nom'];
				$tab_result[$result['entretien_id']]['prenom'] = $result['prenom'];
				
				$tab_result[$result['entretien_id']]['societeNom'] = $result['societeNom'];
				$tab_result[$result['entretien_id']]['ville'] = $result['ville'];
				$tab_result[$result['entretien_id']]['activite'] = $result['activite'];
				
			}
			
			echo '<pre>';
			echo 'TABLEAU DE RESULTATS TRIE<br />';
			print_r($tab_result);
			echo '</pre>';
			
Voilà le principe.

Fais attention, tu mélange des tables InnoDB et des tables MyIsam, des encodages latin1 et des encodages utf-8...

Enfin tu aurais pu choisir un exemple plus simple pour commencer à apprendre... la programmation ça ne s'improvise pas en quelques clics :wink:
Modifié en dernier par AB le 15 mars 2010, 20:13, modifié 1 fois.

Eléphanteau du PHP | 16 Messages

12 mars 2010, 10:45

merci AB, je suis sur mon premier gros projet (pour moi :wink: ), j'ai fait des exemples bien plus simple avec l'aide du DVD d'elephorm php / mysql que je recommande, mais on est vite à cours d'info, un DVD 2 ne serait pas de trop.

En fait je rajoute des fonctionnalités à notre site fait par un prestataire, il est basé sur smarty, mais c'est trop de couche pour moi pour le moment, :( donc j'en fait un en parallèle qui utilise la même base mysql, j'ajoute petit à petit les briques nécessaires, j'ai mes pages nécessaires, une authentification, ...je continue

donc je tâtonne beaucoup, je te remercie pour toutes tes explications, je vais voir ça de suite