Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Administration
Administration Forum d'entraide sur l'administration de MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/02/2006, 16h00   #1
Membre du Club
 
Vincent
Inscription : janvier 2006
Messages : 295
Détails du profil
Informations personnelles :
Nom : Vincent

Informations forums :
Inscription : janvier 2006
Messages : 295
Points : 51
Points : 51
Par défaut [SGBD] Probleme menu css /php / mysql / javascript

Bonjour voila je souhaite réaliser 1 menu css à l'aide de jeux d'enregistrements.

je veux simplement créer des grandes rubriques à partir d'enregistrement d'une table, et les sous rubriques a partir d'une autres, le tout dans un menu css qui me semble le mieux adapté ici .

Cepandant j'ai une fatal erreur qui provient de ma boucle "while" grr


Code :
Fatal error: Maximum execution time of 30 seconds exceeded IN C:wampwwwrbdctestmenu3.php ON line 31


voici le code:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<dl id="menu1"> 
<?php 
include ("mysqlconnect.php"); 
$comptcat=1; 
$comptsouscat=1; 
//requete grandes rubriques 
$sql = "SELECT applicationModM, nomProjet 
FROM modulemis 
WHERE nomProjet = 'MIS'"; 
$requete = mysql_query($sql); 
$nombrelignessql1=mysql_num_rows($requete); 
 
while( $comptcat <= $nombrelignessql1)?> 
    { 
    <?php $comptcat++; ?> 
            <dt onclick="javascript:montre('smenu1');">Menu 1</a></dt> 
        <dd id="smenu1"> 
                <ul> 
                <?php 
                //requete sous rubrique => enregistrements 
                $sql2 = "SELECT numFiche, nomFiche 
                FROM fiches 
                WHERE enseigne ='$result->applicationModM.'"; 
                $requete2 = mysql_query($sql2); 
                $nombrelignessql2=mysql_num_rows($requete2); 
                while( $comptsouscat <= $nombrelignessql2) ?> 
                    { 
                    <?php $comptsouscat++; ?> 
                    <li><a href="#">Sous-Menu 1.1</a></li> 
                    } 
                </ul> 
            </dd> 
    }             
</dl>


j'effectue donc ma 1ere requete permettant d'extraire les catégories d'une table 'applicationModM', je compte le nombre d'enregistrement afin de fixer un nombre de catégorie de menu

Code :
$nombrelignessql1=mysql_num_rows($requete);

et donc tant que le nombre de rubrique cf: $comptcat n'atteint pas le nombre d'enregistrement, les catégories s'ajoute:

Code :
while( $comptcat <= $nombrelignessql1)


La fonction:


