Problème d'organisation de requete

Invité
Invité n'ayant pas de compte PHPfrance

23 mai 2006, 15:06

Bonjour,

Voila c'est pas très simple a expliquer.
En faite j'ai une requete. Cette requete peut m'afficher plusieurs resultat, quand je regarde le premier resultat il doit verifier de quel catégorie il fait partie. Puis, à partir de cela il a une requete...Et ainsi de suite pour chaque ligne.

Le probleme c'est que ma fenetre marche si il y a qu'un seul enregistrement dans la premier requete.

Ou la la, j'en voie qui se gratte la tete.

Bon je vous met le code, peut etre que ça sera plus parlant.

<body>
<form name="form1" method="post" action="">
<?php
if(isset($_GET['num']))
{$num=$_GET['num'];
}
include_once("../../connexion.php");
include_once("../../fonction.inc.php");




?>
<p align="center" class="Style1">Formation</p>
<p align="center" class="Style2">
  <?php

$reqsql = mysql_query("SELECT prenom_pers, nom_pers
FROM agent_dentretien
WHERE num_pers='$num'");
while ($rep = @mysql_fetch_object($reqsql)) {
			$pre = $rep->prenom_pers;
    		$nom = $rep->nom_pers;
?>
  <label><?php echo $pre.' '.$nom ?></label>
  <?php
}
?>
</p>
<p><a href="../consult_agtent.php?num=<?php echo $num ?>"><img src="../../image/precedent.gif" width="41" height="25" value="0"></a></p>
<table width="99%" border="1" align="center" >
    <tr>
      <td width="18%" align="center" valign="middle"><div align="center">Nom du formateur </div></td>
      <td width="39%" align="center" valign="middle">Nom de la formation </td>
      <td width="13%" align="center" valign="middle">Date de la formation </td>
      <td width="19%" align="center" valign="middle">Commentaire</td>
      <td width="19%" align="center" valign="middle">Catégorie du formateur</td>
      <td width="11%" align="center" valign="middle">Supprimer</td>
    </tr>
	<?php
	$reqsql = mysql_query("
SELECT num_pers_personnel, num_pers_agent_dentretien, num_pers_responsable
FROM effectuer
WHERE effectuer.num_pers = '$num'");
while ($row = mysql_fetch_object($reqsql)) {
			$numperso = $row->num_pers_personnel; 
    		$numag = $row->num_pers_agent_dentretien;
    		$numresp = $row->num_pers_responsable;

If ($numperso==0)
{
	if ($numag==0)
	{
	$reqsql = mysql_query("SELECT date_form, effectuer.commentaire, num_pers_responsable, nom_pers, prenom_pers, libelle_form, effectuer.num_form
	FROM effectuer, responsable, formation
	WHERE effectuer.num_pers_responsable=responsable.num_pers
	and formation.num_form=effectuer.num_form
	and effectuer.num_pers = '$num'");
	while ($row = mysql_fetch_row($reqsql))
	{
?>
    <tr>
      <td align="center" valign="middle"><?php echo $row[4].' '.$row[3] ?><div align="center"></div></td>
      <td align="center" valign="middle"><?php echo $row[5] ?></td>
      <td align="center" valign="middle"><?php echo $row[0] ?></td>
      <td align="center" valign="middle"><?php echo $row[1] ?></td>
      <td align="center" valign="middle"><?php echo "responsable d'un site" ?></td>
      <td align="center" valign="middle"><p><a href='Modifform.php?pers=<?php echo $row[8]; ?>&lieu=<?php echo $row[9]; ?>&jour=<?php echo $row[5]; ?>&prest=<?php echo $row[10]; ?>' onClick="return conf()">modifier</a></p>
      <p><a href='formDel.php?pers=<?php echo $row[8]; ?>&lieu=<?php echo $row[9]; ?>&jour=<?php echo $row[5]; ?>&prest=<?php echo $row[10]; ?>' onClick="return conf()">suppr</a></p></td>
    </tr>
  	<?php
	}
	}
	else
	{
	$reqsql = mysql_query("SELECT date_form, effectuer.commentaire, num_pers_agent_dentretien, nom_pers, prenom_pers, libelle_form, effectuer.num_form
	FROM effectuer, agent_dentretien, formation
	WHERE effectuer.num_pers_agent_dentretien=agent_dentretien.num_pers
	and formation.num_form=effectuer.num_form
	and effectuer.num_pers = '$num'");
	while ($row = mysql_fetch_row($reqsql))
	{
	?>
    <tr>
      <td align="center" valign="middle"><?php echo $row[4].' '.$row[3] ?><div align="center"></div></td>
      <td align="center" valign="middle"><?php echo $row[5] ?></td>
      <td align="center" valign="middle"><?php echo $row[0] ?></td>
      <td align="center" valign="middle"><?php echo $row[1] ?></td>
      <td align="center" valign="middle"><?php echo "agent d'entretien" ?></td>
      <td align="center" valign="middle"><p><a href='Modifform.php?pers=<?php echo $row[8]; ?>&lieu=<?php echo $row[9]; ?>&jour=<?php echo $row[5]; ?>&prest=<?php echo $row[10]; ?>' onClick="return conf()">modifier</a></p>
      <p><a href='formDel.php?pers=<?php echo $row[8]; ?>&lieu=<?php echo $row[9]; ?>&jour=<?php echo $row[5]; ?>&prest=<?php echo $row[10]; ?>' onClick="return conf()">suppr</a></p></td>
    </tr>
  	<?php
  	}
	}
	}
	else
	{
	$reqsql = mysql_query("SELECT date_form, effectuer.commentaire, num_pers_personnel, nom_pers, prenom_pers, libelle_form, effectuer.num_form
	FROM effectuer, personnel, formation
	WHERE effectuer.num_pers_personnel=personnel.num_pers
	and formation.num_form=effectuer.num_form
	and effectuer.num_pers = '$num'");
	while ($row = mysql_fetch_row($reqsql)) {
	?>
    <tr>
      <td align="center" valign="middle"><?php echo $row[4].' '.$row[3] ?><div align="center"></div></td>
      <td align="center" valign="middle"><?php echo $row[5] ?></td>
      <td align="center" valign="middle"><?php echo $row[0] ?></td>
      <td align="center" valign="middle"><?php echo $row[1] ?></td>
      <td align="center" valign="middle"><?php echo "personnel" ?></td>
      <td align="center" valign="middle"><p><a href='Modifform.php?pers=<?php echo $row[8]; ?>&lieu=<?php echo $row[9]; ?>&jour=<?php echo $row[5]; ?>&prest=<?php echo $row[10]; ?>' onClick="return conf()">modifier</a></p>
      <p><a href='formDel.php?pers=<?php echo $row[8]; ?>&lieu=<?php echo $row[9]; ?>&jour=<?php echo $row[5]; ?>&prest=<?php echo $row[10]; ?>' onClick="return conf()">suppr</a></p></td>
    </tr>
  <?php
  }
  }
  }
  ?>
  </table>   
  <p align="center"><a href="nouv_form.php?num=<?php echo $num ?>"><img src="../../image/bouton/button2E.gif" width="115" height="23" border="0" ></img></a></p>
</form>
</boby>

Merci d'avance

Invité
Invité n'ayant pas de compte PHPfrance

23 mai 2006, 16:01

je precise, en faite, si par exemple la personne est un agent d'entretien et bien au lieu de rechercher si la personne suivante est "autre chose", il considere qu'elle est agent dentretien.
En faite le test est fait une seul fois et non a chaque enregistrement.

Est-ce que je me suis mieux exprimer ?

merci

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

23 mai 2006, 18:50

Salut,

Je pense que tu ferais mieux de donner des exemples concrets avec ce que tu as en base de donnée et ce que tu voudrais en sortir.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

23 mai 2006, 22:03

Code : Tout sélectionner

+--------------------------+----------------+------------------+ |num_pers | 4 | 4 | |num_pers_agent_dentretien | 124 | 0 | |num_pers_responsable | 0 | 0 | |num_pers_personnel | 0 | 2 | |date_form | 2006/01/05 | 2006/05/01 | |num_form | 2 | 1 | |commentaire | null | null | +--------------------------+----------------+------------------+

c'est un heritage 4 et 124 fait parti de la table agent d'entretien
2 fait parti du personnel

Code : Tout sélectionner

+----------------+-----------------+----------------+---------------+ | num_pers | 4 | 124 | 2 | | nom_pers | Faure | Dupond | Vincent | | prenom_pers | Marie | Pierre | Lucie | +----------------+-----------------+----------------+---------------+ +-----------+------------------+-----------------+ |num_form | 1 | 2 | |lib_form | Ménage | Ramonage | +-----------+------------------+-----------------|

Je voudrait que ça affiche par exemple

Code : Tout sélectionner

+----------------+---------------+-----------------+--------+--------------------+ |Pierre Dupond | Ramonage | 2006/01/05 | null | agent dentretien | |Lucie Vincent | Ménage | 2006/05/01 | null | personnel | +----------------+---------------+-----------------+--------+--------------------+
merci

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

23 mai 2006, 23:43

A défaut de pouvoir aider pour le moment je vais faire un grand sourire :D

Enfait je sent soit le défaut de construction des tables soit un défaut de clair voyance de ma part.

C'est quoi les libellés des tables que tu présentes ?
Le 1er tableau est le résultat de la 1ère requête ?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

24 mai 2006, 09:04

les trois premier tableau sont respectivement effectuer, agent d'entretien, personnel(je lai ai mi en un seul tableau) et formation

et le dernier tableau cest se que devrais mafficher le tableau finale,

et moi j'ai soit

Code : Tout sélectionner

+----------------+---------------+-----------------+--------+--------------------+ |Pierre Dupond | Ramonage | 2006/01/05 | null | agent dentretien | | | Ménage | 2006/05/01 | null | agent dentretien | +----------------+---------------+-----------------+--------+--------------------+
soit

Code : Tout sélectionner

+----------------+---------------+-----------------+--------+--------------------+ |Lucie Vincent | Ménage | 2006/05/01 | null | personnel | | | Ramonage | 2006/01/05 | null | personnel | +----------------+---------------+-----------------+--------+--------------------+
cela differe selon l'ordre des ligne dans la base

Invité
Invité n'ayant pas de compte PHPfrance

24 mai 2006, 16:17

bon j'ai ajouté
(and effectuer.num_pers_responsable<>'0'
	or effectuer.num_pers_responsable<>'null')
au 3 dernière requete et ça ne m'affiche plus qu'un enregistrement.

En faite, le probleme c'est ma boucle, car en faite ça ne boucle pas

Normalement, lors de la premiere requete, ça devrais regarder le premier enregistrement faire l'ensemble de se qu'il y a de contenu dans la boucle, puis revenir a la premiere requete, prendre le second enregistrement, faire l'ensemble de la boucle, revenir a la premiere requete....jusqu'a la fin des enregistrement. non ? Pourquoi dans se cas mon second enregistrement ne passe pas tout mes test ?

merci