Listes liées+ Base de donéees

Fermé
bbk974 - 16 août 2007 à 10:40
 bbk974 - 17 août 2007 à 14:49
Bonjour, j'ai un problème pour appelé une requêtre faite par un utilisateur grâce à 2 listes liées. Une requête s'effectue sur une procédure d'un processus.Donc cela fait 3 tables (requests,processes et procedures)

J'aimerai pouvoir choisir un processus (parmis les processus de la table requests) dans une première liste puis une procédure (parmis les procédures de la table requests) liée à la première sélection.

J'arrive à créer la première liste des processus mais la seconde qui est vide...

Peut-être que cela se joue sur les data[0]... Voici d'abord ma table REQUESTS ou sont répertoriés l'identifiant de la procédure et du processus liée à la requeste:

***Table REQUESTS***

idrequest(identifiant)-page-chapter-paragraph-wording-day-month-year-iduser-idprocess-idprocedure


VOici le code:
<?php

	include "modules/adodb/adodb.inc.php";
	include "config/config.php";
// Connexion a la base de donnees  

$db = NewADOConnection("oci8");
$cstr = "(DESCRIPTION=(ADDRESS=(PROTOCOL=$PROTOCOL)(HOST=$HOST)(PORT=$PORT))(CONNECT_DATA=(SID=$SID)))";
$db->Connect($cstr, $USER, $PWD);


$req = "select distinct processes.heading from processes, requests where requests.idprocess=processes.idprocess order by processes.heading ASC "; 
$res=$db->Execute($req);

?>

<table>
<td>
	<tr>
	<td><label for="pros2">Veuillez sélectionner le <font COLOR="#39C0F"><em>processus</em></font> concerné :</label></td>
	<td><select name="pros2" id="id_pros2" onChange="submit()">
	<option>-- Choisissez --</option>
		
<?php
			while ($data=$res->FetchRow()){
			
?>

<option value="<?php echo $data[0]?>" <?php if($_POST['pros2']==$data[0]){echo "selected";} ?>><?php echo $data[0]?></option>

<?php
			}
?>
       </select> 
       </td>
	   </tr>
</td>

//***Jusqu'ici c'est ok***

<br>
<br>

<?php	
	if(isset($_POST['pros2']) && $_POST['pros2']!="")
	{

$req = "select procedures.heading from procedures, requests where requests.idprocess='".$_POST['pros2']."' AND procedures.idprocedure=requests.idprocedure order by requests.idprocedure ASC" ;
$res=$db->Execute($req);
?>

<tr>
	<td><label>Veuillez sélectionner la <font COLOR="#39C0F"><em>requête</em></font> concernée :</label></td>
	<td><select name="req1" id="id_req1">
	<option>-- Choisissez --</option>
		
<?php
			while ($data=$res->FetchRow()){
			
?>

<option value="<?php echo $data[0]?>" ><?php echo $data[1]?></option>
<?php
	}
?>
	</select> 
	</td>
</tr>

<?php
}
?>



CDLT

BBK974

1 réponse

personne pour m'aider????
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
16 août 2007 à 13:31
Bonjour,

Regarde tes requêtes : dans la première, tu sélectionnes processes.headings, que tu places aussi bien en VALUE qu'en libellé de tes <option>.
Par contre, dans la deuxième, tu cherches à le comparer avec le idProcess !

Bien sûr, tes headings sont différents de tes idProcesses...

A mon avis, dans la première requête, tu devrais sélectionner les headings ET les idProcess, utiliser le idProcess dans le champ VALUE, et le heading comme libellé de l'<option>.

Ce qui donnerait :
// 1ère requête
$req = "select distinct processes.heading, processes.idprocess from processes, requests where requests.idprocess=processes.idprocess order by processes.heading ASC ";
// Utilisation
[...]
<option value="<?php echo $data[1]?>" <?php if($_POST['pros2']==$data[1]){echo "selected";} ?>><?php echo $data[0]?></option>

Qu'en penses-tu ?

Xavier

(PS : ne soit pas si impatient, on est en Août, tout le monde n'est pas forcément présent pour pouvoir répondre dans les deux heures !)
0
bbk974 > Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021
16 août 2007 à 14:28
Merci de me répondre, désolé pour mon impatience mais je suis pressé par le temps et stressé...


Sinon avec ton code, la première liste est nourrie mais la deuxième est vide (malgré qu'elle puisse s'ouvrir comme si elle prenait en compte les infos...qui restent invisibles)

Je pense que ma deuxième requete ne doit pas être juste...
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011 > Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021
16 août 2007 à 15:01
Dans ta deuxième liste déroulante, tu as <?php echo $data[1]?>, alors que $data n'a qu'un seul champ d'après ta requête...
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011 > Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021
16 août 2007 à 15:03
Sinon, n'hésite pas à rajouter des echo pour débuguer.
Par exemple, juste après ta deuxième requête, place echo $req; et regarde ce qui s'affiche...
0
bbk974 > Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021
16 août 2007 à 18:27
Merci j'ai suivi tes conseils et ça marche.

L'étape est suivante d'obtenir un tableau d'information regroupant un ensemble de données.

**Ce qui est fait:

-1ere liste des processus
-2eme liste des procedures
-quand on sélectionne une procédure, il y aura toutes les demandes faites sur la procédure sélectionnée.

**Ce que je voudrais faire, c'est:

Pouvoir grâce à un bouton radio et un bouton submit, sélectionner une demande et la supprimer....

....
Ce qui me donne le tableau avec les demandes liées à une procédure:

<tr>
		<td valign="middle" align "center" width="300" value="<?php echo $data[0]?>" ><?php echo $data[2]?></td>
		<td valign="middle" align "center" width="300" value="<?php echo $data[0]?>" ><?php echo $data[3]?></td>
		<td><input type="radio" name="choice" value="<?php echo $data[0]?>"></td>
	</tr>


Le bouton qui va acec:
<input type="submit" name="delete" value="Supprimer une proc&eacutedure">


Et enfin la partie qui permet de lier ces actions:

if (isset($_POST["choice"]) && ($_POST["delete"]) )
	{
		$choice=$_POST["choice"];
	    $db->Execute("DELETE FROM procedures WHERE idprocedure=$choice" );

	} 
	


Mais ca ne marche pas.....Je sélectionne puis j'appuie sur supprimer mais rien

CDLT

bbk974
0