Problème $_GET + BDD

Résolu
killermano66 Messages postés 233 Date d'inscription   Statut Membre Dernière intervention   -  
killermano66 Messages postés 233 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,
J'essaie de construire une structure pour un site web avec la méthode GET affin de me faciliter la tâche lors de futures modifications. Tout fonctionne très bien au niveau de l'affichage des pages de base, je vous met le script ici même :

<div>
MON MENU :
<a href="index.php?page=news">News</a>
<a href="index.php?page=articles">Articles</a>
<a href="index.php?page=forums">Forums</a>
<a href="index.php?page=medias">Medias</a><br /><br /><br />
<div>

<div>
CONTENUE DES PAGES DU MENU :<br />

<?php
$id = intval($_GET["id"]);

if ($_GET['page'] == "news") {include("news.php");}
if ($_GET['page'] == "articles") {include("articles/main.php");}
if ($_GET['page'] == "forums") {include("forums.php");}
if ($_GET['page'] == "medias") {include("medias.php");}
?>
</div>

Voilà donc jusqu'ici, tout va très bien. Mon soucis vient au niveau de la page articles\main.php. Je veux y inclure le contenu d'une base de donnée. Mon staff ayant la possibilité de poster ses articles par le biais de formulaire incluant les données dans une base de données. Les données étant triés par id j'aimerais afficher mes articles avec une url du genre

index.php?page=article?id=2

qui irait donc chercher l'article portant l'id 2 dans ma base de données et l'afficherais dans la partie CONTENUE DES PAGES DU MENU sans bien sur me virer le MENU.

Je vous met le contenue de ma page /articles/main.php :
<?php
include('connection.php');
$requete_selection = mysql_query('SELECT * FROM articles') or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while ($donnees = mysql_fetch_array($requete_selection)){

echo '<a href="index.php?page=article?id='.$donnees['id'].'">';
echo $donnees['titre'] . '</a>' . ' ' . 'écrit par ';
echo $donnees['auteur'] . '<br />';
}
?>

Donc la je suis bien conscient que le problème vient d'ici : ?id='.$donnees['id'].'">';
Mais je n'arrives pas à le résoudre, quand je clique sur le liens de mes articles, je reste sur la base de la page index.php avec mon menu etc ... mais l'article n'est pas présent (je peux vous certifier que celàa ne vient pas d'un problème de BDD car les articles s'affichent bien un a un). Je fais donc appel à vos lumières, en espérant trouver une réponse en attendant, je vous remercies de votre attention ;)

Cordialement,

34 réponses

killermano66 Messages postés 233 Date d'inscription   Statut Membre Dernière intervention   41
 
J'ai testé les deux dans le doute et ça ne change absolument rien l'erreur revient dans les deux cas. J'y compred quedale. Merci.
0
stephane_mc2004 Messages postés 755 Date d'inscription   Statut Membre Dernière intervention   96
 
Je reprend donc
===================
INDEX.PHP
===================
<?php

if ($_GET['page'] == "news") {include("http://www.rpg-z.com/get_test/news.php");}
if ($_GET['page'] == "articles") 
{
     if(isset($_GET['id']))
     {
          include('http://www.rpg-z.com/get_test/articles/main.php?id=' . $_GET['id'] );
     }
     else { include("http://www.rpg-z.com/get_test/articles/main.php"); } 


}



if ($_GET['page'] == "forums") {include("http://www.rpg-z.com/get_test/forums.php");}
if ($_GET['page'] == "medias") {include("http://www.rpg-z.com/get_test/medias.php");}
?> 



=============
articles/main.php
=============*
<?php

