Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour à tous,
Je suis nouveau sur le forum et débutant en php. Je dois remettre en place la base de données d'un site "brouillon" pour un boulot à la fac.
Je parviens à faire s'afficher l'ensemble des parcours touristiques proposés dans la base de données et je suis aussi parvenu à faire s'afficher les résultats pour une requête formulée via le champ de recherche.
Cependant, une fois ma requête validée sur le champ de recherche, les résultats voulus apparaissent, mais l'ensemble des parcours touristiques au dessus reste apparent.
Je voudrais savoir comment faire pour que ce soit l'un ou l'autre qui apparaisse, pas les deux en même temps ! Voici l'état actuel de mon code :
<?php
$resultat = mysql_query ("SELECT parcours, nbrJours FROM parcours ORDER BY parcours");
$mot = $_POST["parcours"];
$recherche = mysql_query ("SELECT parcours FROM parcours WHERE parcours LIKE '%$mot%' ORDER BY pays, parcours");
while ($tableau1 = mysql_fetch_array($resultat)) {
echo "{$tableau1["parcours"]}<br/><hr/>";
if (!$resultat) {
die ("Echec de la requête." .mysql_error ());
}
}
echo "<br/><hr/>";
if ($recherche) {
while ($tableau2 = mysql_fetch_array($recherche)) {
echo "{$tableau2["parcours"]}<br/><hr/>";
if (!$recherche) {
die ("Echec de la requête." .mysql_error ());
}
}
}
?>
Je vous remercie tous par avance.
A bientôt
Hors ligne
Saluton,
Le moins que je puisse dire c'est que la logique de ce script ne me saute pas aux yeux. Quant à tes explications...ben, c'est cor'assez la même chose.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Salut,
Je vais donc essayer d'être plus clair :
J'ai une page web avec du php dans laquelle je dois faire figurer des parcours touristiques tirés d'une base de données. Cela fonctionne, quand je clique sur l'onglet "parcours" de mon site, ça marche, la liste de parcours apparaît. Voir la variable $resultat et son code ci-dessus. L'autre variable $recherche renvoie à une requête qui s'exécutera dans un formulaire selon le mot défini dans la variable $mot qui renvoie au champ de recherche, là aussi, ça marche.
Le hic, c'est que lorsque j'effectue un recherche sur un mot comme "trekking", j'obtoens la liste de tous les parcours et ensuite celle concenant le mot que j'ai tapé dans le champ de recherche lié au formulaire.
Ce que je voudrais, c'est que quelqu'un me dise quoi écrire pour n'avoir qu'un seul des deux tableaux à la fois.
Voilà, merci.
Hors ligne
A tout hasard, essaye comme cela
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Salut,
Malheureusement ça ne marche pas, mais merci du coup de main. Si toi ou d'autres ont encore des idées sur mon problème, je suis preneur.
Ceci étant, il y a dans le code que tu m'as suggéré des fonctions que je ne connaissais pas :
- printf
- sprintf
- mysql_real_escape
Que veulent-elles dire ?
C'est quoi le %s ? Et dans le LIKE pourquoi y a t-il '%%%s%% ?
Je vais essayer de voir pour la suite avec le code que j'avais mais je conserve les autres codes.
Merci !
Hors ligne
salut,
Pour des infos sur les fonctions http://www.php.net
Le %s est inhérent à la fonction sprintf regarde la doc de celle-ci sur le site de php.net
Qu'entends tu par ne marche pas ?
Est ce que les requêtes fonctionnent avec phpmyadmin ou en ligne de commande ?
@+
Il en faut peu pour être heureux pompompompompompompompompompompom
Hors ligne
Salut,
Ce que j'entends par "ne marche pas", c'est que ça me retourne une parse error in line 60. Pour mémoire, le code que l'on m'avait suggéré était :
<?php
if(isset($_POST["parcours"])){ // isset — Détermine si une variable est définie et est différente de NULL
$recherche=sprintf("SELECT parcours FROM parcours WHERE parcours LIKE '%$mot%' ORDER BY pays, parcours",
mysql_real_escape($_POST['parcours']));
}
else{
$resultat = mysql_query ("SELECT parcours, nbrJours FROM parcours ORDER BY parcours");
}
$resultat = mysql_query ($recherche) or die($recherche.'<br />'."Echec de la requête." .mysql_error ());
while ($tableau = mysql_fetch_array($resultat)) {
printf("%s %s<br/><hr/>",
$tableau['parcours'],
isset($tableau['nbrJours'])? $tableau['nbrJours'] :'');
}
?>
Comme ça ne fonctionnait pas (peut-être est-ce moi qui en ait mal compris l'utilisation) j'ai repris mon ancien code et j'ai bidouillé, du coup, je suis à peu près arrivé à ce que je voulais. Voici l'état actuel du code :
<?php
$saut = "<br><br>";
$mot = $_POST["parcours"];
$recherche = mysql_query ("SELECT parcours, nbrJours FROM parcours WHERE parcours LIKE '%$mot%' ORDER BY pays, parcours");
if (!$mot) {
echo "Commencez votre recherche de parcours !";
}
elseif ($recherche) {
echo "<br/><b>Résultat de la recherche pour le terme : $mot.</b><br/><br/><hr/>";
while ($tableau1 = mysql_fetch_array($recherche)) {
echo "{$tableau1["parcours"]}, {$tableau1["nbrJours"]}<br/><hr/>";
}
}
?>
<?php
echo $saut;
$resultat = mysql_query ("SELECT parcours, nbrJours FROM parcours ORDER BY parcours");
echo "<br/><b>Voici la totalité des parcours proposés.</b><br/><br/><hr/>";
while ($tableau1 = mysql_fetch_array($resultat)) {
echo "{$tableau1["parcours"]}, {$tableau1["nbrJours"]} jours<br/><hr/>";
if (!$resultat) {
die ("Echec de la requête." .mysql_error ());
}
}
?>
Mais c'est pas grave, comme je l'ai dit, je reste preneur diées qui m'aideraient à améliorer les choses !
A plus !
Hors ligne
Salut à tous,
C'est toujours moi et mes problème d'affichages de listes de parcours touristiques. J'ai avancé dans ma réalisation et suis parvenu à faire ce que je voulais mais j'ai maintenant un autre problème :
A présent, je souhaiterais qu'en cliquant sur différents boutons de ma page d'accueil, je sois renvoyé aux parcours touristiques qui correspondent au bouton sur lequel j'ai cliqué. J'ai crée six requêtes SQL qui sont valides, une pour chaque grande catégorie de parcours. Cependant, je me retrouve malgré mes boucles while et mes conditions en if... elseif.. else, avec la liste de tous les parcours.
Voici l'état actuel de mon code :
<?php
//La section "Afrique Ouest équatoriale Australie" correspond à l'onglet "Afrique Noire".
$destination1 = mysql_query ("SELECT parcours, pays, nbrJours FROM parcours WHERE grandSecteurs = 'Afrique Saharienne' ORDER BY pays ASC, parcours ASC");
$destination2 = mysql_query ("SELECT parcours, pays, nbrJours FROM parcours WHERE grandSecteurs = 'Mediterranee Proche Orient Europe' ORDER BY pays ASC, parcours ASC");
$destination3 = mysql_query ("SELECT parcours, pays, nbrJours FROM parcours WHERE grandSecteurs = 'Afrique Ouest Equatoriale Australe' ORDER BY pays ASC, parcours ASC");
$destination4 = mysql_query ("SELECT parcours, pays, nbrJours FROM parcours WHERE grandSecteurs = 'Asie' ORDER BY pays ASC, parcours ASC");
$destination5 = mysql_query ("SELECT parcours, pays, nbrJours FROM parcours WHERE grandSecteurs = 'Oceanie' ORDER BY pays ASC, parcours ASC");
$destination6 = mysql_query ("SELECT parcours, pays, nbrJours FROM parcours WHERE grandSecteurs = 'Ameriques' ORDER BY pays ASC, parcours ASC");
echo "<br/><b>Les parcours de la zone demandée.</b> <br/><br/><hr/>";
while ($tableau1 = mysql_fetch_array($destination1)) {
echo "{$tableau1["parcours"]}, {$tableau1["nbrJours"]} jours<br/><hr/>";
}
while ($tableau1 = mysql_fetch_array($destination2)) {
echo "{$tableau1["parcours"]}, {$tableau1["nbrJours"]} jours<br/><hr/>";
}
while ($tableau1 = mysql_fetch_array($destination3)) {
echo "{$tableau1["parcours"]}, {$tableau1["nbrJours"]} jours<br/><hr/>";
}
while ($tableau1 = mysql_fetch_array($destination4)) {
echo "{$tableau1["parcours"]}, {$tableau1["nbrJours"]} jours<br/><hr/>";
}
while ($tableau1 = mysql_fetch_array($destination5)) {
echo "{$tableau1["parcours"]}, {$tableau1["nbrJours"]} jours<br/><hr/>";
}
while ($tableau1 = mysql_fetch_array($destination6)) {
echo "{$tableau1["parcours"]}, {$tableau1["nbrJours"]} jours<br/><hr/>";
}
?>
L'un(e) d'entre vous aurait une solution pour récupérer les bonnes données en cliquant sur le bon bouton ? J'ai même essayé les variables superglobales en GET et POST avec les id des boutons mais rien n'y a fait.
Quelqu'un a une idée ?
Merci par avance.
Hors ligne
Cela serait un brin plus propre.
Et cela permet de gérer l'affichage d'une seule zone : script.php?secteur=Asie
Hors ligne
Salut xTG,
D'abord, merci pour cette aide. Ca ne semble pas fonctionner bien que je crois comprendre ce que tu as voulu me faire faire. Je me retrouve toujours avec un tableau complet de parcours touristiques sans avoir de tri fait avec ma requête SQL. La variable $cond_secteur doit-elle comporter un contenu entre ses guillemets ou celui-ci s'insère t-il en fonction du bouton sur lequel j'ai cliqué préalablement ? Enfin, que veulent dire les apostrophes que l'on retrouve dans ton code ?
Merci.
Hors ligne
Pour pouvoir trier avec mon exemple il faut passer la valeur du champs grandSecteurs dans la variable secteur en méthode GET (donc dans l'url).
Quelle est la partie que tu ne comprends pas ? Je n'ai pas très bien compris ton histoire de guillement.
Hors ligne
Pages :: 1