il est bien là le problème
peux ton donner un id de maniere dynamique ?
il est bien là le problème
peux ton donner un id de maniere dynamique ?
Ils proviennent d'où tes items ? d'une base de données ?
On peut voir le schéma(structure) de la table ? Qui l'a conçue ?
le requete :
l'alimentation en php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 function &getAllCommentairesbyFiche($metier,$sitegeo,$cptdossier,$numligne) { $query="select rownum numinliste,'COMM_'||rownum namechamps, l.commentaire TYPECOM,c.commentaire COMM,c.UTILCRE,to_char(c.DATECRE,'DD/MM/RRRR HH24:MI:SS') DATECRE from sbedba.commentsbe c, sbedba.libelles l where c.metier='".$metier."' and c.sitegeo='".$sitegeo."' and c.cptdossier='".$cptdossier."' and c.numligne=".$numligne." and l.entete=102 and l.ligne=c.type order by c.datecre desc"; $result=DBC::NewRecordSet($query); return $result; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $items_list3=(CommonModel::getAllCommentairesbyFiche($metier,$sitegeo,$cptdossier,$numligne)); $this->Template->setChildDataSource('listComm',$items_list3);
Merci pour la requete, la structure de la table maintenant :
Sous phpMyAdmin, selectionne ta table, selectionne [export]
, puis [Go] et copie-colle ici le script sql de création de la table.
c'est sur une base de données oracle ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 CREATE TABLE SBEDBA.COMMENTSBE ( SITEGEO CHAR(2), METIER CHAR(1), CPTDOSSIER CHAR(7), NUMLIGNE NUMBER(3), COMMENTAIRE VARCHAR2(2000), TYPE NUMBER(3), UTILCRE VARCHAR2(20), DATECRE DATE, UTILMOD VARCHAR2(20), DATEMOD DATE, TYPDOC CHAR(2) )
Il y a t'il une clef sur cette table ?
Ben il faut en mettre une ! Sinon tu es mal barrée...
certes c'est une erreur de conception à l'origine, mais je ne vois pas ou cela peut gener le fonctionnement
Ben ça gene le fonctionnement de la suppression/modification... Comment peux tu être sur d'effacer une ligne bien précise de ta table si tu ne peux pas la différentier d'une autre ???
je connais forcement les champs metier,sitegeo,cptdossier,numligne
ensuite en cliquant sur le bouton supprimer je recupere le commentaire
et je supprimmes les enregistrement du couple metier,sitegeo,cptdossier,numligne dont le commentaire correspond
Donc le tuple (metier,sitegeo,cptdossier,numligne) est une clef alors ?
Tu es vraiment sur de pas avoir deux commentaire de meme metier, même sitego, même sptdossier et même numligne ???
Par ce que ceci me fait dire le contraire
Code : Sélectionner tout - Visualiser dans une fenêtre à part getAllCommentairesbyFiche($metier,$sitegeo,$cptdossier,$numligne)
non on peux considerer le tuple metier,sitegeo,cptdossier,numligne,commentaire comme unique
Alors je vais t'expliquer comment j'aurais fais avec une clef primaire dédiée id :
dans le formulaire j'aurais :
(123 et 124 sont les id de deux lignes dont l'une est à supprimer)
Je clique sur le supprimer qui correspond à 123.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 <form ...> ... ... ... <input name="COMM[123]" value="???" /> ... <input type="submit" name="supprimer" value="123" /> ... ... ... ... <input name="COMM[124]" value="???" /> ... <input type="submit" name="supprimer" value="124" /> ... </form>
Un dump de $_REQUEST donnerait grosso modo ceci :
Donc on retrouve facilement la valeur du COMM correspondant au bouton cliqué :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 $_REQUEST = array ( ['supprimer'] => '123', ['COMM'] => array ( ..., [123] => '???', [124] => '???', ... ) )
Tu comprends le principe ? C'est pourquoi j'ai insisté pour que tu aies une clef primaire unique...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $id = $_REQUEST['supprimer']; $comm = $_REQUEST['COMM'][$id];
Maintenant je te laisse travailler avec une clef qui fait 2000+2+1+7+3 = 2013 caractères ...
Je te conseille vivement de créer une colonne clef de type entier en autoincrement (attention à l'existant) pour pouvoir travailler dessus, sinon tu risques de t'en mordre les doigts un jour où l'autre...
Partager