Page 1 sur 1

carte cliquable

Posté : 06 nov. 2006, 11:03
par 001cod10
Bonjour à tous,

je voudrais mettre une carte sur mon site pour permettre à l'utlisateur de cliquer sur une ville pour afficher les évènements qui correspondent. Mais j'ai les memes informations qui s'affichent quelque soit la ville sur laquelle on clique. Voici mon script si vous pouvez m'aider. soiree2.php est le script qui fait la recherche dans la base de données.
<html>
<head>
<title></title>
</head>
<body>

<img src="belgium1.gif" width="397" height="327" border="0" alt="Les provinces en Belgique" usemap="#Map">
<map name="Map">
<area shape="poly" alt="Luxembourg" coords="249,274, 262,228, 278,232, 295,219, 278,207, 296,207, 296,179, 325,188, 336,207, 357,197, 357,219, 325,274, 348,305, 296,327" 
href="soiree2.php?ville=Luxembourg?ville=Luxembourg">
<area shape="circle" alt="Brussel" coords="174,106,9"
href="soiree2.php?ville=brussel">
<area shape="poly" alt="Vlaams Brabant" coords="148,112, 182,74, 231,82, 254,74, 263,82, 254,96, 278,101, 262,128, 254,112, 210,112, 154,128"
 href="soiree2.php?ville=vlaams brabant">
<area shape="poly" alt="Brabant Wallon" coords="158,128, 231,112, 254,120, 254,140, 210,157, 158,140"
 href="soiree2.php?ville=brabant wallon">
<area shape="poly" alt="Liege" coords="326,120, 371,128, 378,162, 397,170, 362,219, 356,188, 336,207, 326,188, 295,176, 295,188, 286,188, 254,140, 262,128"
 href="soiree2.php?ville=liege">
<area shape="poly" alt="Limburg" coords="278,41, 278,59, 254,74, 269,74, 260,96, 278,98, 263,128, 322,120, 336,56, 296,30" 
href="soiree2.php?ville=limburg">
<area shape="poly" alt="Antwerpen" coords="182,21, 202,0, 276,30, 278,56, 231,82, 169,74, 169,62, 182,62" 
href="soiree2.php?ville=antwerpen">
<area shape="poly" alt="Namur" coords="195,256, 250,274, 259,223, 278,231, 289,220, 272,211, 296,197, 293,188, 283,188, 250,140, 210,157, 210,188, 182,199" 
href="soiree2.php?ville=namur">
<area shape="poly" alt="Hainaut" coords="65,120, 75,162, 112,171, 114,195, 150,190, 166,206, 157,245, 191,256, 182,199, 210,189, 207,161, 157,141, 156,128, 143,120, 98,120, 80,128" 
href="soiree2.php?ville=hainaut">
<area shape="poly" alt="Oost-Vlaanderen" coords="88,37, 172,21, 182,59, 167,61, 170,85, 143,120, 98,120, 98,112" 
href="soiree2.php?ville=oost-vlaanderen">
<area shape="poly" alt="West-Vlaanderen" coords="84,21, 98,113, 80,128, 56,113, 33,127, 0,64" 
href="soiree2.php?ville=west-vlaanderen">
</map>

</body>
</html>

Posté : 06 nov. 2006, 11:10
par zigz4g
Salut,
vue comme ca je dirais pas de problemes...
Bon que te retourne ton script PHP soiree2.php ??? Y a t il des messages d'erreurs ??? Peut on voir ton script PHP ou le bout de code qui correspond a ton traitement ?
Il serait peut etre plus simple de mettre un identifiant de ta base pour faire la recherche car la tu dois faire une requette du style select ... where ville like 'Luxembourg'.

Code : Tout sélectionner

href="soiree2.php?ville=Luxembourg?ville=Luxembourg"
Y a pas un petit probleme ici ??? surtout pour les deux fois ou il y a ville=Luxembourg.

Posté : 06 nov. 2006, 11:14
par Ryle
Bah qu'il utilise un identifiant numérique ou texte ne change rien tant qu'il utilise le libellé exact, il peut très bien faire un " WHERE ville = 'Luxembourg' " :)

En supposant que tes area ne se chevauchent pas, le problème vient nécessairement de soiree2.php. Est-ce que tu récupères bien $_GET['ville'] ? Montre nous plutôt ce code là :)

carte cliquable

Posté : 06 nov. 2006, 11:19
par 001cod10
Il m'affiche les enregistrements de bruxelles quand je clique sur n'importe quelle ville. Voici le script. J'ai déjà corrigé l'erreur sur luxembourg.
?>

<html>
<head>
<title></title>
</head>

<body>
<font face="Verdana, Arial, Helvetica, sans-serif" color="#800000" size="+2"><b><center>Agenda des évènements</font></b></center><hr></hr>

<?php
// on se connecte à notre base 
$base = mysql_connect ('localhost', 'root', '');
mysql_select_db ('base', $base);

// on prépare une requête permettant de calculer le nombre total d'éléments qu'il faudra afficher sur nos différentes pages
$sql  = 'SELECT count(*) FROM Table';

// on exécute cette requête
$resultat = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

// on récupère le nombre d'éléments à afficher
$nb_total = mysql_fetch_array($resultat);

