Discussion:
Probleme formulaire Type image
(trop ancien pour répondre)
Xavier
2008-06-25 12:39:54 UTC
Permalink
Bonjour

Désolé si ça n'est pas le bon forum, et si tel est le cas, merci de
m'indiquer où chercher...

Bon. Voilà mon problème. Si quelqu'un pouvait m'enlever cette épine du pied,
je le remercie par avance.

J'ai un formulaire qui permet (en principe) de chercher des livres dans une
base de données.
Parmi les critères de choix, on peut indiquer l'auteur, et l'éditeur.
Bon, mais comme je vais avoir des millions d'auteurs et d'éditeurs, plutôt
que de les rentrer dans un menu déroulant, j'aimerais mettre des pictos du
genre "sélectionner un éditeur", "sélectionner un auteur". Ensuite, on va
chercher un éditeur, ou un auteur, sur d'autres pages, et quand le choix est
effectué, on est rebasculé sur la page de recherche des livres.

3 solutions :

1) Faire des liens tout bêtes derrière ces liens.
Problème : les données déjà rentrées dans le formulaire (ex : le titre, la
date, etc.) seront perdues quand l'internaute reviendra sur la page de
recherche des livres.

2) Faire des INPUT TYPE=submit
<INPUT TYPE=submit value='Editeur' name='Redirection'>
<INPUT TYPE=submit value='Auteur' name='Redirection'>
Et pour le bonton permettant d'afficher le résultat
<INPUT TYPE=submit value='AfficheResultat' name='Redirection'>
Ensuite, on récupère la valeur de $_POST["'Redirection"], et on est aiguillé
là où il faut.
Problème, les boutons 'submit', c'est moche...

3) Faire des INPUT TYPE=image
<INPUT TYPE=image value='Editeur' name='Redirection'>
etc.
Problème, ça ne marche pas.
Sur la page suivante, un truc du genre :

if ($_POST["'Redirection"]=='Auteur')
{
"Garde en mémoire les données du formulaire et
Va sur la page de recherche des auteurs" (écrit en vraies instructions
bien sûr)
}

... ne marche pas. Je n'arrive pas à récupérer le nom, ou la valeur d'un
input type image.

Quelqu'un aurait-il une solution pour utiliser des 'type image'?

Merci
Christophe Meresse
2008-06-26 05:08:52 UTC
Permalink
Post by Xavier
3) Faire des INPUT TYPE=image
<INPUT TYPE=image value='Editeur' name='Redirection'>
etc.
Probl�me, �a ne marche pas.
if ($_POST["'Redirection"]=='Auteur')
{
"Garde en m�moire les donn�es du formulaire et
Va sur la page de recherche des auteurs" (�crit en vraies instructions
bien s�r)
}
... ne marche pas. Je n'arrive pas � r�cup�rer le nom, ou la valeur d'un
input type image.
Quelqu'un aurait-il une solution pour utiliser des 'type image'?
Normalement tu peux utliser des <input type="image"> de la même
maniere qu'un <input type="submit"> en faisant par exemple <input
type="image" onclick="javascript: this.form.submit();"> (this.form
pas testé, à voir si c'est pas document.form ou je ne sais trop quoi)

Regarde du coté de javascript fonction openwindow et puis aussi
window.opener (qui est la fenetre qui à fait le openwindow) pour
remplir le champ auteur avec le retour de ta recherche d'auteur dans
cette fenetre popup...

Christophe
Mickaël Wolff
2008-06-26 07:23:36 UTC
Permalink
Post by Christophe Meresse
Normalement tu peux utliser des <input type="image"> de la même
maniere qu'un <input type="submit"> en faisant par exemple <input
type="image" onclick="javascript: this.form.submit();"> (this.form
pas testé, à voir si c'est pas document.form ou je ne sais trop quoi)
Quel est l'intérêt d'avoir alors des boutons image s'ils ont le même
effet qu'un bête submit ?
Post by Christophe Meresse
Regarde du coté de javascript fonction openwindow et puis aussi
window.opener (qui est la fenetre qui à fait le openwindow) pour
remplir le champ auteur avec le retour de ta recherche d'auteur dans
cette fenetre popup...
Tu es au courant que les popups furent immolées en place publique ? ;)

Bon, je vais répondre à Xavier...
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Christophe Meresse
2008-06-26 11:27:38 UTC
Permalink
  Quel est l'intérêt d'avoir alors des boutons image s'ils ont le même
effet qu'un bête submit ?
Le look du bouton...
Mais j'ai une autre question: A quoi servent les bouton type image ?
Personnellement je les utilise jamais, je fais juste des <img
onclick="...">.
  Tu es au courant que les popups furent immolées en place publique ? ;)
Ah non, je savais pour les frame mais pas pour les popups. Ceci dit ça
ne m'étonne pas :)
Je parlais de cette solution parce que Xavier me semblait vouloir
s'orienter vers ça mais je fais tout pour l'éviter en faisant
apparaitre des parties de ma page en display:none ou en utilisant
Ajax.

