8797 sujets

Développement web côté serveur, CMS

Bonjour,

Je débute en PHP et je dois dire que mes connaissances sont emmêlés dans mon cerveau et que je lutte jour après jour.
Je suis en train de refaire un site que j'avais créé sur Joomla. Je souhaiterais faire mon menu en php et créer mes pages automatiquement.

Mais je ne m'en sort pas.

J'ai déjà créé 3 tables qui contiennent mes modules de menu, mes sections de menu et mes catégories de menu.
Elles sont reliées entre elles grâce aux ID_.....

Table Module
#  Colonne	Type	Interclassement	Attributs	Null	Défaut	
	 1	id	int(11)			Non	Aucune	AUTO_INCREMENT	 
	 2	titre	varchar(255)	utf8_unicode_ci		Non	Aucune	


Table section
#  Colonne	Type	Interclassement	Attributs	Null	Défaut	
	 1	id	int(11)			Non	Aucune	AUTO_INCREMENT	
	 2	titre	varchar(255)	utf8_unicode_ci		Non	Aucune		  
	 3	description	text	utf8_unicode_ci		Non	Aucune		 
	 4	id_module	varchar(255)	utf8_unicode_ci		Non	Aucune


Table catégorie
#	Colonne	Type	Interclassement	Attributs	Null	Défaut	
	 1	id	int(11)			Non	Aucune	AUTO_INCREMENT	 
	 2	titre	varchar(255)	utf8_unicode_ci		Non	Aucune		  
	 3	description	text	utf8_unicode_ci		Non	Aucune		
	 4	id_section	int(11)			Non	Aucune			


J'ai déjà essayé de faire apparaître quelques titres sur ma page mais j'ai une erreur Smiley confus :

(!) Warning: mysql_fetch_array () s'attend à ce que le paramètre 1 pour être des ressources, booléen donné dans C: \ wamp \ www \ Positif-stress \ test.php on line 41
Pile d'appels
# Temps Mémoire Fonction Emplacement
1 0,0070 372520 {Main} () .. \ Test.php : 0
2 0,0155 385928 mysql_fetch_array () .. \ Test.php : 41




$requete =("SELECT section.titre
FROM section
INNER JOIN module ON id_module = module.id
WHERE id_module = '1'
LIMIT 0 , 30");
$resultat=mysql_query($requete);


while ($menu = mysql_fetch_array($resultat))
			{ 
			echo $menu['titre'];
			}


Si quelqu'un peut déjà éclairer ma lanterne sur ce point ce serait simpa merci. Smiley smile
Salut,

As-tu vérifié que le contenu de `$resultat` était celui que tu attendais ? Le message d'erreur dit que la variable `$resultat` serait un booléen (true|false) et non une ressource.
Tout à fait.

Dans ces cas là en général je commence par faire juste après le mysql_query un truc du genre :
print_r($resultat);
print "<br> $requete";

pour afficher le résultat et la requête, et si $resultat est sur "false" comme c'est probablement le cas, j'envoie la requête directement à SQL (via la ligne de commande ou un IDE ou phpmyadmin) pour voir si elle me renvoit bien ce qu'il faut.

Sinon ça n'a rien à voir avec ton problème, mais comme tu débutes je me permet une petite remarque : les fonctions mysql_* sont en principe à éviter car l'extension n'est plus utilisée et plus mise à jour, il vaut largement mieux utiliser mysqli dont les fonctions mysqli_* s'utilisent presque pareil, qui est plus performant et permet beaucoup plus de choses (notamment les requêtes préparées, quasi indispensables à mon avis), ou même pdo mais qui pour le coup un est peu différent.
Modifié par BlueScreenJunky (05 Aug 2012 - 19:08)
Puisque tu débutes et que tu veux apprendre autant faire les choses bien. Pour commencer tu utilises l'extension mysql qui est officiellement dépréciée depuis 2010 et n'est plus développée depuis 2004 (et oui 8 ans !).

En PHP 5 tu as 2 extensions officielles pour gérer tes bases de données mysql : mysqli et PDO. Les 2 se valent à peu prés mais PDO est plus populaire car plus souple et plus simple à utiliser que mysqli (et pour d'autres raisons mais pour l'instant ça ne t’intéresse pas).

Donc la première chose que je ferais avant de continuer c'est d'apprendre PDO et d'oublier mysql.