[php]Créer un menu avec admin

Pour tout ce qui ne touche ni à Rayman, ni à la communauté.

Moderator: Modérateurs francophones

Post Reply
ben24
Pink
Posts: 264
Joined: Sun Apr 25, 2004 7:24 pm
Location: BOUH! J'étais derrière toi! Tu as eu peur?
Tings: 4815

[php]Créer un menu avec admin

Post by ben24 »

Bon, bon c'est un projet que je me suis lancé pour les vacs car je m'emmerde... Je suis a la première partie du scripte c'est a dire faire le menu avec du php (la deuxième parti étant l'admin). Mais je bloque...

Code: Select all

   <!-- menu referencement site -->
<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("referencement");

$reponse = mysql_query("SELECT * FROM cat_menu") or die mysql_error(); // Requête SQL

while ($donnees = mysql_fetch_array($reponse) )
{
echo '<li><a href="' . $donnees['lien'] . '" >' . $donnees['nom'] . '</a></li>';
}

mysql_close(); // Déconnexion de MySQL

?>
Mais ça me renvoit une erreur bizarre:
' . $donnees['nom'] . ''; } mysql_close(); // Déconnexion de MySQL ?>
Alors si quelqu'un sait d'où vient mon problème, je le remercie de le dire.

EDIT: J'ai refait le script et le problème a été résolu mais je ne sais toujours pas d'où il venait...
Règles:

Ecrire Hunch avec une majuscule!

Ecrire Français!

--------------------------------


On veut la vidéo!
Romano
Space Mama
Posts: 3954
Joined: Fri Aug 08, 2003 10:17 pm
Location: Aix-en-Provence, France
Contact:
Tings: 70724

Post by Romano »

Après avoir modifier quelques petites choses, ça semble fonctionner chez moi :)

Code: Select all

<!-- menu referencement site -->
<?php
mysql_connect('localhost', 'root', '') or die('Impossible de se connecter à la base.'); // Connexion à MySQL
mysql_select_db('referencement') or die('Impossible de sélectionner la base.');

$reponse = mysql_query("SELECT * FROM cat_menu") or die('Erreur durant l\'éxecution de la requête : ' . mysql_error()); // Requête SQL

if(mysql_num_rows($reponse))
{
	while ($donnees = mysql_fetch_array($reponse))
	{
	echo '<li><a href="' . $donnees['lien'] . '" >' . $donnees['nom'] . '</a></li>';
	}
}

mysql_close(); // Déconnexion de MySQL

?>
A noter le mysql_num_rows qui permet d'éviter les erreurs lorsqu'il n'y a pas de réponse à la requête.
Plus quelques optimisations, notamment remplacement des " par des ' (car pas de parsage des variables avec le ') :)
Who's your daddy?
ben24
Pink
Posts: 264
Joined: Sun Apr 25, 2004 7:24 pm
Location: BOUH! J'étais derrière toi! Tu as eu peur?
Tings: 4815

Post by ben24 »

Ah un chtit problème: 2 erreurs mais les mêmes.

Notice: Undefined index: nom in d:\program files\easyphp1-8\www\idée_référencement_rpg\test2.php on line 12


Notice: Undefined index: nom in d:\program files\easyphp1-8\www\idée_référencement_rpg\test2.php on line 12
Règles:

Ecrire Hunch avec une majuscule!

Ecrire Français!

--------------------------------


On veut la vidéo!
Romano
Space Mama
Posts: 3954
Joined: Fri Aug 08, 2003 10:17 pm
Location: Aix-en-Provence, France
Contact:
Tings: 70724

Post by Romano »

:o
Etonnant car cela fonctionne parfaitement sur mon serveur perso :?
Who's your daddy?
ben24
Pink
Posts: 264
Joined: Sun Apr 25, 2004 7:24 pm
Location: BOUH! J'étais derrière toi! Tu as eu peur?
Tings: 4815

Post by ben24 »

Et pourtant ça marche pas chez moi. J'ai un doute quand même sur la concaténation de cette ligne:

Code: Select all

echo '<li><a href="' . $donnees['lien'] . '" >' . $donnees['nom'] . '</a></li>';
Car quand je remplace sans concaténation ça marche parfaitement:

Code: Select all

<?php
include("connection_bdd.php");

$reponse = mysql_query("SELECT * FROM cat_menu");

while ($donnees = mysql_fetch_array($reponse) )
{

?>
<li><a href="<?php echo $donnees['lien']; ?>"><?php echo $donnees['titre']; ?></a></li>

<?php

}

mysql_close();
?>
Règles:

Ecrire Hunch avec une majuscule!

Ecrire Français!

--------------------------------