Christophe
Une Bev\ ue
2008-06-27 06:36:18 UTC
Permalink
Post by Christophe Meresse
Mais j'ai une autre question: A quoi servent les bouton type image ?
ils retournent la position où la souris a cliqué sur l'image du bouton :

j'ai un bouton-image :
<input type="image" src="button_create_rep/button_hue_0_to_360.png"
name="hue" />

et avec php, je retrouve la position, en x, de l'endroit où
l'utilisateur a cliqué :

$hue=((int)$_POST['hue_x'])-16;

ce qui, dans ce cas me donne un angle compris entre 0 et 360 °

même chose pour y
--
Une Bévue
Christophe Meresse
2008-06-27 12:25:59 UTC
Permalink
Post by Une Bev\ ue
Post by Christophe Meresse
Mais j'ai une autre question: A quoi servent les bouton type image ?
<input type="image" src="button_create_rep/button_hue_0_to_360.png"
name="hue" />
et avec php, je retrouve la position, en x, de l'endroit où
    $hue=((int)$_POST['hue_x'])-16;
Ca alors ! Excellent =)
Merci beaucoup.
Une Bev\ ue
2008-06-27 16:18:26 UTC
Permalink
Post by Christophe Meresse
Ca alors ! Excellent =)
un exemple :
http://thoraval.yvon.free.fr/PHP/button_create.php
mais bon, ça marche pas encore chez free, en local ca roule
les versions php ne sont pas les même 5 chez moi et 4 chez free..

et bien sûr le $_SERVER['DOCUMENT_ROOT'] n'est pas le même non +

c'est le bouton couleurs "arc en ciel" qui devrait retourner l'angle de
hue voulu pour créer un bouton de la couleur choisie.

j'ai piqué cette exemple chez Marc LYinage
http://www.entropy.ch/software/macosx/php/
voire sous "Examples" mais la version avec hue n'y est +...
--
Une Bévue
Dominique Ottello
2008-06-27 22:19:04 UTC
Permalink
Post by Une Bev\ ue
mais bon, ça marche pas encore chez free, en local ca roule
les versions php ne sont pas les même 5 chez moi et 4 chez free..
Bonjour,

Pour « forcer » php version 5 chez Free, dans un fichier .htaccess situé
à la racine du site mettre :

<ifDefine Free>
PHP 1
</ifDefine>

Ça ne pose pas de problème en local, tout du moins sous Windows et avec
Wampserver.
--
Il vaut mieux ignorer où l'on est, et savoir qu'on l'ignore, que de se
croire avec confiance où l'on n'est pas. Jean Dominique Cassini.
Technologie aéronautique - http://ottello.net - Les anciens de Vilgénis
Une Bev\ ue
2008-06-29 17:51:08 UTC
Permalink
Post by Dominique Ottello
Pour « forcer » php version 5 chez Free, dans un fichier .htaccess situé
<ifDefine Free>
PHP 1
</ifDefine>
Ça ne pose pas de problème en local, tout du moins sous Windows et avec
Wampserver.
OK, merci beaucoup pour l'info.
mais, c'est pas nécessairement qu'un pb de version php, plutôt
d'extension-module php ???
--
Une Bévue
Dominique Ottello
2008-06-30 08:42:30 UTC
Permalink
Post by Une Bev\ ue
mais, c'est pas nécessairement qu'un pb de version php, plutôt
d'extension-module php ???
Faire une comparaison local - site distant des informations retournées
avec phpinfo()

On peut ajouter, éventuellement, la liste des fonctions internes
définies avec un lien sur les explications :

