11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

Je m'explique : j'ai crée un petit moteur de recherche avec PHP/MySQL.

La personne recherche un début de mot ou un mot complet. Par exemple, s'il recherche "pro" il s'affichera "prozac" et "prototype". Il devra ensuite sélectionner le mot correspondant à sa recherche.

S'il n'existe qu'un résultat, j'aimerais que le formulaire soit validé automatiquement vers la page suivante sans proposer de sélectionner le mot. Je suppose que cela peut se faire en javascript. (la partie identifiant qu'il n'y a qu'un résultat est faite en PHP, pas de problème).

Les scripts que j'ai téléchargé permettent de vérifier des conditions sur le formulaire mais pas "d'appuyer" automatiquement au chargement de la page sur le bouton submit.

J'espère être clair.

Merci pour votre aide.
Modifié par littlelittle (04 Aug 2006 - 09:42)
Salut, si tu peux tester que tu n'as qu'un résultat, tu n'as qu'a juste faire une redirection (header ('Location: ...) en PHP, je ne pense pas qu'il soit utile de passer par javaScript...
Salut Coccimaster,

Merci pour ta réponse. J'ai bien essayé mais j'utilise un principe de page imbriquée avec des include. Le header ne marche pas puisque déjà transmis j'obtiens donc le message "Cannot modify header information - headers already sent by..."

D'où le besoin de javascript.
Je ne suis pas certain d'avoir bien saisi ta réponse, mais dans le fichier qui inclut tout les autres, tu peux mettre ton header sous ton tout premier test. Du genre

if (nbResult ==1)
    header('Location: direct àu résultat unique')
else
    header('Location: ta page avec formulaire')

Sinon, je crois que l'objet forms en javascript à une méthode submit();
tu met alors sur ton body
<body onload="forms[a].submit()">

ou a est l'indice de ton formulaire dans ta page, mais ça reste à vérifier...
Modifié par coccimaster (03 Aug 2006 - 15:43)
Merci pour cette réponse rapide. Y a t'il un moyen pour que onload soit lancé au moment de la lecture d'un input ou du bouton submit directement et non pas à partir de la balise <body>... je t'explique en espèrant être clair...

mon fichier de départ index.php fait appel à diverses fonctions au démarrage mais il débute par le code suivant :


<?php 
if (isset($_GET['page'])) {
  $Test=$_GET['page'].".php";
  if (file_exists($Test)) {
 		$Page=$_GET['page'];
	}
	else {
 		$Page="contenu";
	}
}
else {
	$Page="contenu";
}
?>


puis dans la page : je place un :
<?php include "$Page.php"; ?>


Ca me permet d'avoir une seule page de présentation, la partie centrale contenant le résultat de mes requetes, je fais des liens de type
<a href="index.php?page=resultat">lien</a>
, le code de départ vérifie si la page existe bien sur le serveur si ce n'est pas le cas, une page par défaut est ouverte, ensuite il rajoute l'extension .php et affiche les résultats.

L'inconvénient étant que le header PHP est inutilisable et que le tag <body> n'est lancé qu'une fois dans la page index.php ce qui peux poser des problèmes avec <body onload ='...'> par exemple.

L'esprit tortueux moi ? m'enfin...
Modifié par littlelittle (03 Aug 2006 - 16:51)
Rien ne t'interdit d'ajouter un bout de script en plein milieu du body, à mettre entre balises <script> bien sûr.
Pourquoi des problèmes avec body onload. Des que tu vas clicker un lien, tu vas avoir ton onload, même si ta page à le même nom.

Sinon, Le problème pour le header vient du fait que tu ne peux pas utiliser header aprés avoir envoyé du HTML.
Pour l'utiliser, il faudrait

*Un fichier ou tu as le mécanisme de ton moteur de recherche. Dedans tu ne défini que des variables (dont $nombre_de_resultat)
* A la fin tu test $nombre_de_resultat, si 1 alors header
* tu l'inclus des le début de ton index.php
*Dans tes autres pages, les variables seront visibles puisque tu fais des includes, autrement dit du copier coller.

L'avantage en plus, c'est de séparer la partie traitement de la partie HTML, tu as juste dans ton HTML à insérer des <?php=$toto?> aux endroits stratégique.
Bonjour,

Merci à vous deux pour vos conseils. J'ai modifié mes scripts pour pouvoir lancé un header en fonction du nombre de résultat et tout fonctionne correctement.

Merci encore