enregistrement requete dans un champ??

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

28 juil. 2005, 15:08

C'est louche ! :-s

Et en transformant avec un if à l'intérieur pour voir ce qui se passe ?

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

if(require_once('../../connections/reseau.php'))// permet d'avoir les informations de connection à la base
{
    echo "require OK <br />";
} 
mysql_select_db("reseau") or die("Impossible de trouver la base");
$query = "UPDATE oracle SET droits=.$droits.' WHERE CONCAT(nom,' ',prenom)='".$_SESSION['id']."'";
echo $query."<br />";
if($result = mysql_query($query))
{
    echo "mysql query : OUI";
}
else
{
    echo "mysql query : NON";
}
}

Eléphant du PHP | 335 Messages

28 juil. 2005, 15:13

je ne pense pas que ce soit louche

regarde :
je recupère la première ligne dans $droits et j'UPDATE.
ensuite je recupère la deuxième ligne dans $droits et j'UPDATE de nouveau ce qui fait que la première ligne qui été enregistré se retrouve effacé.
c'est pour quoi au final j'ai seulement la dernière ligne qui est enregistrée.

je teste avec le IF......

EDIT avec le if :
require OK
UPDATE oracle SET droits=.ARN ENG02 Contrats
.' WHERE CONCAT(nom,' ',prenom)='SSS Sss'
mysql query : NONrequire OK
UPDATE oracle SET droits=.ARN MFG04 Contrats
.' WHERE CONCAT(nom,' ',prenom)='SSS Sss'
mysql query : NONrequire OK
UPDATE oracle SET droits=.ARN OM02 Titulaire
.' WHERE CONCAT(nom,' ',prenom)='SSS Sss'
mysql query : NON

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

28 juil. 2005, 15:56

Il ne fait jamais le mysql_query donc ?
Tu es connectée à la base ? :-k

Eléphant du PHP | 335 Messages

28 juil. 2005, 16:06

Ba oui!
J'ai deja fait d'autres requetes sur cettable et aucun probleme!

Voici ce qui s'enregistre dans le champ droits :
.ARN OM02 Titulaire<br>.

et c'est tout!!

EDIT :
je me suis trompé tout a l'heure. en fait, j'ai ca
require OK
UPDATE oracle SET droits='.ARN ENG02 Contrats
.' WHERE CONCAT(nom,' ',prenom)=' '
mysql query : OUIrequire OK
UPDATE oracle SET droits='.ARN MFG04 Contrats
.' WHERE CONCAT(nom,' ',prenom)=' '
mysql query : OUIrequire OK
UPDATE oracle SET droits='.ARN OM02 Titulaire
.' WHERE CONCAT(nom,' ',prenom)=' '
mysql query : OUI

donc je me connecte bien a la base

Le probleme ne vient pas du update comme je l'expliquais dans mon précédent post?

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

28 juil. 2005, 16:16

Je suis certaine que c'est un problème très idiot...
bon...il te note en echo mysql query non mais la requête se fait quand même...étrange...?

Et tu ne la fais pas après le while ta requête ?
while (ocifetch($stmt)) {
    $droits = ociresult($stmt,1)."<br>";

// pourquoi ne pas mettre ce require avant la boucle ?
if(require_once('../../connections/reseau.php'))// permet d'avoir les informations de connection à la base
{
    echo "require OK <br />";
}

mysql_select_db("reseau") or die("Impossible de trouver la base");

var_dump($_SESSION['id']);//cette variable ne passe pas...testons la !

$query = "UPDATE oracle SET droits='.$droits.' WHERE CONCAT(nom,' ',prenom)='".$_SESSION['id']."'";//attention manquait une apostrophe donc un point avant ARN

echo $query."<br />";
if(mysql_query($query))//le changement proposé est là !
{
    echo "mysql query : OUI<br />";
}
else
{
    echo "mysql query : NON<br />";
}
}
edit : Ah bah, ta requête est incomplète, déjà...mais il devrait enregistrer les 3 requêtes quand même, non ?

Eléphant du PHP | 335 Messages

28 juil. 2005, 16:19

