Php - conflit entre deux include

Fermé
forumeur - 28 sept. 2012 à 22:30
 forumeur - 29 sept. 2012 à 17:27
Bonjour,

Il semble y avoir un conflit entre deux includes dans ma page. Seul le premier apparait. Avez-vous une idée d'où cela peut provenir ? J'ai remplacé le premier par un require_once, et ça fait la meme chose.

<div id="contenu">
<?php  
$_GET['page'] = '1';

include ('../../comments/TEST.php'); 
?>
</div>


</div>


<div style="text-align:center;border: 1px solid red;">
<?php  
$_GET['action'] = 'commentaires';
$_GET['commentaires'] = '';
$_GET['id'] = 3;

include ('../../comments/divers.php'); 
?>
</div>
A voir également:

7 réponses

Utilisateur anonyme
28 sept. 2012 à 22:42
Bonsoir

Il n'y a a priori aucune raison qu'il y ait un conflit entre deux include de noms différents.
Par contre, comme on ne sait pas ce qui se passe dans tes include, il est très possible qu'il y ait une action dans le premier (exit ou affectation d'une variable) qui empêche le second de faire ce que tu voudrais. Ça ne peut venir que du code exécuté dans les include, pas de la fonction include elle même.
Tu fais déjà des chose très bizarres dans le bout de code que tu montres : tu donnes des valeurs à $_GET, ce n'est pas interdit, mais ce n'est pas l'utilisation normale. Si c'est simplement comme je le suppose pour passer des variables à tes fichiers inclus, tu peux prendre tous les noms de variables que tu veux, les variables 'ordinaires' du fichier principal sont tout à fait accessibles dans les fichiers inclus.
0
Si je fais :

include ('../../comments/TEST.php?page=1'); 


ça ne fonctionne pas, c'est la raison pour laquelle j'utilise get.
0
Sinon, je ne vois pas ce qui cloche dans les include. Je donne la page TEST.php en exemple :

<?php

$messagesParPage=1; //Nous allons afficher 5 messages par page.

//Une connexion SQL doit être ouverte avant cette ligne...
$retour_total=mysql_query('SELECT COUNT(DISTINCT news) AS total FROM comments'); //Nous récupérons le contenu de la requête dans $retour_total
$donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
$total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.

//Nous allons maintenant compter le nombre de pages.
$nombreDePages=ceil($total/$messagesParPage);

if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
{
     $pageActuelle=intval($_GET['page']);
     
     if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
     {
          $pageActuelle=$nombreDePages;
     }
}
else // Sinon
{
     $pageActuelle=1; // La page actuelle est la n°1    
}

$premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire

// La requête sql pour récupérer les messages de la page actuelle.
$retour_messages=mysql_query('SELECT AVG(note) AS moyenne FROM comments GROUP BY news ORDER BY id DESC LIMIT '.$premiereEntree.', '.$messagesParPage.'');

while($donnees_messages=mysql_fetch_assoc($retour_messages)) // On lit les entrées une à une grâce à une boucle
{
	
$note = $donnees_messages['moyenne'];
	if ($note== 1){ $affnote = "<img src=\"../../comments/note/1star.png\" border=\"0\">";}
	if ($note==2){ $affnote = "<img src=\"../../comments/note/2star.png\" border=\"0\">";}
	if ($note==3){ $affnote = "<img src=\"../../comments/note/3star.png\" border=\"0\">";}
	if ($note==4){ $affnote = "<img src=\"../../comments/note/4star.png\" border=\"0\">";}
	if ($note==5){ $affnote = "<img src=\"../../comments/note/5star.png\" border=\"0\">";}
	
     //Je vais afficher les messages dans des petits tableaux. C'est à vous d'adapter pour votre design...
     //De plus j'ajoute aussi un nl2br pour prendre en compte les sauts à la ligne dans le message.
     echo '<table width="400" border="0" align="center" cellpadding="0" cellspacing="0">
                <tr>
                     <td><strong>Ecrit par : '.stripslashes($affnote).'</strong></td>
                </tr>
                <tr>
                     <td>'.nl2br(stripslashes($donnees_messages['message'])).'</td>
                </tr>
            </table><br /><br />';
    //J'ai rajouté des sauts à la ligne pour espacer les messages.   
}

echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
{
     //On va faire notre condition
     if($i==$pageActuelle) //Si il s'agit de la page actuelle...
     {
         echo ' [ '.$i.' ] '; 
     }	
     else //Sinon...
     {
          echo ' <a href="TEST.php?page='.$i.'">'.$i.'</a> ';
     }
}
echo '</p>';
?>
0
Utilisateur anonyme
28 sept. 2012 à 23:16
include ('../../comments/TEST.php?page=1'); n'a aucune raison de marcher.
include est fait pour inclure des fichiers, et '../../comments/TEST.php?page=1' n'est pas un nom de fichier.
Tout ce que j'ai dit, c'est que si tu as besoin de passer des variables à ton fichier inclus, tu n'es pas obligé d'utiliser $_GET, n'importe quel autre nom convient. À condition d'utiliser le même dans le fichier inclus, bien sûr !
Il vaut mieux utiliser les variables prédéfinies $_GET, $_POST tel qu'il est prévu, c'est à dire seulement en lecture. Même si ça marche en les écrivant, ce n'est jamais indispensable.
0

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

Posez votre question
Existe-t-il une alternative à include ?
0
Utilisateur anonyme
29 sept. 2012 à 16:20
Oui, tout recopier... mais ça ne changera strictement rien à ton problème. Ce n'est pas l'instruction include qui est le problème, c'est ce que tu as mis dans les fichiers inclus.
Ajoute des 'echo' dans divers.php là où tu crois que ça devrait passer, tu finiras bien par voir quelle condition te manque pour afficher quelque chose.
0
En fait, le problème venait du fait que mon fichier de configuration était inclus deux fois, dans divers.php et TEST.php. Et bien sur je n'avais besoin de l'inclure qu'une seule fois.

Merci
0