Question php javascript...

Signaler
Messages postés
194
Date d'inscription
lundi 11 juillet 2005
Statut
Membre
Dernière intervention
13 avril 2007
-
Messages postés
445
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
22 mars 2007
-
Salut à vous!



Alors je pésente la situation...

J'ai un formulaire et lorsque le client a fini sa saisie dans un
textbox (onblur), par exemple un nombre de personne, si la saisie est
correcte, on poursuit sinon un message d'erreur s'affiche sur la même
page.

Au départ je voulais enchainer avec un script php mais pb de
client-serveur, donc si je transcris mon script php en script JS ça
devrait être sans pb n'est ce pas?

Ce script JS calcule en fonction du nombre de personne, différentes possibilités de quantité donc algo de maths koi.

Le script sort donc un tableau avec différentes valeurs que devront
être proposées au client dans un menu déroulant qui se situe sur la
même page que le text box.

Si ça vous semble bon, dites juste oui l'histoire que vs perdiez pas trop de temps.

Merci les gars!!

6 réponses

Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
17
oui-l'histoire-que-vs-perdiez-pas-trop-de-temps.-Merci-les-gars

Mais t'échappes pas à javascript pour autant bikoz onBlur. Tu peux donc
depuis js enchainer en php en appelant une page php et en lui passant
en get par exple l'entrée du client. XMLHTTPRequest par exple est un
bon exple: saisie coté js, traitement coté php
(http://www.webpasties.com/xmlHttpRequest/index.html est la page que je
conseille, mais certains la boude... toi qui vois)
Messages postés
194
Date d'inscription
lundi 11 juillet 2005
Statut
Membre
Dernière intervention
13 avril 2007

REMARQUE 1: ouais merci de ta réponse malik, mais est ce que si je fais que du javascript ça marche?

parce que si j'exploite le onblur de js, en admettant que la saisie du
client est correcte, je peux lancer un script js qui me calcule les
différentes valeurs à proposer du menu déroulant qui se trouve sur la
même page (et cela sans recharger la page), nan?



REMARQUE 2:Parce que recharger les pages à chaque fois c relou pr le
confort de l'utilisateur et d'ailleurs je sais po trop comment on
fait...

c'est pas un truc du style j'ai mon formulaire sur page1.php avec mes 3
champs à saisir, puis une fois qu'il a saisie son truc et que c
correcte ça bascule grâce à js à page2.php avec les mêmes 3 champs et
en plus le menu déroulant que je souhaite?



Merci de vos réponses à mes remarques...:)
Messages postés
445
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
22 mars 2007
1
1 : Tu peux remplir une liste déroulante en js, mais perso je trouve ça plus simple en php.
2 : Tu peux tout faire sur la même page, en n'affichant ta liste déroulante que si une valeur a été postée dans tes 3 champs...
En fait, ça dépend un peu de ton calcul, s'il est complexe, ce sera peut-être moins galère de le faire en php...

Arn;o)
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
17
1: pourquoi ca marcherait pas?
2: utilise xmlhttprequest, c'est justement fait pour parer a ce probleme de recharge de page
Messages postés
194
Date d'inscription
lundi 11 juillet 2005
Statut
Membre
Dernière intervention
13 avril 2007

Ok mais pour un gros débutant comme moi ça m'a plutot l'air chaud la fonction xmlhttprequest lol.
Je précise mon pb:
J'ai ma fonction php qui me calcule mon nombre de voiture en fonction de ce que l'utilisateur a tapé dans la text box 'nbre de personnes'. J'aimerai que cette fonction suivante php se lance dès que le client a tapé le nbre de personne, et ce sans rafraichir la page. Est ce possible? Comment fait on sachant que la fonction php est lancée dans du javascript?
Merci de vos conseils.

function nbre_voiture($nbre_personne,&$affichage_voiture,&$i) {
$requete=mysql_query("SELECT immatriculation FROM voiture
ORDER BY immatriculation");
$nbre_voiture_total = mysql_numrows($requete);
//Les voitures accueillent jusqu'à 3 places.
$nbre_place=3;
$nbre_personne_max=$nbre_voiture_total*$nbre_place;
if($nbre_personne > $nbre_personne_max) {
echo "Nous ne pouvons accéder à votre demande !";
echo "
Nombre de personne trop élevé!! ";
}
else {
$nbre_personne=$nbre_personne/2;
$tab = explode('.', $nbre_personne);
$affichage_voiture[0]=$tab[0];
$compteur=0;
$i=1;
//1er cas : Si $nre_personne/2 est un nombre entier alors $tab[0]=$nbre_personne
if($tab[0] == $nbre_personne) {
while($nbre_personne >= $nbre_place) {
$nbre_personne=$nbre_personne-$nbre_place;
$affichage_voiture[$i]=$affichage_voiture[$i-1]-1;
$i++;
}
}
//2eme cas : Sinon c'est un nbre à virgule
else {
while($tab[0] > $nbre_place) {
$tab[0]=$tab[0]-$nbre_place;
$affichage_voiture[$i]=$affichage_voiture[$i-1]-1;
$i++;
}
}
sort($affichage_voiture);
for($t=0;$t<$i;$t++) {
echo "
Nombre de voitures proposées : $affichage_voiture[$t]";
}
}
}
Messages postés
445
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
22 mars 2007
1
Une solution possible :
Utiliser ta fonction au chargement de la page pour remplir une variable javascript de type tableau et ensuite, en fonction du nb de personne saisi, utiliser le tableau pour remplir ta liste déroulante
Sinon, en fonction de la saisie, affciher ou cacher certaines lignes de la liste.
Au fait, pourquoi n'utilises-tu pas plutôt aussi une liste déroulante pour choisir le nb personnes ?

Note sur xmlhttprequest (http://openweb.eu.org/articles/objet_xmlhttprequest/), ça à l'air pas mal, mais :
[...]

<LI>Les requêtes en dehors du domaine provoquent un avertissement de sécurité ;
<LI>
Peut empêcher des comportements habituels du navigateur :



<LI>Marques-pages et liens vers la page ;
<LI>Enregistrement des pages ;
<LI>Bouton retour. </LI></LI>
Arn;o)