enregistrement requete dans un champ??

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : enregistrement requete dans un champ??

par mere-teresa » 29 juil. 2005, 10:39

Si tu repasses, fais signe :)

par mere-teresa » 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 :)

par Justone » 28 juil. 2005, 17:09

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

par mere-teresa » 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 !

par Justone » 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??

par mere-teresa » 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 ?

par Justone » 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?!!

par mere-teresa » 28 juil. 2005, 16:20

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

par Justone » 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?

par mere-teresa » 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 ?

par Justone » 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?

par mere-teresa » 28 juil. 2005, 15:56

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

par Justone » 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

par mere-teresa » 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";
}
}

par Justone » 28 juil. 2005, 15:00

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