PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > fr.comp.info.auteurs > question d'ergonomie
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
question d'ergonomie

Réponse
 
LinkBack Outils de la discussion
Vieux 22/03/2008, 10h18   #1 (permalink)
J-F Portala
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut question d'ergonomie

Bonjour
je travaille avec wamp

J'affiche une table article dans un tableau.
Chaque ligne correspond à la description de l'article et en fin de ligne ,
j'ai mis un lien "modifier" qui permet d'ouvrir une boite de
dialogue permettant de modifier l'article.
Lorsque je valide ce formulaire, je rafraichis mon tableau avec les
nouvelles informations.

Le probleme est que lorsque j'ai plusieurs centaines d'articles, lorsque je
réaffiche la page avec le tableau,
j'ai perdu la position de la ligne que je venais de modifier, ce qui fait
que si je veux modifier l'article juste au dessus ou en dessous
pour modifier un prix par exemple, je dois à nouveau chercher dans tout le
tableau.

Je peux mettre en évidence le dernier article modifié en mettant la ligne
d'une autre couleur, mais il faut quand
meme faire du scrolling pour le rechercher.

Je sais que le top serait de modifier directement dans le tableau
d'affichage sans passer par le formulaire, mais cela me parait
depasser mes compétences.

Auriez vous des pistes ?

merci

Jeff


  Réponse avec citation
Vieux 22/03/2008, 15h19   #2 (permalink)
SAM
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: question d'ergonomie

J-F Portala a écrit :
> Bonjour
> je travaille avec wamp


Wikipedia me dit que ce n'est qu'un package :
Apache + PHP + MySql
.... un serveur Web à la maison quoi.

> J'affiche une table article dans un tableau.
> Chaque ligne correspond à la description de l'article et en fin de ligne ,
> j'ai mis un lien "modifier" qui permet d'ouvrir une boite de
> dialogue permettant de modifier l'article.


Plus de précision ?
Qu'est-ce que c'est que cette boite de dialogue ?
(qu'il y a t-il dedans, comment sait-elle qu'on veut modifier l'article
et non pas son prix ou la quantité ? comment et où renvoie-t'elle la
modif ?)

> Lorsque je valide ce formulaire, je rafraichis mon tableau avec les
> nouvelles informations.
>
> Le probleme est que lorsque j'ai plusieurs centaines d'articles, lorsque je
> réaffiche la page avec le tableau,
> j'ai perdu la position de la ligne que je venais de modifier, ce qui fait
> que si je veux modifier l'article juste au dessus ou en dessous
> pour modifier un prix par exemple, je dois à nouveau chercher dans tout le
> tableau.


Ben ! Aussi ! c't'idée de valider alors que c'est pas fini !
Frénétique de la touche Entrée ?


> Je peux mettre en évidence le dernier article modifié en mettant la ligne
> d'une autre couleur, mais il faut quand
> meme faire du scrolling pour le rechercher.
>
> Je sais que le top serait de modifier directement dans le tableau
> d'affichage sans passer par le formulaire, mais cela me parait
> depasser mes compétences.


Le top, puisque tu sembles en gestion d'un futur formulaire de commande,
serait de tout mettre dans un vrai formulaire avec réf, descriptif, prix
dans des champs de formulaires qui sont alors directement modifiables.

Pour la modif d'affichage :

function ecrire(rang, cel, texte) { // cel = N° de cellule de la rangée
rang = rang.parentNode;
while(rang.tagName!='TD') rang = rang.parentNode;
rang.cells[cel-1].innerHTML = texte;
}

<button onclick="ecrire(this, 2, 'Paire de chaussettes')">



Alors ... par l'exemple :

CSS :

..hide { visibility: hidden; height: 0px; overflow: hidden; z-index: 0; }
td { position: relative }
td div { position: absolute; top: 0; border:1px solid; z-index: 100; }

HTML :

<form action="articles.php" name="f_art">
<table id="articles">
<tr><th>Ref</th>Desrc.</th><th>Px</th><th>Quant</th><th>Total</th><th>Modif</th></tr>
<tr><td><?php echo $Numero[] ?></td><td><?php echo $Descro[] ?></td> ...
<tr><td> ...
... ... ... </tr>
</table>
<input type=submit>
</form>