On veut la vidéo!
Romano
Space Mama
Posts: 3954
Joined: Fri Aug 08, 2003 10:17 pm
Location: Aix-en-Provence, France
Contact:
Tings: 70724

Post by Romano »

Eh bien alors enlève la concaténation :lol:
Si c'est un retour chariot que tu veux, tu peux l'avoir avec \n, mais entre guillemets doubles (") seulement (ce dont j'ai parlé tout à l'heure :) ).
Who's your daddy?
ben24
Pink
Posts: 264
Joined: Sun Apr 25, 2004 7:24 pm
Location: BOUH! J'étais derrière toi! Tu as eu peur?
Tings: 4815

Post by ben24 »

Tu vas dire que je suis embêtant mais... j'ai encore un problème.

J'essaye de faire le fichier admin pour modifier, ajouter, supprimer des liens. J'en suis qu'au début mais je test...

Code: Select all

<?php 
include("connection_bdd.php") //connection a la bdd. Copie sur admin ou lien complet?

$reponse = mysql_query("SELECT * FROM cat_menu") or die('Erreur durant l\'éxecution de la requête : ' . mysql_error()); // Requête SQL 

/*Faut définir ce qu'on doit faire avec une variable, qu'on récupère a partir d'une donner... Comment faire? Utilisé peut être la stucture if...else. 
Primo afficher tout ça...*/

while ($donnees = mysql_fetch_array($reponse) )
{

?>
	<table>
	<tr>
<td><a href="<?php echo $donnees['lien']; ?>"><?php echo $donnees['titre']; ?></a></td>
<td> <?php echo $donnees['lien']; ?></td>
	</tr>

<?php

}


?>

Et ça me renvoie l'erreur:
Parse error: parse error in d:\program files\easyphp1-8\www\idée_référencement_rpg\admin\modif_menu_ref.php on line 4
Et pourtant à la ligne 4, il manque pas de ";"...
Règles:

Ecrire Hunch avec une majuscule!

Ecrire Français!

--------------------------------


On veut la vidéo!
Romano
Space Mama
Posts: 3954
Joined: Fri Aug 08, 2003 10:17 pm
Location: Aix-en-Provence, France
Contact:
Tings: 70724

Post by Romano »

ben24 wrote:

Code: Select all

<?php 
include("connection_bdd.php") //connection a la bdd. Copie sur admin ou lien complet?
Si le script se trouve dans un répertoire admin/, et que le script de connexion est un répertoire plus haut, il suffit d'un

Code: Select all

include('../connection_bdd.php"); //connection a la bdd.
Surtout ne pas oublier le ;, qui était omis dans ton quote :wink:
Who's your daddy?
ben24
Pink
Posts: 264
Joined: Sun Apr 25, 2004 7:24 pm
Location: BOUH! J'étais derrière toi! Tu as eu peur?
Tings: 4815

Post by ben24 »

Parfait, merci Romano. Bon maintenant faut que je pense comment je vais présenter tout ça....
Règles:

Ecrire Hunch avec une majuscule!

Ecrire Français!

--------------------------------


On veut la vidéo!
ben24
Pink
Posts: 264
Joined: Sun Apr 25, 2004 7:24 pm
Location: BOUH! J'étais derrière toi! Tu as eu peur?
Tings: 4815

Post by ben24 »

Je sais, j'édite pas comme ça Romano pourra voir.

Depuis hier soir je me triture l'esprit pour l'admin des menu... Il faut que je fasse au plus simple. Ces fonctions doit être Modifier, Supprimer, Ajouter... Mais j'ai du mal a voir comment le code pourrait être...

J'ai pensé a attribué un id a chaque lien du menu pour que ça soit plus facile pour sql. Mais après il faut voir comment va être le code... Et c'est là que je bloque, je ne vois pas comment je peux faire....

Surement il faut utiliser des structures if...else...

Romano tu peux essayer de me donner une piste (pas la réponse, une piste. Je veux trouver moi même)?

EDIT: Je pense avoir trouver la solution! J'ai fait un script mais ça me renvoit un parse error:

Code: Select all

<?php 
include("../connection_bdd.php"); //connection a la bdd. Copie sur admin ou lien complet?

//--------------------------------------------------------
// Vérification 1 : est-ce qu'on veut poster un nouveau lien ?
//--------------------------------------------------------

If (isset($_POST['titre']) AND isset($_POST['lien'])
{
	$titre = addslashes($_POST['titre']);
    $lien = addslashes($_POST['lien']);
	
		If ($_POST['id_menu'] == 0)
		{
			mysql_query("INSERT INTO cat_menu VALUES('','" . $titre . "','" . $lien . "')"); 
		}
		
		Else
		{
			mysql_query("UPDATE cat_menu SET titre='" . $titre . "', lien='" . $lien . "' WHERE id=" . $_POST['id_menu']);
		}
} 

//--------------------------------------------------------
// Vérification 2 : est-ce qu'on veut supprimer un lien ?
//--------------------------------------------------------

if (isset($_GET['supprimer_lien']))
{
    mysql_query('DELETE FROM cat_menu WHERE id=' . $_GET['supprimer_lien']);
}

?>

<table><tr>
<th>Modifier</th>
<th>Supprimer</th>
<th>Titre</th>
<th>lien</th>
</tr>

<?php
$retour = mysql_query('SELECT * FROM cat_menu ORDER BY id DESC');
while ($donnees = mysql_fetch_array($retour))
{
?>
<tr>
<td><?php echo '<a href="rediger_lien.php?modifier_lien=' . $donnees['id'] . '">'; ?>Modifier</a></td>
<td><?php echo '<a href="modif_menu_ref.php?supprimer_lien=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
<td><?php echo stripslashes($donnees['titre']); ?></td>
<td><?php echo stripslashes($donnees['lien']); ?></td>
</tr>
Parse error: parse error in d:\program files\easyphp1-8\www\idée_référencement_rpg\admin\modif_menu_ref.php on line 9
Vu que je pars cette aprem et que je reviendrai que demain... Tu peux trouver mon erreur et dire comment tu trouves le scripts?

REEDIT: j'ai trouver mon erreur j'ai presque terminé mon menu avec admin, j'ai presque fini mon dernier fichier mais il me renvoie encore un parse error (j'en ai marre des parse error) a la ligne 22, alors qu'il me semble qu'il n'y a pas d'erreur...

Code: Select all

<!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" >
   <head>
       <title>Nouveau lien du menu</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <style type="text/css">
        h3, form
        {
            text-align:center;
        }
        </style>
    </head>
   
    <body>

<h3><a href="modif_menu_ref.php">Retour à la liste des news</a></h3>


<?php 
include("../connection_bdd.php")

if (isset($_GET['modifier_lien'])) // Si on demande de modifier un menu
{
    $retour = mysql_query('SELECT * FROM cat_menu WHERE id=' . $_GET['modifier_news']);
    $donnees = mysql_fetch_array($retour);
   
    $titre = $donnees['titre'];
    $lien = $donnees['lien'];
    $id_menu = $donnees['id']; // Cette variable va servir pour se souvenir que c'est une modification
}

else // C'est qu'on rédige un nouveau lien
{
    $titre = '';
    $lien = '';
    $id_news = 0; // La variable vaut 0, donc on se souviendra que ce n'est pas une modification
}

?>

<form action="modif_menu_ref.php" method="post">
<p>Titre : <input type="text" size="30" name="titre" value="<?php echo $titre; ?>" /></p>

<p>
    Contenu :<br />
    <textarea name="contenu" cols="50" rows="1">
    <?php echo $lien; ?>
    </textarea><br />
   
    <input type="hidden" name="id_news" value="<?php echo $id_menu; ?>" />
    <input type="submit" value="Envoyer" />
</p>
</form>

</body>
</html>
voici la partie defectueuse:

Code: Select all

if (isset($_GET['modifier_lien'])) // Si on demande de modifier un menu
{
    $retour = mysql_query('SELECT * FROM cat_menu WHERE id=' . $_GET['modifier_news']);
    $donnees = mysql_fetch_array($retour);
   
    $titre = $donnees['titre'];
    $lien = $donnees['lien'];
    $id_menu = $donnees['id']; // Cette variable va servir pour se souvenir que c'est une modification
}
Règles:

Ecrire Hunch avec une majuscule!

Ecrire Français!

--------------------------------


On veut la vidéo!
Romano
Space Mama
Posts: 3954
Joined: Fri Aug 08, 2003 10:17 pm
Location: Aix-en-Provence, France
Contact:
Tings: 70724

Post by Romano »

Je ne sais pas si c'est une erreur de recopiage, mais tu as oublié un ; après l'inclusion du fichier de connection :wink:
Who's your daddy?
ben24
Pink
Posts: 264
Joined: Sun Apr 25, 2004 7:24 pm
Location: BOUH! J'étais derrière toi! Tu as eu peur?
Tings: 4815

Post by ben24 »

Ah oui ! Je réponds avec beaucoup de retard je sais.

Bon, pour l'instant j'abandonne. Je me remettrai dans le bain pendant les vacs!
Règles:

Ecrire Hunch avec une majuscule!

Ecrire Français!

--------------------------------


On veut la vidéo!
Post Reply