EDIT :
je me suis trompé tout a l'heure. en fait, j'ai ca :
require OK
UPDATE oracle SET droits='.ARN ENG02 Contrats
.' WHERE CONCAT(nom,' ',prenom)=' '
mysql query : OUIrequire OK
UPDATE oracle SET droits='.ARN MFG04 Contrats
.' WHERE CONCAT(nom,' ',prenom)=' '
mysql query : OUIrequire OK
UPDATE oracle SET droits='.ARN OM02 Titulaire
.' WHERE CONCAT(nom,' ',prenom)=' '
mysql query : OUI

donc je me connecte bien a la base

Le probleme ne vient pas du update comme je l'expliquais dans un précédent post?

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

28 juil. 2005, 16:20

$_SESSION['id'] ne passe pas donc !
tu as un session_start() au début ?
tu as rempli cette variable ?

Eléphant du PHP | 335 Messages

28 juil. 2005, 16:27

Attends la on est en train de ne pas se comprendre

Alors je reprends :
-Avec ce code
while (ocifetch($stmt)) { 
    $droits = ociresult($stmt,1)."<br>"; 

if(require_once('../../connections/reseau.php'))// permet d'avoir les informations de connection à la base 
{ 
    echo "require OK <br />"; 
} 
mysql_select_db("reseau") or die("Impossible de trouver la base"); 
$query = "UPDATE oracle SET droits='.$droits.' WHERE CONCAT(nom,' ',prenom)='".$_SESSION['id']."'"; 
echo $query."<br />"; 
if($result = mysql_query($query)) 
{ 
    echo "mysql query : OUI"; 
} 
else 
{ 
    echo "mysql query : NON"; 
} 
} 
J'obtiens :
require OK
UPDATE oracle SET droits='.ARN ENG02 Contrats
.' WHERE CONCAT(nom,' ',prenom)=' '
mysql query : OUIrequire OK
UPDATE oracle SET droits='.ARN MFG04 Contrats
.' WHERE CONCAT(nom,' ',prenom)=' '
mysql query : OUIrequire OK
UPDATE oracle SET droits='.ARN OM02 Titulaire
.' WHERE CONCAT(nom,' ',prenom)=' '
mysql query : OUI

La variable de session est bien celle que je veux.

J'ai bien mysql query a OUI.

Et dans mon champ droits j'ai uniquement ca : .ARN OM02 Titulaire<br>.

Je pense que comme ma requete est un UPDATE, a chaque enregistrement d'une ligne, la précédente est effacé. Donc j'obtiens seulement la dernière au final.
Cela doit etre un problème de concaténation.

Qu'en pensez vous ma mère?!!

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

28 juil. 2005, 16:38

aaaaaaaaaaaaaaaaah je croyais que mysql_query était à NON !

Bon hum, oui, effectivement, il serait bon que CONCAT(nom,' ',prenom) change à chaque fois.
Essaie avec un INSERT pour voir :)
Sinon, es-tu certaine de ta condition WHERE ?

Eléphant du PHP | 335 Messages

28 juil. 2005, 16:50


Sinon, es-tu certaine de ta condition WHERE ?
Oui ma condition where est bonne et je ne peux pas changer CONCAT(nom,' ',prenom) change à chaque fois.

Comment faire alors??

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

28 juil. 2005, 17:01

Oui ma condition where est bonne et je ne peux pas changer CONCAT(nom,' ',prenom) change à chaque fois.

Comment faire alors??
Mettre une situation réelle de nom prénom, s'ils changent à chaque fois, ce ne sera pas écrasé...
Et si tu veux que ce ne soit pas écrasé c'est INSERT et pas UPDATE !

Eléphant du PHP | 335 Messages

28 juil. 2005, 17:09

MAis avec un INSERT INTO je ne peux plus faire de WHERE??

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

28 juil. 2005, 17:14

Attends, que veux tu ?
Au final, tu veux avoir
ARN ENG02 Contrats Nom1 Prenom1
ARN ENG02 Contrats Nom2 Prenom2

ou

ARN ENG02 Contrats Nom1 Prenom1
ARZ ENG03 Contrats Nom1 Prenom1
TRZ ENG04 Contrats Nom1 Prenom1

INSERT permet d'insérer des nouvelles lignes dans la base et UPDATE de modifier un champ précis. Si tu le modifies 3 fois de suite (dans tes tests) il est normal que la dernière modification apparaisse.

Si tu veux avoir l'historique des modifications, il va falloir ajouter un champ date en plus :)

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

29 juil. 2005, 10:39

Si tu repasses, fais signe :)
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.