$ref_docs = "http://www.php.net/manual/fr/function";
$tableau = get_defined_functions();
while (list($type,$list) = each($tableau)) {
if ($type == "internal" && is_array($list)) {
sort($list);
foreach ($list as $func) {
if ($func == "_") $func2 = "gettext";
else $func2 = preg_replace("/_/", "-", $func);
echo "<a href=\"$ref_docs.$func2.php\">$func</a><br>\n";
}
}
}
--
Aujourd'hui, l'idéal du progrès est remplacé par l'idéal de l'innovation :
il ne s'agit pas que ce soit mieux, il s'agit seulement que ce soit nouveau,
même si c'est pire qu'avant et cela de toute évidence. Montherlant
Technologie aéronautique - http://ottello.net - Les anciens de Vilgénis
Une Bev\ ue
2008-06-30 11:04:34 UTC
Permalink
Post by Dominique Ottello
Faire une comparaison local - site distant des informations retournées
avec phpinfo()
On peut ajouter, éventuellement, la liste des fonctions internes
<snip />
OK, merci bien !
--
Une Bévue
Xavier
2008-06-26 08:25:56 UTC
Permalink
Post by Christophe Meresse
Post by Xavier
3) Faire des INPUT TYPE=image
<INPUT TYPE=image value='Editeur' name='Redirection'>
etc.
Probl?me, ?a ne marche pas.
if ($_POST["'Redirection"]=='Auteur')
{
"Garde en m?moire les donn?es du formulaire et
Va sur la page de recherche des auteurs" (?crit en vraies
instructions
bien s?r)
}
... ne marche pas. Je n'arrive pas ? r?cup?rer le nom, ou la valeur d'un
input type image.
Quelqu'un aurait-il une solution pour utiliser des 'type image'?
Normalement tu peux utliser des <input type="image"> de la même
maniere qu'un <input type="submit"> en faisant par exemple <input
type="image" onclick="javascript: this.form.submit();"> (this.form
pas testé, à voir si c'est pas document.form ou je ne sais trop quoi)
Merci pour la réponse. J'avais vu sur la toile des trucs à base de
'onclick', mais sauf erreur de ma part, le formulaire est envoyé, sans qu'on
sache sur quelle image on a cliqué, alors qu'avec des bontons 'submit', on
peut récupérer le nom ou la valeur du bouton.
De plus, j'aimerais éviter le JS, à cause de tous les internautes qui le
désactivent.
Merci quand même. je ne vais pas pouvoir travailler là-dessus avant une
bonne quinzaine de jours, mais tout conseil sera le bienvenu quand je
remettrai les mains dans le cambouis.
A+

Xavier
Post by Christophe Meresse
Regarde du coté de javascript fonction openwindow et puis aussi
window.opener (qui est la fenetre qui à fait le openwindow) pour
remplir le champ auteur avec le retour de ta recherche d'auteur dans
cette fenetre popup...
Christophe
Mickael Wolff
2008-06-26 08:25:56 UTC
Permalink
XPost + Fu2
Post by Xavier
Désolé si ça n'est pas le bon forum, et si tel est le cas, merci de
m'indiquer où chercher...
Ça dépend de quoi on parle, mais c'est vrai que
<news:fr.comp.infosystemes.www.auteurs> serait plus approprié au début.
Post by Xavier
Parmi les critères de choix, on peut indiquer l'auteur, et l'éditeur.
Bon, mais comme je vais avoir des millions d'auteurs et d'éditeurs, plutôt
que de les rentrer dans un menu déroulant, j'aimerais mettre des pictos du
genre "sélectionner un éditeur", "sélectionner un auteur". Ensuite, on va
chercher un éditeur, ou un auteur, sur d'autres pages, et quand le choix est
effectué, on est rebasculé sur la page de recherche des livres.
Ce que je ferais, c'est implémenter une arborescence.
Post by Xavier
1) Faire des liens tout bêtes derrière ces liens.
Problème : les données déjà rentrées dans le formulaire (ex : le titre, la
date, etc.) seront perdues quand l'internaute reviendra sur la page de
recherche des livres.
L'information ne sera pas nécessairement perdue. Ça dépend comment tu
gères la donnée saisie. Vu que ce sera une recherche, le mieux sera de
toute façon de faite un formulaire utilisant la méthode get. Il suffira
de faire en sorte que les liens de sélection soient du genre :

?q=Albert%20Dupon&realisateur=Albert%20Dupontel

Mais je ne vois pas l'intérêt de conserver la requête dans ce cas...
Post by Xavier
2) Faire des INPUT TYPE=submit
<INPUT TYPE=submit value='Editeur' name='Redirection'>
<INPUT TYPE=submit value='Auteur' name='Redirection'>
Et pour le bonton permettant d'afficher le résultat
<INPUT TYPE=submit value='AfficheResultat' name='Redirection'>
Ensuite, on récupère la valeur de $_POST["'Redirection"], et on est aiguillé
là où il faut.
Problème, les boutons 'submit', c'est moche...
Mais non, c'est pas moche. On peut même leur appliquer des styles si
vraiment le style par défaut ne te plaît pas :) Le bon forum pour ça est
<news:fr.comp.infosystemes.www.auteurs>.
Post by Xavier
3) Faire des INPUT TYPE=image
<INPUT TYPE=image value='Editeur' name='Redirection'>
etc.
Problème, ça ne marche pas.
if ($_POST["'Redirection"]=='Auteur')
Au fait, dans ton exemple tu as une apostrophe malheureuse qui traîne.
Post by Xavier
... ne marche pas. Je n'arrive pas à récupérer le nom, ou la valeur d'un
input type image.
Je pense que tu fais face à un bogue de MSIE. En effet, la valeur d'un
input[@type='image'] n'est pas transmise au serveur par le navigateur.
Il faut contourner. La seule solution pour contourner ce bogue est
d'utiliser un javascript qui créerait un champs input[@type='hidden'],
avec le même nom que le bouton image.
Par exemple :

<script type='text/javascript>
function input_image_click()
{
var e = this.form.createElement("input") ;
e.name = this.name ;
e.value = this.value ;
e.type = 'hidden' ;

this.form.appendChild(e) ;
}

</script>

<form ...>

<input type='image'
onclick='input_image_click() ; return true ;'
value='Albert Dupontel'
src='albert-dupontel.jpeg'
alt='Albert Dupontel' />
</form>

Pas testé, je n'ai pas de MSIE sous la main. Mais bon, c'est du
Javascript en plus, et on est pas sur le bon forum pour en parler :-D En
tout cas, ce n'est pas un problème de PHP. C'est un problème de
découpage de ton application, et de contournement de bogue :)
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Continuer la lecture sur narkive:
Loading...