OVH Cloud OVH Cloud

easyPhP

5 réponses
Avatar
Spot
Bonjour,
J'ai installé EasyPhp pour visualiser mon site. En ligne tout fonctionne
parfaitement mais en local quand j'ouvre le site via EasyPhp, des
messages d'erreurs sont affichés à la place des pages appelées.
QUi pourrait m'aiguiller car je suis plus que débutant en php.
Mes liens qui appellent des pages dans un div (frame) :

<p><a href="?page=2" title="diaporama"><img src="../pictfoto.jpg"
alt="diaporama" height="18" width="21" class="rectgris" border="0" ></a>
<span class="lienblocgauche">Show room</span></p>

Le div ou s'affiche la page

if ($page=='1') {include('diapo_villette.html');}
elseif ($page=='2') {include('diapo_efi.html');}
else {include('txt_realisation.html');}

le message d'erreur

Notice: Undefined variable: page in s:\mes documents\sites en
construction\olivier roux\site\realisation\realisation.php on line 60

Comment ce fait-il que cela fonctionne en ligne et pas en local ? Si qq
peut me dépatouiller...

Merci et à bientôt,
:SpOt:

5 réponses

Avatar
Spot
Thibaut Allender a écrit :
On 16/05/2006 20:17, bruno at modulix wrote :
Bref, la solution est d'utiliser les supervariables $_GET, $_POST et/ou
$_REQUEST pour accéder aux variables passées par la requête. Dans ton
cas, remplacer $page par $_GET['page'].



c'est aussi parce que l'error level est reglé pour afficher les "notice"

si on remplace simplement $page par $_GET['page'], on risque d'encore
avoir un notice si la variable n'existe pas et qu'on réalise quand même
le test dessus.

il faut donc faire :

[...]
if (isset($_GET['page']) && $_GET['page']=='1')
{include('diapo_villette.html');}
[...]



Il faut ajouter else sinon la page reste affichée sous celles appelées
(là il y a 3 pages : une affichée à l'ouverture, et deux appelées par
les liens du menu.

if (isset($_GET['page']) && $_GET['page']=='1')
ifelse (isset($_GET['page']) && $_GET['page']=='2')
else {include('diapo_villette.html');}




ceci dit, fr.comp.lang.php me parait plus adapté



D'accord, mais autant que cela serve à qqs uns sur la liste, d'autant
qu'une question a été posée plus bas et cela y répond...
Avatar
Peter Pan
Spot a écrit :
if (isset($_GET['page']) && $_GET['page']=='1')
ifelse (isset($_GET['page']) && $_GET['page']=='2')
else {include('diapo_villette.html');}



Ecrit ainsi, ça ne devrait pas beaucoup aider un newby.

if (isset($_GET['page']) && $_GET['page']=='1') do_that;
elseif (isset($_GET['page']) && $_GET['page']=='2') do_this;
else do_other;

Mais si tu veux traiter une variable passée en URL *ou* en formulaire ?
Un truc confortable, dans le cas de nombreuses conditions :

<?php
$page = false;
if(isset($_GET['page'])) $page = $_GET['page'];
elseif(isset($_POST['page'])) $page = $_POST['page'];
switch($page) {
case'1'; do_that; break;
case'2'; do_this; break;
[...]
default; do_other; break;
}
?>

--
Pierre
http://www.1966.fr/
Avatar
Spot
Peter Pan a écrit :
Spot a écrit :
if (isset($_GET['page']) && $_GET['page']=='1')
ifelse (isset($_GET['page']) && $_GET['page']=='2')
else {include('diapo_villette.html');}



Ecrit ainsi, ça ne devrait pas beaucoup aider un newby.

if (isset($_GET['page']) && $_GET['page']=='1') do_that;
elseif (isset($_GET['page']) && $_GET['page']=='2') do_this;
else do_other;

Mais si tu veux traiter une variable passée en URL *ou* en formulaire ?
Un truc confortable, dans le cas de nombreuses conditions :

<?php
$page = false;
if(isset($_GET['page'])) $page = $_GET['page'];
elseif(isset($_POST['page'])) $page = $_POST['page'];
switch($page) {
case'1'; do_that; break;
case'2'; do_this; break;
[...]
default; do_other; break;
}
?>




Là pour moi c'est déjà un poil plus compliqué.
J'ai rajouté le else car sans cela ne fonctionnait pas bien : la page
par défaut (diapo_villette.html) restait sous celles appelées par les
liens.
Donc si cela intéresse un plus que débutant comme moi de faire un menu
avec des pseudos frame en css, cela lui évitera de se prendre le choux
pendant une heure pour faitre marcher le truc en local avec EasyPhP.
Mais je vais tester ce que tu donnes pour y comprendre qq chose et
apprendre par la même occasion.
Merci et à bientôt,
:SpOt:
Avatar
Peter Pan
Spot a écrit Le 18/05/2006 17:43 :
Là pour moi c'est déjà un poil plus compliqué.



Admettons que tu veuilles garder la trace de $page dans un formulaire,
ce qui est on ne peut plus courant :

=> index.php
<a href='contact.php?page=1'>Contact</a>

=> contact.php
<?php
# implémentation de $page (éviter E_NOTICE* selon config php.ini)
$page = 0;
# si $page vient en URL (query string) alors...
if(isset($_GET['page'])) $page = $_GET['page'];
# sinon et si $page vient du formulaire alors...
elseif(isset($_POST['page'])) $page = $_POST['page'];
# traitement de $page selon valeur
switch($page) {
case'1'; $montruc=1; break;
case'2'; $montruc=2; break;
[...]
# quelle que soit la condition on fait un aut' truc
default; $montruc=-1; break;
}
?>
<form action='<?echo $_SERVER['PHP_SELF']?>' method='post'>
[...]
<input type='hidden' name='page' value='<?echo $page?>'>
<input type='submit' value='GO'>
</form>

(*) perso je vire E_NOTICE et j'écris :
if(!$page = $_GET['page']) $page = $_POST['page'];
mais 'faut pas l'dire ;-)

--
Pierre
http://www.1966.fr/
Avatar
bruno at modulix
Peter Pan wrote:
(snip)

Mais si tu veux traiter une variable passée en URL *ou* en formulaire ?
Un truc confortable, dans le cas de nombreuses conditions :

<?php
$page = false;
if(isset($_GET['page'])) $page = $_GET['page'];
elseif(isset($_POST['page'])) $page = $_POST['page'];



Confortable ? Lol !

$page = isset($_REQUEST['page'] && $_REQUEST['page'];


--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in ''.split('@')])"