incrementation de donnée

Eléphant du PHP | 155 Messages

31 mai 2005, 12:19

salut,

j'ai un form qui s'enregistre dans une table. cette table a 2 champs en clé primaire.
ces champs, je veux les incrementer moi-même, mais ca marche pas.

voici le bout de code utile:

ici, j'incremente:
if (isset($_GET["id"],$GET_["ide"])) {
//si oui:   
//on selectionne l'enregistrement de la table versions 
  $str_requete = "SELECT * FROM phpgw_workf_versions WHERE  id_note=".$_GET["id"]." and id_version=".$GET["ide"];
//on execute la requete
  $o_result = mysql_query($str_requete);
  $a_result = mysql_fetch_array($o_result, MYSQL_ASSOC) ;
//incrementation de id version: on prend id max
$st = "SELECT DICTINCT MAX(id_version) FROM phpgw_workf_versions where id_note=".$_GET["id"];
$varVe = mysql_query($st); 
$varVes=mysql_fetch_array($varVe, MYSQL_ASSOC);
//on ajoute 1
$varV= $varVes['MAX(id_version)'] +1;
//on garde le mê id_note
$varN= $_GET["id"];

}
else //si non: (ouverture de la page normalement)
{
   //initialisation de l'id_version
$varV=1;
//incrementation de id_note: on prend le max
$str_reque = "SELECT DICTINCT MAX(id_note) FROM phpgw_workf_versions";
$varNo = mysql_query($str_reque);
$varNos=mysql_fetch_array($varNo, MYSQL_ASSOC);
//on ajoute 1
$varN= $varNos['MAX(id_note)'] +1;
ensuite, je rempli des champs de formlaire avec ces variables:

Code : Tout sélectionner

Note:<INPUT type=text name='id_note' SIZE='11' MAXLENGTH='11' value='<?= $varN ?>'><br> Version:<INPUT type=text name='id_version' SIZE='11' MAXLENGTH='11' value='<?= $varV ?>'><br><br>
mais dans mes champs, il est toujours marqué 1 et 1.

QU'est ce qui cloche?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

31 mai 2005, 12:24

Si tu veut réupérer l'ID max de ta table, il ne faut pas que tu mette de clause where dans ta requete...

Code : Tout sélectionner

$st = "SELECT DICTINCT MAX(id_version) FROM phpgw_workf_versions";
Ce que tu faisait, c'était récupérer l'id de la ligne définit par un id donné et lui ajouté 1.

ca aurait été la même chose que d'écrire
$varV = $_GET["id"] +1;
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 155 Messages

31 mai 2005, 12:26

ok, mais moi je veut le max des version dont la note est X.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

31 mai 2005, 12:42

Peut être qua ça vient du nom du champ ...

essaye ça :
$st = "SELECT DICTINCT MAX(id_version) as max FROM phpgw_workf_versions where id_note=".$_GET["id"];
//on ajoute 1
$varV= $varVes['max'] +1; 
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 155 Messages

31 mai 2005, 12:47

j'ai toujkours des 1 dans mes champs,

est-ce que le problème ne viendrai pas du fait qu'on ne puisse pas remplir mes champs a partir de cette page avec ce code là? (j'en sais rien)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

31 mai 2005, 13:03

Si les 2 bouts de code que tu m'a donné proviennent du même fichier, ca doit fonctionner !!!!

Est-ce que tu passe dans le cas où tu as une id en GET ou pas ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 155 Messages

31 mai 2005, 14:08

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/html/egroupware/workf/appli/rediger.php on line 51

j'ai ce warning a l'execution; la ligne 51 c'est celle là:
$varNos=mysql_fetch_array($varNo, MYSQL_ASSOC);

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

31 mai 2005, 14:26

µCa veut dire que tu requete n'est pas valide et qu'elle a retournée un message d'erreur.

affiche ta requete et teste là sous phpMyAdmin
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 155 Messages

31 mai 2005, 14:37

ha la l a! ben ouais!

vla ce qui di myadmin:

requête SQL: Documentation

SELECT DICTINCTMAX( id_note )
FROM phpgw_workf_versions

MySQL a répondu:Documentation
#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'MAX(id_note) FROM phpgw_workf_versions' at line 1

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

31 mai 2005, 14:42

Tu ne peux pas avoir distinct et max dans la même requête si tu n'utilise pas GROUP BY.

Max va te retourner 1 seul résultat, ca ne sert donc à rien d'utiliser DISTINCT
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 155 Messages

31 mai 2005, 14:46

ah ok, et alors pkoi y'a pas d'erreurs là!
$st = "SELECT DICTINCT MAX(id_version) as max FROM phpgw_workf_versions where id_note=".$_GET["id"];

Eléphant du PHP | 155 Messages

31 mai 2005, 14:48

comment puis-je empêcher qu'on change la valeur d'un champ?
de ces champs là pour etre plus précise.
dedans, on affiche les id_note et id_version , mais je ne veux pas qu'on puisse les modifiés.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

31 mai 2005, 14:48

Peut être la clause where ....

J'en sais pas trop !!!!

Et puis dans le copier/coller, il est écrit DISTINCTMAX et non pas DISTINCT MAX, ça peut aussi être ça ...
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 155 Messages

31 mai 2005, 15:12

merci, merci de ton aide.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

31 mai 2005, 15:28

Ca marche ... ou tu abandonne ?

[Resolu] ?????
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer