J'ai un problème avec mon script php

Eléphant du PHP | 216 Messages

24 févr. 2006, 20:59

En fait je débute en php et je fais tout pour évoluer donc je suis des tuto sur les site comme phpfrance et tout et la je me suis mis a essayé de faire mon propre script en php
En faite je voudrais que lorsque j'arrive sur index.php il n'y est rien d'afficher a part deux lien id 1 et id 2
lorsque je clic sur le lien id 1 par exemple sa me donne http://.../index.php?id=1
et donc afficher sur la page: sa à marcher id 1
et même chose avec le lien id 2
parce que je voudrais utiliser ce principe pour afficher des info différentes mais en utilisant la même page!

mais voilà sa beug sa m'affiche directement
sa à marcher id 1 sa à marcher id 2
et lorsque je clic sur id 1 ou id 2 sa ne change rien mis a part l'adresse: ...?id=1

voila mon code:

Code : Tout sélectionner

<?php # # Ma page s'apelle index4.php # $default = 'Rien na marché'; if($id='1') { echo 'sa a marché id 1'; } else { // Code à exécuter si le test renvoie faux (false) echo '$default'; } if($id='2') { echo 'sa a marché id 2'; } else { // Code à exécuter si le test renvoie faux (false) echo '$default'; } ?> <p align="center"> <p align="center"><a href="?id=1">id 1</a> / <a href="?id=2">id 2</a></p> <p align="center"><a href="index4.php">Actualiser</a></p>
merci d'avance si quelqu'un peu m'aider :)

ViPHP
ViPHP | 2144 Messages

24 févr. 2006, 21:18

if($id='2') est incorrect une comparaison se fait avec ==

Il vaut mieux récuperer les variables issues de l'url par $_GET

Ce qui donne :

if ($_GET['id'] == 2)

Ps: Pense à mettre un titre explicite à tes postes, comme demandé dans les règles du forum.

Mammouth du PHP | 768 Messages

24 févr. 2006, 21:20

<?php 
if ( isset($_GET['id']) ){
   echo "Vous avez demandé le lien n° ".$_GET['id'];
}
echo "<a href='".$_SERVER['PHP_SELF']."?id=1'>Lien 1</a><br/>";
echo "<a href='".$_SERVER['PHP_SELF']."?id=2'>Lien 2</a><br/>";
?>
isset() permet de savoir si ID est défini
--> méthode GET (variable transmise par la barre d'adresse plus généralement)
--> méthode POST (variable transmise par un formulaire)

$_SERVER['PHP_SELF'] retourne le nom de la page qui est exécutée.

Si tu as une :?: on est là pour t'aider.
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Eléphant du PHP | 216 Messages

24 févr. 2006, 21:22

D'accord! merci beaucoup je me douté que j'avez fait une erreur mais comme je suis novice!
je ne l'ai pas repéré!
Enfin merci je test si ça marche! :)

Eléphant du PHP | 216 Messages

24 févr. 2006, 21:40

Voila merci sa marche parfaitement!
c'est exactement ce que je recherché à faire!
Et pour le message de iclo sa marche mais il y a des erreurs que je pense sont du a easyphp:

-Enfin voila ce que cela me donne pour iclo:
<?php

if ($_GET['id'] == 1) {    
        echo 'sa a marché id 1';		
}
if ($_GET['id'] == 2) {
    echo 'sa a marché id 2';           
}
?>
<p align="center">
<a href="?id=1">id 1</a> / <a href="?id=2">id 2</a></p>
-et voici les erreurs qui aparaissent sur la page avant que je clic sur l'un des liens:

Code : Tout sélectionner

Notice: Undefined index: id in c:\program files\easyphp1-8\www\tuto\index4.php on line 4 Notice: Undefined index: id in c:\program files\easyphp1-8\www\tuto\index4.php on line 7
merci a tous les deux pour votre aide précieuse! :)
ps: je voulais aussi demander pour le code de mario comment faire pour afficher une réponse différente pour chaque lien parce que la le code et condensé avec la phrase il récupère juste "id" et le rajoute a la fin de la phrase merci d'avance! :)

Mammouth du PHP | 768 Messages

24 févr. 2006, 21:54

je voulais aussi demander pour le code de mario comment faire pour afficher une réponse différente pour chaque lien parce que la le code et condensé avec la phrase il récupère juste "id" et le rajoute a la fin de la phrase merci d'avance! :)
Tu as deux possibilité
Les conditions IF .. ELSE ..
<?php 
if ( isset($_GET['id']) ){ 
   if ( $_GET['id'] == '1' ){
      echo "C'est 1 !";
   }
   elseif ( $_GET['id'] == '2' ){
      echo "C'est 2 !";
   }
   else
   {
      echo "C'est ni 1, ni 2 !";
   }
}
echo "<br/>";
echo "<a href='".$_SERVER['PHP_SELF']."?id=1'>Lien 1</a><br/>"; 
echo "<a href='".$_SERVER['PHP_SELF']."?id=2'>Lien 2</a><br/>"; 
?> 
Le SWITCH
<?php 
if ( isset($_GET['id']) ){ 
   switch ($_GET['id']){
   case '1':
   echo "C'est 1!";
   break;

   case '2':
   echo "C'est 2!";
   break;

   default:
   echo "C'est ni 1 ni 2 !";
   break;
   }
} 
echo "<br/>";
echo "<a href='".$_SERVER['PHP_SELF']."?id=1'>Lien 1</a><br/>"; 
echo "<a href='".$_SERVER['PHP_SELF']."?id=2'>Lien 2</a><br/>"; 
?> 
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Eléphant du PHP | 216 Messages

24 févr. 2006, 22:00

Ok! bien ben merci beaucoups pour votre aide l'équipe est géniale! :)

Eléphant du PHP | 216 Messages

25 févr. 2006, 21:36

Bonjour! Voila le script fonctionne correctement mais je n'arrive pas à faire afficher du texte lorsque l'url est brut sans le id derrière! Et aussi je voudrais faire un title"...." sur les liens mais je n'y arrive pas, donc je sollicite encore vos lumière!
Voice le code:
<? 
echo "<a href='".$_SERVER['PHP_SELF']."?id=1'>lien 1</a><br/>";
echo "<a href='".$_SERVER['PHP_SELF']."?id=2'>lien 2</a><br/>";
?>
<?php
                             if ( isset($_GET['id']) ){
			                    if ( $_GET['id'] == '' ){
			                    echo 'Bonjour veulliez cliquer sur liens 1 ou lien 2 pour afficher les pages!';
                             }
                             if ( $_GET['id'] == '1' ){							 
                             echo "C'est 1 !";
                             }
                             elseif ( $_GET['id'] == '2' ){
                             echo "C'est 2 !";
                             }
                             else
                             {
							 echo "Une erreur c'est produite veuillez conctacter l\'admin!\nMerci!";
							 }
							 }
                             echo "<br/>";
                            ?>
Voila si quelqu'un peu m'aider! ce serait sympa :)
Modifié en dernier par polo le 25 févr. 2006, 23:27, modifié 1 fois.

Mammouth du PHP | 19672 Messages

25 févr. 2006, 23:03

Regarde tes deux liens: le texte affiché est correct, mais les deux url sont strictement les mêmes et pointent avec l'id 1.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 216 Messages

25 févr. 2006, 23:49

Ok! merci (c'était sûrement une faute de frappe!)
mais en fait je voudrais que lorsque je ne clic sur aucun des lien et que j'arrive sur ma page ex:"http://monurl", il est écrit du texte ex:"pour afficher voir les pages cliquer sur lien 1 ou lien 2!"
Et lorsque je clic admettons sur lien 1 mon url change en ex:"http://monurl?id=1" et le texte qui avez écrit sur la page de l'url brute ex:"http://monurl" et remplacer par celui de l'echo correspondant au lien 1!
lorsque je fait le test avec easy php les deux liens fonctionnes ex:"http://monurl?id=1" et ex:"http://monurl?id=2" affiche bien leur propre texte aucune erreur n'y rien! mais en ce qui concerne l'url brut ex:"http://monurl" aucun texte ne s'affiche! a part mes deux liens!

Ensuite j'aimerais que sur mes lien (lien 1 et lien 2) il y ai un title comme en html admettons je passe ma souri sur le lien et op! une infobulle disant lien 1 par exemple!
Mais je n'y arrive pas! si je met les basile title="" dans le lien le script ne fonctionne plus il affiche une erreur!

voila j’espère avoir été assez précis!
Merci d'avance si on peut m'aider :) et encore un truc l'équipe de php france est géniale c'est franchement cool ce que vous faites pour aider les autres!

Eléphant du PHP | 216 Messages

26 févr. 2006, 12:16

J'ai fait un nouvelle essai aujourd’hui et je n'y arrive toujours pas si quelqu’un pourrez m'aider ce serait super sympa merci d'avance!
(même question que le topic juste au dessus!)
:lol:

Avatar du membre
ViPHP
ViPHP | 3008 Messages

26 févr. 2006, 12:30

Pour écrire un texte par défaut avant de cliquer sur un lien, il te suffit de définir la variable par défaut.

Ensuite le title n'a aucun rapport avec ton script, aussi c'est impossible que ce soit à cause de ça que ton script ne fonctionne pas. Tu as peut-être oublié des guillemets ou autres.

Code : Tout sélectionner

<a href="" title="">blabla</a>

Mammouth du PHP | 768 Messages

26 févr. 2006, 12:43

il me semble que c'est ce que tu veux... (les explications sont assez confuses).
<?php
if ( (!isset($_GET['id'])) || (empty($_GET['id'])) ){
  echo "Bonjour veuillez cliquer sur le lien 1 ou 2 pour afficher les pages!<br/>";
}
echo "<a href='".$_SERVER['PHP_SELF']."?id=1'>lien 1</a><br/>"; 
echo "<a href='".$_SERVER['PHP_SELF']."?id=2'>lien 2</a><br/>"; 

if (isset($_GET['id'])){
  
  switch($_GET['id']){
  case "1":
  echo "C'est 1!"; // ou si tu veux inclure une autre page :  include('page1.php');
  break;
  
  case "2":
  echo "C'est 2!"; // ou si tu veux inclure une autre page :  include('page2.php');
  break;
  }

}
?>
Tu pourras trouver des informations complémentaire sur:
SWITCH ici
ISSET ici
EMPTY ici
INCLUDE ici
M A R I O
Si une patte de lapin porte bonheur, qu'a-t-il bien pu arriver au lapin ?

Eléphant du PHP | 216 Messages

26 févr. 2006, 12:59

ok merci!
A tous les deux!
ce code marche parfaitement! Et en plus j'ai réusi a mettre le title sur mes lien!
<?php
if ( (!isset($_GET['id'])) || (empty($_GET['id'])) ){
  echo "Bonjour veuillez cliquer sur le lien 1 ou 2 pour afficher les pages!<br/>";
}
echo "<a href='".$_SERVER['PHP_SELF']."?id=1' title='lien 1'>lien 1</a><br/>";
echo "<a href='".$_SERVER['PHP_SELF']."?id=2' title='lien 2'>lien 2</a><br/>";

if (isset($_GET['id'])){
  
  switch($_GET['id']){
  case "1":
  echo "C'est 1!"; // ou si tu veux inclure une autre page :  include('page1.php');
  break;
  
  case "2":
  echo "C'est 2!"; // ou si tu veux inclure une autre page :  include('page2.php');
  break;
  }

}
?>
parce qu’avant lorsque que je faisais mes title je les faisais façon html title="" en fait c'était juste une histoire de guillemet :)
Encore merci à tout les deux !
ps: merci mario pour les adresse c'est sympa! :lol: