web-dev-qa-db-fra.com

PHP include () avec les attributs GET (inclure file.php? Q = 1)

Je veux include() un fichier php situé sur mon serveur, avec des attributs GET supplémentaires. Mais ça ne marchera pas:

include('search.php?q=1');

L'erreur qu'il donne:

PHP Warning:  include(): Failed opening './search.php?q=1' for inclusion

On dirait qu'il essaie d'ouvrir un fichier nommé littéralement 'search.php? Q = 1' au lieu d'ouvrir le fichier 'search.php' et de lui envoyer les attributs GET.

* Notez que cela fonctionne si je ne mets aucun attribut GET:

include('search.php');
21
anonymous

Vous ne voulez pas faire ceci: vous devez faire une requête http pour pouvoir passer les paramètres GET. Un script PHP que vous appelez de cette manière s'exécutera dans un processus PHP PHP.

Le moyen optimal consiste à inclure le fichier localement:

include('search.php');

et pour lui transmettre manuellement tous les paramètres, comme par exemple.

$q = "1";
include('search.php');  // expects `$q` parameter

ou, plus proprement, en mettant tout ce que vous avez dans search.php dans une fonction ou une classe que vous pouvez appeler avec un paramètre:

include('search.php');  // defines function my_search($q)  
my_search(1);       
28
Pekka

La solution facile consiste à définir votre valeur GET avant d'inclure le fichier.

$_GET['q'] = 1;
include('search.php);
19
Haza

Essayez de réécrire la variable $ _GET.

$oldget=$_GET;
$_GET=array('q'=>'1');
include('search.php');
$_GET=$oldget;
2
Dador

Ça fonctionne bien!! Je vous remercie

Définissez le var avant l'instruction "include"

$q=1;
include("search.php");
2
zero cool

En effet, écrire dans le tableau $_GET Est un peu sale et pas nécessaire. Vous pouvez simplement définir une variable dans votre page avant l'instruction include:

$q=1;
include("search.php");

de cette façon, la variable $q sera visible dans votre page incluse et peut (évidemment) être définie différemment dans n'importe quelle page incluse.

2
Matteo-SoftNet

peut-être une autre option, même si elle a ses propres limites, en utilisant AJAX-injection dans un div .. le moyen le plus simple de le faire est avec jQuery:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js" type="text/javascript"></script>
<script>$('#box').load('search.php?q=1');</script>

<div ID="box"></div>
1
David van Diepen

Si, comme moi, vous aviez besoin que cela soit en permanence dans le lien "include", cela peut être fait avec jQuery.

La solution que j'ai utilisée récemment était la suivante:

Tout d'abord, déclarez l'emplacement du div à remplir par le fichier inclus:

<div id="imgdiv"> </div>

Ajoutez ensuite un appel jQuery pour le remplir, mais insérez vos variables GET avec PHP:

<script>                
window.onload = function(){     
        $("#imgdiv").load('php/show-img.php?id=<?php echo $i; ?>&name=<?php echo $name; ?>');           
}
</script>

J'espère que cela suffira pour le faire fonctionner, en supposant qu'un navigateur activé Java est bien sûr utilisé).

1
Jamie M