dernière cellule de 125ième rangée :
(le php devra écrire '125' partout où c'est nécessaire)

<td class="modif">
<button onclick="modifier(125)">modifier</button>
<div class="hide" id="modif_125">
<p>Article N° : <input name="Num_125" value="125"> -
Prix : <input name="Prx_125" value="31.25">€
<input name="Mem_125" type=hidden>
<p>Descriptif : <textarea name="Txt_125">
Apprendre le JavaScript, mais c'est facile.
</textarea>
<input type=button onclick="return modif(125)"
value="valider la modification">
<input type=button onclick="return annule(125)"
value="annuler la modification">
</div>
</td>

JS :

<script type="text/javascript">
function $(id) { return document.getElementById(id); }

function modifier(num) { $('modif_'+num).className = ''; }

function modif(num) {
var rang = $('articles).rows[num].getElementsByTagName('TD');
var F = document.forms['f_art'].elements;
// sauvegarde des originaux
F['Mem_'+num].value = F['Num_'+num].value + '|' +
F['Txt_'+num].value + '|' +
F['Prx_'+num].value;
// ecriture des modifs
rang[0].innerHTML = F['Num_'+num].value;
rang[1].innerHTML = F['Txt_'+num].value;
rang[2].innerHTML = F['Prx_'+num].value;
$('modif_'+num).className = 'hide';
return false;
}

function annule(num) {
var rang = $('articles).rows[num].getElementsByTagName('TD');
var F = document.forms['f_art'].elements;
// récupération des originaux
var Mem = F['Mem_'+num].value.split('|');
// ecriture des modifs
rang[0].innerHTML = F['Num_'+num].value = Mem[0];
rang[1].innerHTML = F['Txt_'+num].value = Mem[1];
rang[2].innerHTML = F['Prx_'+num].value = Mem[2];
$('modif_'+num).className = 'hide';
return false;
}
</script>


et pour vraiment confirmer tout d'un coup
le boutton de submit est après le table

Le PHP n'aura qu'à redistribuer à la BdD les données qui sont dans les
champs des divs de modification

Bon, après on peut compliquer avec une double validation :
- réaffichage via PHP pour être sûr que tout est OK
- validation pour enregistrement


> Auriez vous des pistes ?


Sinon, par méthode "fébrile", mettre dans le head :

<?php
# script php pour récupérer 'num'
$num = $POST[ ... ; // ou je ne sais quoi kivabien en php
?>
<script type="text/javascript">
var num ='<?php echo $num ?>';
function repere(val) { document.form.num.value = val;}
function init() {
if(num != '') {
num = document.forms['f_art'].elements['Num_'+num];
num.focus();
setTimeout(function(){num.blur();},200);
}
}
window.onload = init;
</script>

et mettre qque part dans le form :

<input type=hidden name="num" value="">

puis dans les boutons de submit de chaque rangée :

(exemple rangée N°125)
<input type=submit onclick="repere(125);">

Soit en PHP qque chose comme :

<input type=submit onclick="repere(<?php echo $Numero[] ?>);">



Le PHP, au retour du formulaire, devra avoir récupéré la variable
attachée 'num' et la ré-écrire oussavabien dans le JS du head.

--
sm
  Réponse avec citation
Vieux 22/03/2008, 15h54   #3 (permalink)
Denis Beauregard
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: question d'ergonomie

Le Sat, 22 Mar 2008 10:18:41 +0100, "J-F Portala" <jfportala@free.fr>
écrivait dans fr.comp.infosystemes.www.auteurs:

>Le probleme est que lorsque j'ai plusieurs centaines d'articles, lorsque je
>réaffiche la page avec le tableau,
>j'ai perdu la position de la ligne que je venais de modifier, ce qui fait
>que si je veux modifier l'article juste au dessus ou en dessous
>pour modifier un prix par exemple, je dois à nouveau chercher dans tout le
>tableau.


Une solution simple : saisir dans le tableau la date et l'heure de la
dernière modification et s'en servir pour afficher les n dernières
modifications ou pour repositionner le tableau au même endroit.


Denis

  Réponse avec citation
Vieux 22/03/2008, 20h58   #4 (permalink)
SAM
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: question d'ergonomie

Denis Beauregard a écrit :
> Le Sat, 22 Mar 2008 10:18:41 +0100, "J-F Portala" <jfportala@free.fr>
> écrivait dans fr.comp.infosystemes.www.auteurs:
>
>> Le probleme est que lorsque j'ai plusieurs centaines d'articles, lorsque je
>> réaffiche la page avec le tableau,
>> j'ai perdu la position de la ligne que je venais de modifier,

>
> Une solution simple : saisir dans le tableau la date et l'heure de la
> dernière modification et s'en servir pour afficher les n dernières
> modifications ou pour repositionner le tableau au même endroit.


J'a rien compris de rien compris !

Comment fais-tu pour te repositionner au "même endroit" ?
Tu as une molette automatique et réglée sur ta pendule ?

Ceci étant, au rechargement de la même page ça devrait s'afficher pareil
qu'avant, non ?

Si on avait une url de test ... ce serait plus facile de comprendre-voir
de quoi il retourne.

--
sm
  Réponse avec citation
Vieux 22/03/2008, 21h30   #5 (permalink)
Denis Beauregard
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: question d'ergonomie

Le Sat, 22 Mar 2008 20:58:19 +0100, SAM
<stephanemoriaux.NoAdmin@wanadoo.fr.invalid> écrivait dans
fr.comp.infosystemes.www.auteurs:

>Denis Beauregard a écrit :
>> Le Sat, 22 Mar 2008 10:18:41 +0100, "J-F Portala" <jfportala@free.fr>
>> écrivait dans fr.comp.infosystemes.www.auteurs:
>>
>>> Le probleme est que lorsque j'ai plusieurs centaines d'articles, lorsque je
>>> réaffiche la page avec le tableau,
>>> j'ai perdu la position de la ligne que je venais de modifier,

>>
>> Une solution simple : saisir dans le tableau la date et l'heure de la
>> dernière modification et s'en servir pour afficher les n dernières
>> modifications ou pour repositionner le tableau au même endroit.

>
>J'a rien compris de rien compris !
>
>Comment fais-tu pour te repositionner au "même endroit" ?
>Tu as une molette automatique et réglée sur ta pendule ?
>
>Ceci étant, au rechargement de la même page ça devrait s'afficher pareil
>qu'avant, non ?
>
>Si on avait une url de test ... ce serait plus facile de comprendre-voir
>de quoi il retourne.


D'après ce que j'ai compris du problème, c'est qu'il a une base de
données, qu'il édite un élément à la fois, et il voudrait se
repositionner au même endroit + 1 une fois que les données ont été
saisies.

Soit il note quelque part le numéro de la dernière entrée, soit
il peut classer par date les dernières modifications comme je
suggère.

Ensuite, il affiche tout bonnement la position suivant la dernière
modif.

S'il affiche plusieurs éléments à la fois, il suffirait d'avoir
un "set focus" en javascript (mais je ne sais pas comment le faire).


Denis

  Réponse avec citation
Vieux 22/03/2008, 23h29   #6 (permalink)
SAM
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: question d'ergonomie

Denis Beauregard a écrit :
> Le Sat, 22 Mar 2008 20:58:19 +0100, SAM
> <stephanemoriaux.NoAdmin@wanadoo.fr.invalid> écrivait dans
> fr.comp.infosystemes.www.auteurs:
>
>> J'a rien compris de rien compris !

>
> D'après ce que j'ai compris du problème, c'est qu'il a une base de
> données, qu'il édite un élément à la fois, et il voudrait se
> repositionner au même endroit + 1 une fois que les données ont été
> saisies.


C'est ce qu'il semble.

> S'il affiche plusieurs éléments à la fois, il suffirait d'avoir
> un "set focus" en javascript (mais je ne sais pas comment le faire).


J'ai compris qu'on était dans ce cas de figure.

Je proposais d'entrer dans un hidden le N° de la dernière ligne vue.
Le fichier PHP étant supposé, au retour, le re-donner à un JS qui
placerait le focus sur un des éléments de la rangée visée.
On a bien la même façon de voir la chose.

Mais je n'ai pas trop compris l'histoire de la date+heure.

--
sm
  Réponse avec citation
Vieux 22/03/2008, 23h43   #7 (permalink)
Denis Beauregard
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: question d'ergonomie

Le Sat, 22 Mar 2008 23:29:37 +0100, SAM
<stephanemoriaux.NoAdmin@wanadoo.fr.invalid> écrivait dans
fr.comp.infosystemes.www.auteurs:

>Mais je n'ai pas trop compris l'histoire de la date+heure.


L'an dernier, j'avais développé (mais pas terminé) un petit logiciel
en PHP pour gérer une liste de liens. Je prévoyais ajouter l'heure du
dernier ajout pour annuler les dernières corrections. J'ai répondu
avec ce concept en tête.


Denis

  Réponse avec citation
Vieux 23/03/2008, 12h31   #8 (permalink)
Fredchou
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: question d'ergonomie

> Le probleme est que lorsque j'ai plusieurs centaines d'articles, lorsque
> je réaffiche la page avec le tableau,
> j'ai perdu la position de la ligne que je venais de modifier, ce qui fait
> que si je veux modifier l'article juste au dessus ou en dessous
> pour modifier un prix par exemple, je dois à nouveau chercher dans tout le
> tableau.


Il me semble que tu peux faire ça, tout simplement, avec une "ancre"
(http://www.la-grange.net/w3c/html4.0...ks.html#h-12.1). Tu créer
un formulaire pour chaque fiche, tu associes une ancre à chaque formulaire
et tu mets sur le lien "action" de ton formulaire l'ancre de la fiche
suivante.

<FORM action="modif_fiches.php#fiche2" method="post" id="fiche1">
...le formulaire de la fiche n°1...
</FORM>

<FORM action="modif_fiches.php#fiche3" method="post" id="fiche2">
...
</FORM>

--
Fredchou
mailto:fredchou@nospam.free.fr.invalid


  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 15h38.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,16560 seconds with 16 queries