enregistrement requete dans un champ??

Eléphant du PHP | 335 Messages

28 juil. 2005, 11:04

Bonjour

J'ai une petite question :
Comment faire pour enregistrer le résultat d'une requete dans un champ d'une table?

Merci

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

28 juil. 2005, 11:18

Refaire une requête.

Eléphant du PHP | 335 Messages

28 juil. 2005, 11:23

Ban alors je m'explique :

VOici ma requete:
"SELECT DISTINCT c.responsibility_name 
 FROM fnd_user a, fnd_user_resp_groups b, fnd_responsibility_tl c
 WHERE a.user_name = '".$_GET['username']."'
   AND b.user_id = a.user_id
   AND b.responsibility_id = c.responsibility_id
   AND (b.end_date is null or b.end_date > sysdate)
   AND b.start_date < sysdate";
//On execute la requête en lui passant l'option OCI_DEFAULT
ociexecute($stmt);
//On parcourt les résultats et on affiche les champs
while (ocifetch($stmt)) { 
	echo ociresult($stmt,1)."<br>"; 
} 

Je voudrais enregistrer le résultat de cette requete dans le champs droits:
"UPDATE oracle SET droits=??? WHERE CONCAT(nom,' ',prenom)='".$_SESSION['id']."'"; 
Comment faire?

Merci

Mammouth du PHP | 543 Messages

28 juil. 2005, 12:05

La question est deja de savoir sous quelle forme tu souhaite stocker ton truc : chaine, tableau ... ?

Eléphant du PHP | 335 Messages

28 juil. 2005, 12:06

Le résultat c'est du texte

Je veux enregistrer ca dans le champ droits, je pense en format TEXT

Mammouth du PHP | 543 Messages

28 juil. 2005, 12:14

while (ocifetch($stmt)) {
    $var =  ociresult($stmt,1);
   //ici tu fais la requete oracle d'update : "UPDATE oracle SET droits=".$var." WHERE CONCAT(nom,' ',prenom)='".$_SESSION['id']."'";
}
si j'ai bien compris ce que tu veux :? lol

Eléphant du PHP | 335 Messages

28 juil. 2005, 12:20

Oui c'est bien ca!

Mais lorsque je fais la boucle d'affichage et que je l'affiche j'obtiens plusieurs lignes.

Avec ta méthode seul la dernière ligne est enregistré dans le champ droits de ma table.

Comment faire pour enregistrer toutes les lignes dans mon champ?

Merci

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

28 juil. 2005, 12:24

Ben mettre ta requete dans la boucle

Mammouth du PHP | 543 Messages

28 juil. 2005, 12:24

alors dans ce cas, tu fait du style
while (ocifetch($stmt)) {
   if (isset($var)) $var.= ociresult($stmt,1)."<br>";
   else $var = ociresult($stmt,1)."<br>";
}

   //ici tu fais la requete oracle d'update : "UPDATE oracle SET droits=".$var." WHERE CONCAT(nom,' ',prenom)='".$_SESSION['id']."'"; 
@+

ViPHP
ViPHP | 1024 Messages

28 juil. 2005, 12:34

fais un update avec une jointure.
=> une seule et unique requete


A+

Pascal

Eléphant du PHP | 335 Messages

28 juil. 2005, 14:24

grrr. j'y arrive pas!

toujours uniquement la dernière ligne qui s'enregistre

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

28 juil. 2005, 14:54

dans la boucle...ou concatène les valeurs à insérer

Eléphant du PHP | 335 Messages

28 juil. 2005, 14:56

Voici ma boucle :
while (ocifetch($stmt)) { 
	$droits = ociresult($stmt,1)."<br>"; 

require_once('../../connections/reseau.php'); // permet d'avoir les informations de connection à la base
mysql_select_db("reseau") or die("Impossible de trouver la base");
$query = "UPDATE oracle SET droits='$droits' WHERE CONCAT(nom,' ',prenom)='".$_SESSION['id']."'"; 
$result = mysql_query($query);
} 
Comme c'est une requete UPDATE, seul la derniere ligne est enregistrée.

Sinon comment je dois faire pour concaténer les lignes?

Merci

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

28 juil. 2005, 14:58

ajoute dans la boucle un echo de ta requête : tu verras combien de fois elle passe dedans...et pis n'aurais-tu qu'un seul résultat ?

Eléphant du PHP | 335 Messages

28 juil. 2005, 15:00

elle passe 3 fois, pour l'exemple que je teste je devrais avoir 3 lignes d'enregistrées...