Page 1 sur 2
enregistrement requete dans un champ??
Posté : 28 juil. 2005, 11:04
par Justone
Bonjour
J'ai une petite question :
Comment faire pour enregistrer le résultat d'une requete dans un champ d'une table?
Merci
Posté : 28 juil. 2005, 11:18
par mere-teresa
Refaire une requête.
Posté : 28 juil. 2005, 11:23
par Justone
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
Posté : 28 juil. 2005, 12:05
par raptor
La question est deja de savoir sous quelle forme tu souhaite stocker ton truc : chaine, tableau ... ?
Posté : 28 juil. 2005, 12:06
par Justone
Le résultat c'est du texte
Je veux enregistrer ca dans le champ droits, je pense en format TEXT
Posté : 28 juil. 2005, 12:14
par raptor
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
Posté : 28 juil. 2005, 12:20
par Justone
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
Posté : 28 juil. 2005, 12:24
par mere-teresa
Ben mettre ta requete dans la boucle
Posté : 28 juil. 2005, 12:24
par raptor
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']."'";
@+
Posté : 28 juil. 2005, 12:34
par pascaltje
fais un update avec une jointure.
=> une seule et unique requete
A+
Pascal
Posté : 28 juil. 2005, 14:24
par Justone
grrr. j'y arrive pas!
toujours uniquement la dernière ligne qui s'enregistre
Posté : 28 juil. 2005, 14:54
par mere-teresa
dans la boucle...ou concatène les valeurs à insérer
Posté : 28 juil. 2005, 14:56
par Justone
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
Posté : 28 juil. 2005, 14:58
par mere-teresa
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 ?
Posté : 28 juil. 2005, 15:00
par Justone
elle passe 3 fois, pour l'exemple que je teste je devrais avoir 3 lignes d'enregistrées...