include('ici ladresse absolue de la page de connexion');
if(isset($_GET['id']){ //si la variable id existe 
$id = $_GET['id']; // je cree une variable qui sapel id qui a pour valeur l'id en parametre dans l'URL


$requete_selection = mysql_query('SELECT * FROM articles WHERE id="$id"') or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

$donnees = mysql_fetch_array($requete_selection);
echo $donnees['contenu'];
echo $donnees['auteur'] . '<br />';
mysql_close();
}
else {

include('ici aussi ladresse absolue de la page de connexion a la base');

$requete_selection = mysql_query('SELECT * FROM articles') or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while ($donnees = mysql_fetch_array($requete_selection)){

echo '<a href="index.php?page=articles&id='.$donnees["id"].' ">';
echo $donnees['titre'] . '</a>' . ' ' . 'écrit par ';
echo $donnees['auteur'] . '<br />';
}
mysql_close();
}
?> 

0
stephane_mc2004 Messages postés 755 Date d'inscription   Statut Membre Dernière intervention   96
 
si le probleme persiste copie/colle ton code de main.php ici et index.php
0
killermano66 Messages postés 233 Date d'inscription   Statut Membre Dernière intervention   41
 
Alors la c'est pire en mettant les url absolue même les autres liens déconnent pourtant ils sont bon.

http://www.rpg-z.com/get_test/index.php?page=news

code index.php :
<div>
MON MENU :
<a href="index.php?page=news">News</a>
<a href="index.php?page=articles">Articles</a>
<a href="index.php?page=forums">Forums</a>
<a href="index.php?page=medias">Medias</a><br /><br /><br />
<div>

<div>
CONTENUE DES PAGES DU MENU :<br />
<?php
if ($_GET['page'] == "news") {include("http://www.rpg-z.com/get_test/news.php");}
if ($_GET['page'] == "articles")
{
if(isset($_GET['id']))
{
include('http://www.rpg-z.com/get_test/articles/main.php?id=' . $_GET['id'] );
}
else { include("http://www.rpg-z.com/get_test/articles/main.php"); }
}
if ($_GET['page'] == "forums") {include("http://www.rpg-z.com/get_test/forums.php");}
if ($_GET['page'] == "medias") {include("http://www.rpg-z.com/get_test/medias.php");}
?>
</div>



code articles/main.php :
<?php

include('http://www.rpg-z.com/get_test/connection.php');
if(isset($_GET['id']){ //si la variable id existe
$id = $_GET['id']; // je cree une variable qui sapel id qui a pour valeur l'id en parametre dans l'URL


$requete_selection = mysql_query('SELECT * FROM articles WHERE id="$id"') or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

$donnees = mysql_fetch_array($requete_selection);
echo $donnees['contenu'];
echo $donnees['auteur'] . '<br />';
mysql_close();
}
else {

include('http://www.rpg-z.com/get_test/connection.php');

$requete_selection = mysql_query('SELECT * FROM articles') or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while ($donnees = mysql_fetch_array($requete_selection)){

echo '<a href="index.php?page=articles&id='.$donnees["id"].' ">';
echo $donnees['titre'] . '</a>' . ' ' . 'écrit par ';
echo $donnees['auteur'] . '<br />';
}
mysql_close();
}
?>

Merci encore.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
stephane_mc2004 Messages postés 755 Date d'inscription   Statut Membre Dernière intervention   96
 
Apareamment c'est mauvais avec l'include des url absolues... une minute je redige un nouveau code
0
stephane_mc2004 Messages postés 755 Date d'inscription   Statut Membre Dernière intervention   96
 
===================
INDEX.PHP
===================
<?php

if ($_GET['page'] == "news") {include("news.php");}
if ($_GET['page'] == "articles") 
{
     if(isset($_GET['id']))
     {

          include("/get_test/articles/main.php?id=$_GET['id']" );
     }
     else { include("/get_test/articles/main.php"); } 


}



if ($_GET['page'] == "forums") {include("forums.php");}
if ($_GET['page'] == "medias") {include("medias.php");}
?> 



=============
articles/main.php
=============*

<?php

include('connection.php');
if(isset($_GET['id']){ //si la variable id existe 
$id = $_GET['id']; 


$requete_selection = mysql_query('SELECT * FROM articles WHERE id="$id"') or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

$donnees = mysql_fetch_array($requete_selection);
echo $donnees['contenu'];
echo $donnees['auteur'] . '<br />';
mysql_close();
}
else {

include('connection.php');

$requete_selection = mysql_query('SELECT * FROM articles') or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
while ($donnees = mysql_fetch_array($requete_selection)){

echo '<a href="index.php?page=articles&id='.$donnees["id"].' ">';
echo $donnees['titre'] . '</a>' . ' ' . 'écrit par ';
echo $donnees['auteur'] . '<br />';
}
mysql_close();
}
?> 


desespere pas, jespere que sa marchera
0
killermano66 Messages postés 233 Date d'inscription   Statut Membre Dernière intervention   41
 
J'ai une parse error à la ligne 19 :

include("/get_test/articles/main.php?id=$_GET['id']" );

j'ai tenté de la remplaçer par

include("/get_test/articles/main.php?id='$_GET['id']'" );

mais l'erreur reste

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/www/8b02f9045067109a0cbb419d432d633f/web/get_test/index.php on line 19

Merci, je cherche de mon côtés aussi.
0
stephane_mc2004 Messages postés 755 Date d'inscription   Statut Membre Dernière intervention   96
 
ok ça commence a aller (enfin je crois bien ;) )
bon

essais
include('/get_test/articles/main.php?id=' . $_GET[\'id\'] );

si sa marche pas, essais sa aussi ::

$adresse = '/get_test/articles/main.php?id=' . $_GET['id'];
include($adresse);


ou encore

$adresse = '/get_test/articles/main.php?id=' . $_GET[\'id\']; 
include($adresse);


Pour ce dernier je crois pas trop, mais on sait jaimais
0
killermano66 Messages postés 233 Date d'inscription   Statut Membre Dernière intervention   41
 
Donc, effectivement il y a du mieux avec la deuxième méthode :
$adresse = '/get_test/articles/main.php?id=' . $_GET['id'];
include($adresse);

Les erreurs de la page index.php disparaissent en partie vu qu'il m'en reste 2 lorsque je clique sur articles :

Warning: include(/get_test/articles/main.php) [function.include]: failed to open stream: No such file or directory in /home/www/8b02f9045067109a0cbb419d432d633f/web/get_test/index.php on line 22

Warning: include() [function.include]: Failed opening '/get_test/articles/main.php' for inclusion (include_path='.:/opt/php/lib/php') in /home/www/8b02f9045067109a0cbb419d432d633f/web/get_test/index.php on line 22

Donc ligne 22 evidement toujours une url qui pose problème :

echo '<a href="index.php?page=articles&id='.$donnees["id"].' ">';

Merci beaucoup ;)
0
stephane_mc2004 Messages postés 755 Date d'inscription   Statut Membre Dernière intervention   96
 
essais dappliker la deuxieme methode avec ce probleme, je vais faire des courses. A ce soir et bon courage
0
killermano66 Messages postés 233 Date d'inscription   Statut Membre Dernière intervention   41
 
Alors, après quelques tests c'est le contenue du else qui affiche l'erreur donc ceci :

else {
$adresse2 = '/get_test/articles/main.php';
include($adresse2);

}

Si je l'enlève l'erreur n'apparait pas donc j'en viens à la conclusion que la condition du if ne se vérifie pas vu que c'est le else qui s'exécute. C'est quand même bizarre tout ça.
Merci de ton aide, a ce soir ;)
0
Psyk974 Messages postés 551 Date d'inscription   Statut Membre Dernière intervention   51
 
<?php
/*===================
INDEX.PHP
===================*/

//A placer dans ta page index.php

if (isset($_GET['page'])) {
	switch($_GET['page']) {
		case "news": include("news.php");break;
		case "articles": include("articles/main.php");break;
		case "forums": include("forums.php");break;
		case "medias": include("medias.php");break;
	}
else {
	include("news.php");
}
?>



<?php
/*=============
articles/main.php
=============*/

//A placer dans ton main.php du répertoire articles

include('connection.php'); //On se connecte à la base
if(isset($_GET['id']){ //si la variable id existe 
	$requete_selection = mysql_query('SELECT * 
					                  FROM articles 
							  WHERE id='.$_GET['id']) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

	$donnees = mysql_fetch_array($requete_selection);
	echo $donnees['contenu'];
	echo $donnees['auteur'] . '<br />';
	
}
else {
	$requete_selection = mysql_query('SELECT * 
							  FROM articles') or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
	while ($donnees = mysql_fetch_array($requete_selection)){

		echo '<a href="index.php?page=articles&id='.$donnees["id"].' ">';
		echo $donnees['titre'] . '</a>' . ' ' . 'écrit par ';
		echo $donnees['auteur'] . '<br />';
	}
}
mysql_close(); //On se déconnecte
?> 


Donc je resume. Lorsque tu arrives sur ton site par défaut lorsque tu vas cliquer sur le lien articles, tous les articles s'afficheront car ta variable "$_GET['id']" n'existe pas.
Dès lors que tu vas cliquer sur un article pour l'afficher, tu vas instancier la variable "$_GET['id']" qui cette fois-ci n'affichera plus la liste des articles mais uniquement l'article voulu.

J'ai bien compris ta démarche ?
0
killermano66 Messages postés 233 Date d'inscription   Statut Membre Dernière intervention   41
 
²Ben écoute, nikel ça marche trés bien mis à part deux petites erreur de syntaxes, tu as tout à fait saisi le problème et maintenant c'est parfait, ce que je voulais.

Merci beaucoup ;)
0
Psyk974 Messages postés 551 Date d'inscription   Statut Membre Dernière intervention   51
 
Les erreurs je sais pas car j'ai repris le code de stephane_mc2004.
J'ai juste modifié les endroits les plus importants pour faire fonctionner ton script.

Applique un petit résolu à cette discussion :)

Allez ciao
0
stephane_mc2004 Messages postés 755 Date d'inscription   Statut Membre Dernière intervention   96
 
Coucou a tous. Merci pour ton amélioration, comme quoi, il fallait 2 conducteurs pour la même voiture (lol )

A+
0
Utilisateur anonyme
 
ouffffffffffffffff qui ca met que

<div>
MON MENU :
<a href="index.php?page=news">News</a>
<a href="index.php?page=articles">Articles</a>
<a href="index.php?page=forums">Forums</a>
<a href="index.php?page=medias">Medias</a><br /><br /><br />
<div>

c'est fini mini menu
0
killermano66 Messages postés 233 Date d'inscription   Statut Membre Dernière intervention   41
 
En tout cas merci à tous les deux vous m'avez grandement aidé ;)
0