[menu javascript//php/mysql ?]

Eléphanteau du PHP | 40 Messages

22 févr. 2006, 15:55

mysql connect je l utilise dans presque toute mes pages jamais eu de probleme:

le voici
<?php
$host = "xxx"; 
$user = "xxx"; 
$pass = "xxx"; 
$bdd = "xxx"; 
// connexion
@mysql_connect($host,$user,$pass)
   or die("Impossible de se connecter");
@mysql_select_db("$bdd")
   or die("Impossible de se connecter à la base"); 
?> 
j'ai éplucher ligne par ligne le code des 2 pages :cry: j suis bloqué oinn :cry: Personne n'a rencontré de problème similaire :?:

Eléphanteau du PHP | 40 Messages

22 févr. 2006, 15:59

Déja l'erreur indique une variable $end..... il n'y en as pas dans ce script :?

Génèralement c'est une fermeture de "}" ou ")" ou ";" et encore.

Mais j'ai éplucher avec notepad++ les lignes et ouverture/fermeture et rien...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

22 févr. 2006, 16:01

:boire4: dingue

tu n'as qu'un seul fichier de test où tu effectu les modification ? Parce que la je vois absolument pas de vriable $end..... il n'y a pas un mot, variable qui traine dans ton script local ?

Reprend celui ci dans un nouveau fichier et reteste :-s

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 40 Messages

22 févr. 2006, 16:11

pour l'instant je ne met donc que le menu dans ma page pour l'insérer dans ma page d'accueil par la suite donc voici le seul code lié

page "testmenu5.php"
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Test menu3</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link href="css/style3.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
window.onload=montre;
function montre(id) 
{
var d = document.getElementById(id);
	for (var i = 1; i<=10; i++) 
	{
		if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
	}
if (d) {d.style.display='block';}
}
</script>
</head>
<body> 
<dl id="menu1"> 
<?php 
include ("mysqlconnect.php"); 

//requete grandes rubriques 
$sql = "SELECT m.applicationModM, m.nomProjet, f.numFiche, f.nomFiche 
FROM modulemis m, fiches f 
WHERE enseigne = m.applicationModM 
ORDER BY m.applicationModM, f.numFiche"; 

$requete = mysql_query($sql); 

$menu= ""; 
$i=1; 

$fin = false; 

while($data = mysql_fetch_array($requete)) 
    { 
    if($menu != $data['applicationModM']) 
        {      
        if($i != 1) 
            { 
?> 
            </ul> 
            </dd> 
<? 
            } 
?> 
        <dt onmouseover="javascript:montre('smenu<? echo $i; ?>');" onmouseout="javascript:montre();"> 
        <a href="#"><? echo $data['applicationModM']; ?></a> 
        </dt> 
        <dd id="smenu<? echo $i; ?>" onmouseover="javascript:montre('smenu<? echo $i; ?>');" onmouseout="javascript:montre();"> 
        <ul> 
<? 
        }      
?>      
    <li><a href="#"><? echo $data['nomFiche']; ?></a></li>          
<? 
    $i++; 
    }	
?>           
</dl> 
</body>
</html>
"mysqlconnect.php"
<?php
$host = "xxx"; 
$user = "xxx"; 
$pass = "xxx"; 
$bdd = "xxx"; 
// connexion
@mysql_connect($host,$user,$pass)
   or die("Impossible de se connecter");
   or die("Impossible de se connecter à la base"); 
@mysql_select_db("$bdd")
?> 
et on s est jamais pour
<link href="css/style3.css" rel="stylesheet" type="text/css" />
mon fichier style3.css:

Code : Tout sélectionner

<!-- body { margin: 0; padding: 0; background: white; font: 80% verdana, arial, sans-serif; } dl, dt, dd, ul, li { margin: 0; padding: 0; list-style-type: none; } #menu { position: absolute; top: 0; left: 0; } #menu { width: 15em; } #menu dt { cursor: pointer; margin: 2px 0;; height: 20px; line-height: 20px; text-align: center; font-weight: bold; border: 1px solid gray; background: #ccc; } #menu dd { border: 1px solid gray; } #menu li { text-align: center; background: #fff; } #menu li a, #menu dt a { color: #000; text-decoration: none; display: block; border: 0 none; height: 100%; } #menu li a:hover, #menu dt a:hover { background: #eee; } .mentions { position: absolute; top : 300px; left : 10px; color: #000; background-color: #ddd; }
:afraid:

Eléphanteau du PHP | 40 Messages

22 févr. 2006, 16:12

sinon $end ce n'est pas une variable utilisé ca signifie qu'il manque 1 "}" ou quelque chose fermant une boucle ou autres.
J deviens fou :oops:

Eléphanteau du PHP | 40 Messages

22 févr. 2006, 18:20

Il fallai simplement remplacer les <? par <?php :D
:roll:

Maintenant j'ai l erreur:

Code : Tout sélectionner

Parse error: syntax error, unexpected T_LOGICAL_OR in C:\wamp\www\rbdc\mysqlconnect.php on line 9
J'avance :P

la ligne 9:

Code : Tout sélectionner

function montre(id)
le script complet:

Code : Tout sélectionner

function montre(id) { var d = document.getElementById(id); for (var i = 1; i<=10; i++) { if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';} } if (d) {d.style.display='block';} }
pourtant il n'a pas de ';' a mettre a function montre(id) :roll:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

22 févr. 2006, 21:09

l'erreur est dans le fichier de connexion ! :wink:
<?php
@mysql_connect($host,$user,$pass)
   or die("Impossible de se connecter");
   or die("Impossible de se connecter à la base");
@mysql_select_db("$bdd")
?>
deux "or die()" qui se suivent :?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 40 Messages

23 févr. 2006, 11:10

L'erreur est dans le fichier de connexion ! :wink:
Exact :idea:

DOnc maintenant pu d'erreur 8)

Seulement quand j'ouvre cette page "testmenu5.php";

=> Page blanche avec le bon titre de page "testmenu5"
Comme si le php ne s'executer pas :?
ps: mes autres page(s) ".php"fonctionne :x

mysqlconnect.php:
<?php
$host = "xxx"; 
$user = "xxx"; 
$pass = "xxx"; 
$bdd = "xxx"; 
// connexion
@mysql_connect($host,$user,$pass)
   or die("Impossible de se connecter");
@mysql_select_db("$bdd")
?> 
testmenu5.php:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Test menu5</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link href="css/style3.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
window.onload=montre;
function montre(id) 
{
var d = document.getElementById(id);
	for (var i = 1; i<=10; i++) 
	{
		if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
	}
if (d) {d.style.display='block';}
}
</script>
</head>
<body> 
<dl id="menu1"> 
<?php 
include ("mysqlconnect.php"); 

//requete grandes rubriques 
$sql = "SELECT m.applicationModM, m.nomProjet, f.numFiche, f.nomFiche 
FROM modulemis m, fiches f 
WHERE enseigne = m.applicationModM 
ORDER BY m.applicationModM, f.numFiche"; 

$requete = mysql_query($sql); 

$menu= ""; 
$i=1; 

$fin = false; 

while($data = mysql_fetch_array($requete)) 
    { 
    if($menu != $data['applicationModM']) 
        {      
        if($i != 1) 
            { 
?> 
            </ul> 
            </dd> 
<?php 
            } 
?> 
        <dt onmouseover="javascript:montre('smenu<? echo $i; ?>');" onmouseout="javascript:montre();"> 
        <a href="#"><? echo $data['applicationModM']; ?></a> 
        </dt> 
        <dd id="smenu<? echo $i; ?>" onmouseover="javascript:montre('smenu<? echo $i; ?>');" onmouseout="javascript:montre();"> 
        <ul> 
<?php
        }      
?>      
    <li><a href="#"><? echo $data['nomFiche']; ?></a></li>          
<?php 
    $i++; 
    }	
?>           
</dl>
</body>
</html>


Il me marque en bas a gauche de la page Terminé, aucune :!: "erreur(s)"

Cela signifie quoi :?: a part que je suis encore bloqué :shock:

Mammouth du PHP | 19672 Messages

23 févr. 2006, 11:15

Dans ta boucle while, tu as un if() : ajoute un else avec un message d'erreur personalisé pour contrôle et essaye à nouveau. Si ce message s'affiche, c'est que la condition du if() n'est jamais remplie. Ça te donnera un point de départ pour chercher l'erreur.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 40 Messages

23 févr. 2006, 12:00

Donc j'ai rajouté 2 else

D'apres ce que je vois, if($i != 1) ne s'exécute pas.
Donc pas de:
</ul>
</dd>

Code Test:
$i=1; 

$fin = false; 

while($data = mysql_fetch_array($requete)) 
    { 
    if($menu != $data['applicationModM']) 
        {      
        if($i != 1) 
            { 
?> 
            </ul> 
            </dd> 
<?php 
            }else
				{
				echo'message du else1';
				} 
?> 
        <dt onmouseover="javascript:montre('smenu<? echo $i; ?>');" onmouseout="javascript:montre();"> 
        <a href="#"><? echo $data['applicationModM']; ?></a> 
        </dt> 
        <dd id="smenu<? echo $i; ?>" onmouseover="javascript:montre('smenu<? echo $i; ?>');" onmouseout="javascript:montre();"> 
        <ul> 
<?php
        }
		else
			{
			echo'message du else2';
			}		
?>      
    <li><a href="#"><? echo $data['nomFiche']; ?></a></li>          
<?php 
    $i++; 
    }	
?>           
</dl>
la page affiche donc

Code : Tout sélectionner

message du else1
Ensuite j'ai essayé sans le 1er if et la page n'affiche rien du tout.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Test menu5</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link href="css/style3.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
window.onload=montre;
function montre(id) 
{
var d = document.getElementById(id);
	for (var i = 1; i<=10; i++) 
	{
		if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
	}
if (d) {d.style.display='block';}
}
</script>
</head>
<body> 
<dl id="menu1"> 
<?php 
include ("mysqlconnect.php"); 

//requete grandes rubriques 
$sql = "SELECT m.applicationModM, m.nomProjet, f.numFiche, f.nomFiche 
FROM modulemis m, fiches f 
WHERE enseigne = m.applicationModM 
ORDER BY m.applicationModM, f.numFiche"; 

$requete = mysql_query($sql); 

$menu= ""; 
$i=1; 

$fin = false; 

while($data = mysql_fetch_array($requete)) 
    { 
    if($menu != $data['applicationModM']) 
        {      
        if($i != 1) 
            { 
?> 
            </ul> 
            </dd> 
<?php 
            }else
				{
				echo'message du else1';
				} 
?> 
        <dt onmouseover="javascript:montre('smenu<? echo $i; ?>');" onmouseout="javascript:montre();"> 
        <a href="#"><? echo $data['applicationModM']; ?></a> 
        </dt> 
        <dd id="smenu<? echo $i; ?>" onmouseover="javascript:montre('smenu<? echo $i; ?>');" onmouseout="javascript:montre();">
        <ul> 
<?php
        }
		else
			{
			echo'message du else2';
			}		
?>      
    <li><a href="#"><? echo $data['nomFiche']; ?></a></li>          
<?php 
    $i++; 
    }	
?>           
</dl>
</body>
</html>
DOnc je comprend pas je croyai que ca venai du $i et de son incrémentation, mais quand j'enleve la condition if($i != 1), aucun affichage :? .

Mammouth du PHP | 19672 Messages

23 févr. 2006, 12:44

Voici quelques modification mineures, à tester, mais je ne vois pas ce qui cloche:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Test menu5</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link href="css/style3.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
/* <![CDATA[ */
window.onload=montre;
function montre(id)
{
    var d = document.getElementById(id);
    for (var i = 1; i<=10; i++)
    {
        if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
    }
    if (d) {d.style.display='block';}
}
/* ]]> */
</script>
</head>
<body>
<dl id="menu1">
<?php
include ("mysqlconnect.php");

//requete grandes rubriques
$sql = "SELECT m.applicationModM, m.nomProjet, f.numFiche, f.nomFiche ".
       "FROM modulemis m, fiches f ".
       "WHERE enseigne = m.applicationModM ".
       "ORDER BY m.applicationModM, f.numFiche";
$requete = mysql_query($sql);

$i = 1;
$fin = false;
while($data = mysql_fetch_array($requete))
{
    if(!empty($data['applicationModM']))
    {
        if($i > 1)
        {
?>
            </ul>
            </dd>
<?php
        }
        else
        {
            echo'message du else1';
        }
?>
  <dt onmouseover="javascript:montre('smenu<? echo $i; ?>');" onmouseout="javascript:montre();">
    <a href="#"><? echo $data['applicationModM']; ?></a>
  </dt>
    <dd id="smenu<? echo $i; ?>" onmouseover="javascript:montre('smenu<? echo $i; ?>');" onmouseout="javascript:montre();">
      <ul>
<?php
    }
    else
    {
        echo'message du else2';
    }
?>      
        <li><a href="#"><? echo $data['nomFiche']; ?></a></li>          
<?php
    $i++;
}
?>           
</dl>
</body>
</html>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 40 Messages

23 févr. 2006, 13:00

message du else 1

c est la seul chose qui s'affiche :cry:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

23 févr. 2006, 14:00

et dans le code source rien non plus ?!

Ce test sert à fermer la liste de <li> et seulement dans le cas ou le menu change par rapport au précédent ET (verification de ce test) seulement si on est déja passé au moins une fois dans la boucle.
if($i > 1)

affiche les variables du test avec $menu pour suivre leur contenu:
echo 'menu: '.$menu.'  app: '.$data['applicationModM'].'<br />';
juste apres la boucle while() et avant le 1er if()

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 40 Messages

23 févr. 2006, 14:58

et dans le code source rien non plus ?!
sisi :idea:
<body> 
<dl id="menu1"> 
 
message du else1 
  <dt onmouseover="javascript:montre('smenu<? echo $i; ?>');" onmouseout="javascript:montre();"> 
    <a href="#"><? echo $data['applicationModM']; ?></a> 
  </dt> 
    <dd id="smenu<? echo $i; ?>" onmouseover="javascript:montre('smenu<? echo $i; ?>');" onmouseout="javascript:montre();"> 
      <ul> 
       
        <li><a href="#"><? echo $data['nomFiche']; ?></a></li>           
 
            </ul> 
            </dd> 
 
  <dt onmouseover="javascript:montre('smenu<? echo $i; ?>');" onmouseout="javascript:montre();"> 
    <a href="#"><? echo $data['applicationModM']; ?></a> 
  </dt> 
    <dd id="smenu<? echo $i; ?>" onmouseover="javascript:montre('smenu<? echo $i; ?>');" onmouseout="javascript:montre();"> 
      <ul> 
       
        <li><a href="#"><? echo $data['nomFiche']; ?></a></li>           
 
            </ul> 
            </dd> 
 
  <dt onmouseover="javascript:montre('smenu<? echo $i; ?>');" onmouseout="javascript:montre();"> 
    <a href="#"><? echo $data['applicationModM']; ?></a> 
  </dt> 
    <dd id="smenu<? echo $i; ?>" onmouseover="javascript:montre('smenu<? echo $i; ?>');" onmouseout="javascript:montre();"> 
      <ul> 
       
        <li><a href="#"><? echo $data['nomFiche']; ?></a></li>           
 
            </ul> 
            </dd> 
 
  <dt onmouseover="javascript:montre('smenu<? echo $i; ?>');" onmouseout="javascript:montre();"> 
    <a href="#"><? echo $data['applicationModM']; ?></a> 
  </dt> 
    <dd id="smenu<? echo $i; ?>" onmouseover="javascript:montre('smenu<? echo $i; ?>');" onmouseout="javascript:montre();"> 
      <ul> 
       
        <li><a href="#"><? echo $data['nomFiche']; ?></a></li>           
 
            </ul> 
            </dd> 
 
  <dt onmouseover="javascript:montre('smenu<? echo $i; ?>');" onmouseout="javascript:montre();"> 
    <a href="#"><? echo $data['applicationModM']; ?></a> 
  </dt> 
    <dd id="smenu<? echo $i; ?>" onmouseover="javascript:montre('smenu<? echo $i; ?>');" onmouseout="javascript:montre();"> 
      <ul> 
       
        <li><a href="#"><? echo $data['nomFiche']; ?></a></li>           
            
</dl> 
</body>
ps:avec 1 echo de $i j'ai "6"

et quand j effectue la requete dans phpmyadmin j en es 5 d'enregistrements

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

23 févr. 2006, 15:11

c'est le code source ça :shock:

On voit tout le code php c'est pas normal.

Est-ce que tu effectu des tests avec une bases de données bien remplie au niveau des menus et sous menus ?
Menu1
sous menu 1.1
sous menu 1.2
Menu2
sous menu 2.1
Menu3
sous menu 3.1
sous menu 3.2
sous menu 3.3
parce que la il n'y a apparemment qu'un sous menu pour tous les menus (5) pas évident de tester un code comme ça.
:?


il y a eu un oublis de ma part, dans l'affectation des menus:
$menu= ""; // ne pas oublier de remettre cette ligne
$i=1;

while($data = mysql_fetch_array($requete))
    {
    if($menu != $data['applicationModM'])
        {      
        $menu = $data['applicationModM']; // ligne ajoutée ********
        if($i != 1)
            {         
?> 

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute