problème d'affichage

Eléphanteau du PHP | 35 Messages

04 avr. 2007, 14:24

Bonjour,

J'ai un soucis sur un affichage mais je n'arrive pas a savoir comment faire

Voici la fonction d'affichage
iinclude("../HTML/entete_all1.html");	
       	echo "<div class=Style21 id=Layer12><table width=480 height=119 >";
     	foreach($tab_mois as $tab)
  		{
    		echo"<tr><td width = 250><font face=Bodoni MT size = 4><a href=../Frontcontroller/Frontcontroler.php?page=more&id=".$tab['Id_Hotel']."><u>".$tab['Nom_Hotel']."</u></a></font>&nbsp;&nbsp;&nbsp;";
			$cat = $tab['Categorie_hotel'];
			
			for ($i=0; $i<$cat;$i++)
			{
				echo "<img src=../HTML/images/star2an.gif>";
			}    				

		
			echo "</td><td ><strong>".$tab['Nom_Ville']."</strong></td></tr>";
			
	  		foreach ($tab_photo_mois as $ $photo)
	  		{
	  			if($tab['Id_Hotel'] == $photo['Id_Hotel'])
	  			{
	  				echo "<td>caca</td>";
	  			}
	  			else
	  			echo "<td>pipi</td>";
	  		}
	   	}
    	
 		
 		include("../HTML/footer_all2.html");
 	}



Le résultat que j'aimerai avoir c'est dès que qu'il rencontre le même nomde l'hotel il m'affiche la photo.
J'ai beau retourner ca dans tous les sens mais ca marche pa

Merci de votre aide
Déborah

Eléphanteau du PHP | 35 Messages

11 avr. 2007, 13:50

un petit coup de pouce serai le bienvenue car le site est en ligne

Mammouth du PHP | 1353 Messages

11 avr. 2007, 13:58

              foreach ($tab_photo_mois as $ $photo) 
              { 
                  if($tab['Id_Hotel'] == $photo['Id_Hotel']) 
                  { 
                      echo "<td>caca</td>"; 
                  } 
                  else 
                  echo "<td>pipi</td>"; 
              } 
je ne sais pas si c'est le seul probleme mais il me semble qu'il y a un $ de trop dans foreach ($tab_photo_mois as $ $photo) ....
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphanteau du PHP | 35 Messages

11 avr. 2007, 14:05

nan même en enlevant le $ de trop ca passe pas. En gros je voudrai faire 1 foreach imbriqué dans un autre foreach

Mammouth du PHP | 1353 Messages

11 avr. 2007, 14:44

pourquoi pas
foreach ($tab_photo_mois as $photo)  
              {  
                  if($tab['Id_Hotel'] == $photo)  
                  {  
                      echo "<td>caca</td>";  
                  }  
                  else  
                  echo "<td>pipi</td>";  
              }
Sinon il faudrait montrer la déclaration de $tab_photo_mois... Pourquoi un foreach dans un foreach ?
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphanteau du PHP | 35 Messages

11 avr. 2007, 14:45

un foreach ds un foreach, pour afficher une photo correspondante à un Id de l'hotel

Mammouth du PHP | 1353 Messages

11 avr. 2007, 14:55

Si l'ID de la photo est la meme que l'indice dans le tableau je comprends pas pourquoi il faudrait un foreach. De plus je suppose que tu as un while qui entoure tout cela pour parcourir toute la table non ? Sinon j'avoue que si tu ne décris pas plus précisement ce qu'il y a dans tes tableaux et la facon dont tu exploites ta base de données ainsi que ce que tu veux précisemment obtenir j'ai peur de ne pouvoir t'aider plus... Peut etre quelqu'un d autre que moi comprendra sinon....
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphanteau du PHP | 35 Messages

11 avr. 2007, 15:00

Si tu pe allé sur http://hotels-ghb.com et qd tu clique sur hotels du mois (par exemple) je vourdais afficher une photo du premier hotel et ainsi de suite.

Je peux te montrer comme j'execute ma requête :

Requête pour slectionner les photos
SELECT Url_Photo,Nom_Hotel,Nom_Photo,Extension_Photo,Id_Hotel FROM Photo 
INNER JOIN  Hotel ON  Hotel.Id_Hotel = Photo.Hotel_Id_Hotel 
WHERE hotel_mois = 1
Requête pour la selection de l'hotel du mois
SELECT Nom_Hotel, Nom_Ville, Nom_Departement, hotel_mois, Id_Hotel, Categorie_hotel
FROM Hotel
INNER JOIN Ville ON Ville.Id_Ville = Hotel.Ville_Id_Ville
INNER JOIN Departement ON Departement.Id_Departement = Ville.Departement_Id_Departement
WHERE hotel_mois = 1 AND Adherant_Hotel = 1
ORDER BY Categorie_hotel ASC

Mammouth du PHP | 1353 Messages

11 avr. 2007, 15:12

Ne serait-ce pas plus simple de faire un while($tab=mysql_fetch_array($resultat)) plutôt que de parcourir les tableaux avec des foreach ?

Si à chaque fois que tu récupères un hotel tu fais un
"select url from photo where Id_Hotel = $tab['Id_Hotel']"
ça me parait plus simple...

Comment crées tu $tab_photo_mois et $tab_mois ?
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphanteau du PHP | 35 Messages

11 avr. 2007, 15:16

Ca c'est la fonction $tab_mois

	function mois($nombre,$limite)
	{
		$a = new connectDb("root", "", "ghb", "localhost");
		
		$requetePlus = " 	SELECT Nom_Hotel, Nom_Ville, Nom_Departement, hotel_mois, Id_Hotel, Categorie_hotel
							FROM Hotel
							INNER JOIN Ville ON Ville.Id_Ville = Hotel.Ville_Id_Ville
							INNER JOIN Departement ON Departement.Id_Departement = Ville.Departement_Id_Departement
					  		WHERE hotel_mois = 1 AND Adherant_Hotel = 1
							ORDER BY Categorie_hotel ASC LIMIT $limite,$nombre";

		$resultat = mysql_query($requetePlus) or die("Erreur SQL".$requetePlus."<br />".mysql_error());

		$tab_mois = array ();
		$i = 0;
			while ($ligne = mysql_fetch_array($resultat, MYSQL_ASSOC)) {
			$tab_mois[$i] = $ligne;
			$i ++;
		}
		mysql_close();
		return $tab_mois;
	}


Mammouth du PHP | 1353 Messages

11 avr. 2007, 15:36

Ma méthode, évoquée au dessus, ne te parait elle pas plus simple a utiliser ?
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 80 Messages

12 avr. 2007, 07:35

Si tu pe allé sur http://hotels-ghb.com [...]
Est-ce que la connexion administrateur marche déjà sur votre site ?... J'ai juste une petite remarque à faire à propos...

Eléphanteau du PHP | 35 Messages

12 avr. 2007, 09:25

oui MainMa, ma connexion administrateur marche, pourquoi?

Eléphant du PHP | 80 Messages

12 avr. 2007, 20:33

C'est juste que j'ai l'impression en voyant la réponse du site sur un nom d'utilisateur et un mot de passe aléatoire que vous n'avez pas prévu la protection contre ce qui s'appelle SQL Injection (j'ignore le terme français).

Essayez de se connecter avec votre nom d'utilisateur habituel et le mot de passe (attention à bien respecter les apostrophes et les espaces ; pas d'apostrophes au début ni à la fin) :

a' OR '1' = '1

et voyez si ça marche. Si la connexion est réussie, alors effectivement vous avez oublié de se protéger contre SQL Injection.