// on teste si ce nombre de vaut pas 0
if (($nb_total = $nb_total[0]) == 0) {
    echo 'Aucune réponse trouvée';
}
else {
    //echo '<table><center><tr><td><td></td></tr>';

    // sinon, on regarde si la variable $debut (le x de notre LIMIT) n'a pas déjà été déclarée, et dans ce cas, on l'initialise à 0
    if (!isset($_GET['debut'])) $_GET['debut'] = 0;
    
    $nb_affichage_par_page = 1;
    
    // Préparation de la requête avec le LIMIT
    $sql = 'SELECT ville,description,prix,prevente,lieu,dateevent FROM table ORDER BY ville ASC 
LIMIT '.$_GET['debut'].','.$nb_affichage_par_page;

    // on exécute la requête
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

    // on va scanner tous les tuples un par un 
    while ($data = mysql_fetch_array($req)) {
	$annee = substr($data['dateevent'],0,4);
    $mois = substr($data['dateevent'],5,2);
    $jour = substr($data['dateevent'],8,2);
    $dateevent = "$jour-$mois-$annee";
	// on affiches les résultats dans la <table>
	echo '<center>';
	echo '<tr><td><td><font face="Verdana, Arial, Helvetica, sans-serif" color="#0000FF" size="+4"><b>' , stripslashes(htmlentities(trim($data['description']))) , '</font></b></td></tr></br></br></br>';
	echo '<tr><td><td><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000" size="+2">' , stripslashes(htmlentities(trim($data['lieu']))) , '</font></td></tr></br>';
	echo '<tr><td><td><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000" size="+2">' , stripslashes(htmlentities(trim($data['ville']))) , '</font></td></tr></br>';
	echo '<tr><td><td><font face="Verdana, Arial, Helvetica, sans-serif" color="#000000" size="+2">' , stripslashes(htmlentities(trim($dateevent))) , '</font></td></tr></br>';
	echo '<tr><td><td><font face="Verdana, Arial, Helvetica, sans-serif" color="#800000" size="+2"><b>' , stripslashes(htmlentities(trim($data['prix']))) , '€</font></b>&nbsp;&nbsp;Avec Conso</td></tr></br>';
	echo '<tr><td><td><font face="Verdana, Arial, Helvetica, sans-serif" color="#800000" size="+2"><b>' , stripslashes(htmlentities(trim($data['prevente']))) , '€</font> &nbsp;&nbsp;En prévente </br>sur le Compte 0000000</b></td></tr>';
	echo '</br>';

    }

    // on libère l'espace mémoire alloué pour cette requête 
    mysql_free_result ($req); 
    echo '</table><br />';

    }
// on libère l'espace mémoire alloué pour cette requête 
mysql_free_result ($resultat); 
// on ferme la connexion à la base de données. 

mysql_close (); 
?>

Posté : 06 nov. 2006, 11:35
par Ryle
Ah ben y a un soucis de conception au niveau de ta requête :)
// Préparation de la requête avec le LIMIT 
$sql = 'SELECT ville,description,prix,prevente,lieu,dateevent FROM table ORDER BY ville ASC LIMIT '.$_GET['debut'].','.$nb_affichage_par_page; 
Tu lui demandes de retrouver tous les enregistrement de ta base et de ne t'afficher que les n premiers avec le limit. Ce qu'il te faut c'est uniquement ramené celui de la ville sélectionné en utilisant la clause WHERE :) (cf. msg précédent)

En revanche, si ce script te sert également à afficher plusieurs villes dans d'autres cas, il te suffit d'ajouter cette clause qu'à condition de recevoir $_GET['ville'] par exemple (ou tout autre test qui te semblerait plus judicieux)

carte cliquable

Posté : 06 nov. 2006, 12:17
par 001cod10
j'ai modifié la requete de la sorte:
$sql = 'SELECT ville,description,prix,prevente,lieu,dateevent FROM evenement VHERE ville="'.$_GET['ville'].'"
LIMIT '.$_GET['debut'].','.$nb_affichage_par_page;
et j'ai ce message mais je ne sais pas comment résoudre cela
Erreur SQL !
SELECT ville,description,prix,prevente,lieu,dateevent FROM evenement VHERE ville="liege" LIMIT 0,1
Erreur de syntaxe près de 'ville="liege" LIMIT 0,1' à la ligne 1

Posté : 06 nov. 2006, 12:28
par charabia
$sql = "SELECT ville,description,prix,prevente,lieu,dateevent FROM evenement VHERE ville='".$_GET['ville']."' 
LIMIT ".$_GET['debut'].",".$nb_affichage_par_page;

carte cliquable

Posté : 06 nov. 2006, 13:01
par 001cod10
j'ai tjrs le même message d'erreur.

Posté : 06 nov. 2006, 13:05
par Vikchill
Un petite faute de frappe je crois (VHERE):
$sql = "SELECT ville,description,prix,prevente,lieu,dateevent FROM evenement WHERE ville='".$_GET['ville']."' 
LIMIT ".$_GET['debut'].",".$nb_affichage_par_page; 

Posté : 06 nov. 2006, 13:14
par charabia
oups j'avais pas bu :langue: bien vu Vikchill ;)

carte cliquable

Posté : 06 nov. 2006, 13:50
par 001cod10
Je viens de corriger la petite faute de frappe. J'ai un enregistrement pour liège et 5 enregistrements pour bruxelles. quand je clique sur liège l'enregistrement s'affiche mais quand je clique sur bruxelles rien ne s'affiche.

Posté : 06 nov. 2006, 13:56
par Ryle
Quand tu as un soucis avec une requête sql, affiche la chaine que tu génères ("echo $sql;") et si rien ne te choque dans sa syntaxe, joue la dans mysql, tu verras tout de suite ce qu'elle retourne :)

Le nom de ta ville est "Brussel" sur ta carte, est bien "Brussel" également dans ta base ou est "Bruxelles" ?

carte cliquable

Posté : 06 nov. 2006, 14:09
par 001cod10
merci à tous le vient du fait que j'ai bruxelles dans ma base et dans mon script je l'ai écrit en néerlandais.

bonne journée à vous