Code :
1
2
3
4
5
6
7
8
window.onload=montre; 
FUNCTION montre(id) { 
var d = document.getElementById(id); 
    FOR (var i = 1; i<=20; i++) { 
        IF (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';} 
    } 
IF (d) {d.style.display='block';} 
}
Donc voila , je vois pas si ma boucle est bonne a mon avis non vu l'erreur, comment boucler et
comment incrémenter correctement dans la boucle les lignes:

Code :
1
2
<dt onclick="javascript:montre('smenu1');">Menu 1</a></dt> 
        <dd id="smenu1">

et

Code :
<li><a href="#">Sous-Menu 1.1</a></li>
merci aux courageux
vincedjs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2006, 16h19   #2
Membre du Club
 
Vincent
Inscription : janvier 2006
Messages : 295
Détails du profil
Informations personnelles :
Nom : Vincent

Informations forums :
Inscription : janvier 2006
Messages : 295
Points : 51
Points : 51
j'ai modifié mon code:
voici la nouvelle erreur :

Code :
Parse error: syntax error, unexpected T_VARIABLE IN C:\wamp\www\rbdc\testmenu3.php ON line 41
je suis perdu
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<body>
<dl id="menu1">
<?php
include ("mysqlconnect.php");
$comptcat=1;
$comptsouscat=1;
//requete grandes rubriques
$sql = "SELECT applicationModM, nomProjet 
FROM modulemis 
WHERE nomProjet = 'MIS'";
$requete = mysql_query($sql);
$nombrelignessql1=mysql_num_rows($requete);
 
while( $comptcat <= $nombrelignessql1)?>
	{
	<?php $comptcat++; ?>
			<dt onclick="javascript:montre('smenu1');">Menu 1</a></dt>
		<dd id="smenu1">
				<ul>
				<?php 
				//requete sous rubrique => enregistrements
				$sql2 = "SELECT numFiche, nomFiche
				FROM fiches
				WHERE enseigne = "$requete['applicationModR']"";
				$requete2 = mysql_query($sql2);
				$nombrelignessql2=mysql_num_rows($requete2);
				while( $comptsouscat <= $nombrelignessql2) ?>
					{
					<?php $comptsouscat++; ?>
					<li><a href="#">'$requete2['nomFiche']'</a></li>
					}
				</ul>
			</dd>
	}			
</dl>
ligne 41 :

Code :
WHERE enseigne = "$requete['applicationModR']"";
vincedjs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2006, 16h28   #3
Membre habitué
 
Inscription : février 2006
Messages : 109
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 109
Points : 120
Points : 120
Il y a surement plus simple !
Pourquoi ne pas passer par une seule requete avec une jointure propre ?

Dans ton code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
 
while( $comptcat <= $nombrelignessql1)?> // <= Pourquoi fermer ?
   {                                                         // <= l'accolade n'est pas dans le PHP
   <?php $comptcat++; ?>                       // <= Pourquoi ouvrir ?
         <dt onclick="javascript:montre('smenu1');">Menu 1</a></dt> 
      <dd id="smenu1"> 
            <ul> 
            <?php 
            //requete sous rubrique => enregistrements 
            $sql2 = "SELECT numFiche, nomFiche 
            FROM fiches 
            WHERE enseigne = "$requete['applicationModR']""; //<= 3 " pas bon ! les " vont Toujours par paire !!
            $requete2 = mysql_query($sql2);
dev_php_205 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2006, 16h29   #4
Membre du Club
 
Vincent
Inscription : janvier 2006
Messages : 295
Détails du profil
Informations personnelles :
Nom : Vincent

Informations forums :
Inscription : janvier 2006
Messages : 295
Points : 51
Points : 51
pour répondre a tout les pourquoi, tout simplement parce que je suis 1 boulet en php . j'vais étudier tout ca merci
vincedjs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2006, 16h45   #5
Membre du Club
 
Vincent
Inscription : janvier 2006
Messages : 295
Détails du profil
Informations personnelles :
Nom : Vincent

Informations forums :
Inscription : janvier 2006
Messages : 295
Points : 51
Points : 51
Je pense qu'il faut bien 2 requetes, car en faite meme les titres des catégories, doivent etre dynamique, car on aura la posibilité dans rajouté donc par la suite directement avec phpmyadmin 8) .

voici mon code modifié donc:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<dl id="menu1">
<?php
include ("mysqlconnect.php");
$comptcat=1;
$comptsouscat=1;
//requete grandes rubriques
$sql = "SELECT applicationModM, nomProjet 
FROM modulemis 
WHERE nomProjet = 'MIS'";
$requete = mysql_query($sql);
$nombrelignessql1=mysql_num_rows($requete);
 
while( $comptcat <= $nombrelignessql1)
	{
	$comptcat++;
			<dt onclick="javascript:montre('smenu1');">Menu 1</a></dt>
		<dd id="smenu1">
				<ul>
				//requete sous rubrique => enregistrements
				$sql2 = "SELECT numFiche, nomFiche
				FROM fiches
				WHERE enseigne = "$requete['applicationModR']"";
				$requete2 = mysql_query($sql2);
				$nombrelignessql2=mysql_num_rows($requete2);
				while( $comptsouscat <= $nombrelignessql2) 
					{
					 $comptsouscat++;
					<li><a href="#">'$requete2['nomFiche']'</a></li>
					} 
				</ul>
			</dd>
	}
?>	
</dl>
pour
Code :
"$requete['applicationModR']"";
je suis d'accord ca fonctionne par paire, mais la derniere referme la requete " ouvert en début de requete.
vincedjs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2006, 16h51   #6
Membre habitué
 
Inscription : février 2006
Messages : 109
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 109
Points : 120
Points : 120
ba non .. la t'as pas teste le code que tu nous montre ca peux pas marcher ...
dev_php_205 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2006, 16h54   #7
Membre habitué
 
Inscription : février 2006
Messages : 109
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 109
Points : 120
Points : 120
Pour le "melange" HTML et PHP .. va falloir que tu comprenne comment ca marche ..
Il faut pas enlever toutes les balises php ! Ton code HTML n'est pas du php !

Boulet !!.. desole .. OK pour le nombre de " ! ... c'est que c'est pas bien indenté ... j'avais mal lu !
dev_php_205 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2006, 17h01   #8
Membre du Club
 
Vincent
Inscription : janvier 2006
Messages : 295
Détails du profil
Informations personnelles :
Nom : Vincent

Informations forums :
Inscription : janvier 2006
Messages : 295
Points : 51
Points : 51
vincedjs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2006, 17h20   #9
Membre du Club
 
Vincent
Inscription : janvier 2006
Messages : 295
Détails du profil
Informations personnelles :
Nom : Vincent

Informations forums :
Inscription : janvier 2006
Messages : 295
Points : 51
Points : 51
j'ai donc opter pour l'echo
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<body>
<dl id="menu1">
<?php
include ("mysqlconnect.php");
$comptcat=1;
$comptsouscat=1;
//requete grandes rubriques
$sql = "SELECT applicationModM, nomProjet 
FROM modulemis 
WHERE nomProjet = 'MIS'";
$requete = mysql_query($sql);
$nombrelignessql1=mysql_num_rows($requete);
 
while( $comptcat <= $nombrelignessql1)
	{
	$comptcat++;
			echo("<dt onclick="javascript:montre('smenu1');">Menu 1</dt>\n");
			echo("<dd id="smenu1">\n");
			echo("<ul>\n");
			//requete sous rubrique => enregistrements
			$sql2 = 
			"SELECT numFiche, nomFiche
			FROM fiches
			WHERE enseigne = "$requete['applicationModR']"";
			$requete2 = mysql_query($sql2);
			$nombrelignessql2=mysql_num_rows($requete2);
			while( $comptsouscat <= $nombrelignessql2) 
				{
				$comptsouscat++;
				echo("<li><a href="#">'$requete2['nomFiche']'</a></li>\n");
				} 
			echo("</ul>\n");
			echo("</dd>\n");
	}
?>	
</dl>
seulement j'ai l'erreur suivante
Code :
Parse error: syntax error, unexpected T_STRING IN C:\wamp\www\rbdc\testmenu3.php ON line 34
qui correspond au 1er écho

Code :
echo("<dt onclick="javascript:montre('smenu1');">Menu 1</dt>\n");
vincedjs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2006, 17h23   #10
Membre habitué
 
Inscription : février 2006
Messages : 109
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 109
Points : 120
Points : 120
Erreur qui arrive tout le temps..

Code :
1
2
 
echo("<dt onclick=\"javascript:montre('smenu1');\">Menu 1</dt>\n");
Il faut proteger les " qui seront utilisees par le HTML pour lancer ta fonction javascript.
Cela ce fait avec \
Sinon on retourne dans le cycle ouvrir/fermer .. ouvrir/ fermer..
dev_php_205 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2006, 17h29   #11
Membre habitué
 
Inscription : février 2006
Messages : 109
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 109
Points : 120
Points : 120
Ce code est maintenant beaucoup plus propre et clair 8)

Tu devrais remplacer :
Code :
1
2
3
4
5
6
7
8
9
10
 
.
..
...
$sql2 = "SELECT numFiche, nomFiche 
         FROM fiches 
         WHERE enseigne = "$requete['applicationModR']""; 
...
..
.
Par :

Code :
1
2
3
4
5
6
7
8
9
 
.
..
...
$sql2 = "SELECT numFiche, nomFiche FROM fiches";
$sql2 .= " WHERE enseigne = ". $requete['applicationModR']. " "; 
...
..
.
C'est plus lisible
Remarque : J'ai rajoute un point avant et apres $requete['applicationModR'] pour concatener la chaine de caratere.
Ce que fait aussi .=
dev_php_205 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2006, 17h29   #12
Membre du Club
 
Vincent
Inscription : janvier 2006
Messages : 295
Détails du profil
Informations personnelles :
Nom : Vincent

Informations forums :
Inscription : janvier 2006
Messages : 295
Points : 51
Points : 51
Erreur sur la ligne du dessous:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
while( $comptcat <= $nombrelignessql1)
	{
	$comptcat++;
			echo("<dt onclick=\"javascript:montre('smenu1');\">Menu 1</dt>; 
			<dd id="smenu1">;
			<ul>\n");
			//requete sous rubrique => enregistrements
			$sql2 = 
			"SELECT numFiche, nomFiche
			FROM fiches
			WHERE enseigne = "$requete['applicationModR']"";
			$requete2 = mysql_query($sql2);
			$nombrelignessql2=mysql_num_rows($requete2);
			while( $comptsouscat <= $nombrelignessql2) 
				{
				$comptsouscat++;
				echo("<li><a href="#">'$requete2['nomFiche']'</a></li>\n");
				} 
			</ul>;
			</dd>\n");
	}
?>	
</dl>
c bien comme ca pour pas ouvrir fermer
vincedjs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2006, 17h40   #13
Membre habitué
 
Inscription : février 2006
Messages : 109
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 109
Points : 120
Points : 120
Je vais pas le faire pour toi ...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
while( $comptcat <= $nombrelignessql1) 
   { 
   $comptcat++; 
       echo("<dt onclick=\"javascript:montre('smenu1');\">Menu 1</dt>"); 
       echo("<dd id="smenu1">"); 
       echo("<ul><br>"); 
         //requete sous rubrique => enregistrements 
         $sql2 ="SELECT numFiche, nomFiche ";
         $sql2 .="FROM fiches ";
         $sql2 .="WHERE enseigne = '".$requete['applicationModR']."'"; 
         $requete2 = mysql_query($sql2); 
         $nombrelignessql2=mysql_num_rows($requete2); 
         while( $comptsouscat <= $nombrelignessql2) 
            { 
            $comptsouscat++; 
            echo("<li><a href=\"#\">".$requete2['nomFiche']."</a></li><br>"); 
            } 
         echo("</ul></dd><br></dl>"); 
   } 
?>
Bha si .. apres s'il y a des erreurs... il faut que tu y arrrives seul ...
dev_php_205 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2006, 17h49   #14
Membre habitué
 
Inscription : février 2006
Messages : 109
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 109
Points : 120
Points : 120
AARRGG... j'ai oublie celui la :

Code :
1
2
 
echo("<dd id=\"smenu1\">");
Bon courage pour la suite
dev_php_205 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2006, 17h51   #15
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Salut, je ne voudrais pas dévier du sujet, mais je reprend cette phrase :

Code :
Je pense qu'il faut bien 2 requetes, car en faite meme les titres des catégories, doivent etre dynamique, car on aura la posibilité dans rajouté donc par la suite directement avec phpmyadmin
J'avais eu la même chose et j'avais créé un menu dynamique, connecté à la base de donnée donc. Je pouvais y ajouter des catégories directement depuis mon admin perso. J'avais fait cela parce que cela me semblait plus efficace, plus "pro", en évitant notamment d'aller trifouiller le code.

Mais en pratique, des catégories j'en ajoutais une par semaine.
Alors au lieu d'avoir un menu statique hyper rapide à charger, j'avais un gros menu qui mangeait beaucoup de ressource pour le même résultat offert au visiteur.
Maintenant je préfère passer 2 min dans le code et alléger le chargement des pages.

Voilà, c'était la pause méditation spirituelle.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h27.


 
 
 
 
Partenaires

Hébergement Web