Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/09/2006, 09h33   #1
Membre régulier
 
Inscription : novembre 2005
Messages : 371
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 371
Points : 80
Points : 80
Par défaut Afficher code PHP selon choix

Bonjour le forum, jsute une petite question, s'il vous plait :

Je cherche a afficher dans un seul div overflow, différents code PHP, chacun sera choisi selon un lien externe au div.

Exemple :

Lien 1 /// Lien 2

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<DIV style='overflow: auto; height: 250; width: 179; scrollbar-face-color: #EAEDF4; scrollbar-highlight-color: #EAEDF4; scrollbar-shadow-color: #EAEDF4; scrollbar-3dlight-color: #EAEDF4; scrollbar-arrow-color: #5F107C; scrollbar-track-color: #EAEDF4; scrollbar-darkshadow-color: #EAEDF4' ''>
<p style="margin-top: 0; margin-bottom: 0">
<font color="#6801F5" face="Verdana" size="1">
 
///// le lien 1 correspondrait a ça :
 
<? 
$res = mysql_query("SELECT `NOM` FROM joeurs WHERE SEX=HOMME order by nom") or die(mysql_error());
while (
$ligne = mysql_fetch_assoc($res)) { 
   switch ($ligne['RESULTAT']) { 
      case '1': $nom_image = "Niveau3";break; 
      case '2': $nom_image = "Niveau2";break; 
      case '3': $nom_image = "Niveau1";break; 
   } 
  echo '<img src="/images/'.$nom_image.'.gif" alt="'.$nom_image.'" title="'.$nom_image.'" /><a href="#" onClick="window.open(\'http://www.mon-domaine.com/fiche.php?NOM='.$ligne['NOM'].'\',\'popup1\',\'toolbar=no,status=no,width=780,height=615,scrollbars=no,location=no,resize=no,menubar=no\')"></A><br/>';}
?>
 
 
 
///// le lien 2 correspondrait a ça :
 
<? 
$res = mysql_query("SELECT `NOM` FROM joeurs WHERE SEX=FEMME order by nom") or die(mysql_error());
while (
$ligne = mysql_fetch_assoc($res)) { 
   switch ($ligne['RESULTAT']) { 
      case '1': $nom_image = "Niveau3";break; 
      case '2': $nom_image = "Niveau2";break; 
      case '3': $nom_image = "Niveau1";break; 
   } 
  echo '<img src="/images/'.$nom_image.'.gif" alt="'.$nom_image.'" title="'.$nom_image.'" /><a href="#" onClick="window.open(\'http://www.mon-domaine.com/fiche.php?NOM='.$ligne['NOM'].'\',\'popup1\',\'toolbar=no,status=no,width=780,height=615,scrollbars=no,location=no,resize=no,menubar=no\')"></A><br/>';}
?>
 
</div>
Mais je ne veux pas le mettre comme ça je cherche a faire apparaitre l'un ou l'autre en fonction du choix du lien ET NON faire apparaittre les deux dans un autre div overflow avec signet.

Avez vous une idée s'il vous plait?
kaolivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2006, 09h48   #2
Membre émérite
 
Avatar de guitou12
 
Guillaume
Inscription : juillet 2006
Messages : 813
Détails du profil
Informations personnelles :
Nom : Guillaume
Âge : 29

Informations forums :
Inscription : juillet 2006
Messages : 813
Points : 905
Points : 905
Envoyer un message via MSN à guitou12
En effet il ya moyen de faire ça plus "propre"

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?
$req = "SELECT `NOM` FROM joeurs WHERE SEX=";
switch($tavar) // $tavar issue du lien par exemple index.php?req=h    $tavar=$_GET['req']
{
case 'homme': $req .= " HOMME"; break;
case 'femme': $req .= " FEMME"; break;
default:break;
}
 
$req /= " order by nom";
 
 
$res = mysql_query($req) or die(mysql_error());
while (
$ligne = mysql_fetch_assoc($res)) {
switch ($ligne['RESULTAT']) {
case '1': $nom_image = "Niveau3";break;
case '2': $nom_image = "Niveau2";break;
case '3': $nom_image = "Niveau1";break;
}
echo '<img src="/images/'.$nom_image.'.gif" alt="'.$nom_image.'" title="'.$nom_image.'" /><a href="#" onClick="window.open(\'http://www.mon-domaine.com/fiche.php?NOM='.$ligne['NOM'].'\',\'popup1\',\'toolbar=no,status=no,width=780,height=615,scrollbars=no,location=no,resize=no,menubar=no\')"></A><br/>';}
?>
Je pense que ça devrait faire l'affaire
__________________
Le . est la base de toute bonne concaténation, marre de voir des
echo "Mavar1 = $toto et Mavar2 = $titi";
ou pire echo 'Mavar1 = ',$toto,' et Mavar2 = ',$titi;
pratiquez plutôt le echo 'Mavar1 = '.$toto.' et Mavar2 = '.$titi;
guitou12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2006, 09h50   #3
Rédacteur
 
Avatar de Yoshio
 
Homme
Inscription : septembre 2005
Messages : 1 741
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : Belgique

Informations forums :
Inscription : septembre 2005
Messages : 1 741
Points : 1 497
Points : 1 497
La balise code (#) serait peut être plus appropriée que citation ...

Utilise un if en récupérant la variable passé dans l'url (on a pas beaucoup d'info pour te repondre ...) ou tu teste avec un regex si le lien est le 1 ou le 2 et tu fait en conséquence

EDIT : grilled
Yoshio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2006, 09h52   #4
Membre régulier
 
Inscription : novembre 2005
Messages : 371
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 371
Points : 80
Points : 80
Merci pour cette réponse mais j'ai un doute sur ma précédente explication.

On parle bien de 2 liens (ou plus) qui sont certes externe au DIV mais qui sont quand meme sur la meme page.

Je dis ça car en regardant vite ton code, j'ai l'impression qui tu parles d'un accés via l'URL de la page, et dans ce cas, je suis désolés de mon explication pas précise, mais je ne voulia spas passer par l'url de la page.

Maintenant avant de t'embeter, je vais quand meme essayer ton code.

a tout de suite
kaolivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2006, 10h03   #5
Membre émérite
 
Avatar de guitou12
 
Guillaume
Inscription : juillet 2006
Messages : 813
Détails du profil
Informations personnelles :
Nom : Guillaume
Âge : 29

Informations forums :
Inscription : juillet 2006
Messages : 813
Points : 905
Points : 905
Envoyer un message via MSN à guitou12
J'ai pas pris en compte ton histoire de div mais juste le traitement de ta requête qui est juste semblable à un mot pres.
__________________
Le . est la base de toute bonne concaténation, marre de voir des
echo "Mavar1 = $toto et Mavar2 = $titi";
ou pire echo 'Mavar1 = ',$toto,' et Mavar2 = ',$titi;
pratiquez plutôt le echo 'Mavar1 = '.$toto.' et Mavar2 = '.$titi;
guitou12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2006, 10h18   #6
Membre régulier
 
Inscription : novembre 2005
Messages : 371
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 371
Points : 80
Points : 80
ça ne marche pas....

J'ai bien compris ton code, mais Je reprends mon explication en rajoutant une info :

Imaginons 3 choix que je retrouve dans ma BDD
choix 1 -> Tous (Case SEX est vide)
choix 2 -> Homme (Case SEX affiche H)
choix 3 -> Femme (Case SEX affiche F)

Sur la page, s'affiche par défaut le choix 1 avec la liste de tous les joueurs quelques soient leurs sexes:

Ensuite sur cette page, on donne le choix d'afficher soit la liste complete (Tous) soit la liste des H soit la Liste des F.

Voici l'erreur :
Warning: Division by zero in /home/clients/www/mon-domaine.com/www/fiche.php on line 235
Query was empty

Alors qu'ils existent bien des fiches deja dans la BDD avec la mention H ou F ou vide ????

Merci de votre patience
kaolivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2006, 10h33   #7
Membre émérite
 
Avatar de guitou12
 
Guillaume
Inscription : juillet 2006
Messages : 813
Détails du profil
Informations personnelles :
Nom : Guillaume
Âge : 29

Informations forums :
Inscription : juillet 2006
Messages : 813
Points : 905
Points : 905
Envoyer un message via MSN à guitou12
Dans ce cas si il ya un 3eme choix il faut modifier le code

Code :
1
2
3
4
5
6
7
$req = "SELECT `NOM` FROM joeurs ";
switch($tavar) // $tavar issue du lien par exemple index.php?req=h    $tavar=$_GET['req']
{
case 'homme': $req .= " WHERE SEX=HOMME"; break;
case 'femme': $req .= " WHERE SEX=FEMME"; break;
default:break;
}
Ton erreur est due au fait que la requête n'est pas prise en compte, il faut que tu regardes comment rentrer dans le switch($tavar), si c'est une case cochée par formulaire alors ça sera un truc du style $tavar = $_POST['sexe']
__________________
Le . est la base de toute bonne concaténation, marre de voir des
echo "Mavar1 = $toto et Mavar2 = $titi";
ou pire echo 'Mavar1 = ',$toto,' et Mavar2 = ',$titi;
pratiquez plutôt le echo 'Mavar1 = '.$toto.' et Mavar2 = '.$titi;
guitou12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2006, 10h47   #8
Membre régulier
 
Inscription : novembre 2005
Messages : 371
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 371
Points : 80
Points : 80
Citation:
Envoyé par guitou12
Dans ce cas si il ya un 3eme choix il faut modifier le code

Code :
1
2
3
4
5
6
7
$req = "SELECT `NOM` FROM joeurs ";
switch($tavar) // $tavar issue du lien par exemple index.php?req=h    $tavar=$_GET['req']
{
case 'homme': $req .= " WHERE SEX=HOMME"; break;
case 'femme': $req .= " WHERE SEX=FEMME"; break;
default:break;
}
Ton erreur est due au fait que la requête n'est pas prise en compte, il faut que tu regardes comment rentrer dans le switch($tavar), si c'est une case cochée par formulaire alors ça sera un truc du style $tavar = $_POST['sexe']
Non ça ne fonctionne pas, d'autant que tu ne peux pas déclarer $tavar=$_GET['req'] dans ton switch mais il faut le faire avant.

Voici le code résumé que j'ai tapé

Citation:
<a href="fiche.php>Tous</a>
<a href="fiche.php?req=H">Homme</a>
<a href="fiche.php?req=F">Femme</a>
<?
$tavar=$_GET['req']
$req = "SELECT `NOM` FROM joueurs ";
switch($tavar)
{
case '': $req .= ""; break;
case 'H': $req .= " WHERE SEX=HOMME"; break;
case 'F': $req .= " WHERE SEX=FEMME"; break;
default:break;
}
$res = mysql_query($req) or die(mysql_error());
while (
$ligne = mysql_fetch_assoc($res)) {
switch ($ligne['RESULTAT']) {
case '1': $nom_image = "niveau1";break;
case '2': $nom_image = "niveau2";break;
}
echo '<img src="/images/'.$nom_image.'.gif" alt="'.$nom_image.'" title="'.$nom_image.'" />'.$ligne['NOM'].'<br/>';}
?>
Cela ne fonctionne pas.
Désolés, et merci sincérement pour toute l'aide
kaolivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2006, 10h53   #9
Membre émérite
 
Avatar de guitou12
 
Guillaume
Inscription : juillet 2006
Messages : 813
Détails du profil
Informations personnelles :
Nom : Guillaume
Âge : 29

Informations forums :
Inscription : juillet 2006
Messages : 813
Points : 905
Points : 905
Envoyer un message via MSN à guitou12
Citation:
Non ça ne fonctionne pas, d'autant que tu ne peux pas déclarer $tavar=$_GET['req'] dans ton switch mais il faut le faire avant.
La déclaration devait être faite avant là c'était dans le commentaire à titre d'exemple.

Ensuite si tu affiches ta requête et que tu la testes dans phpmyadmin ça te ramène quelque chose, parceque à y réfléchir le WHERE SEX=HOMME ou FEMME à mon avis il manque des quotes autour de HOMME ou FEMME

Il faut bien évidemment aussi que tu aies une variable dans ton url appelée req sinon le $_GET['req'] ne servira à rien mais tu peux le transposer avec un $_POST si c'est une variable de formulaire qui t"intéresse plutôt
__________________
Le . est la base de toute bonne concaténation, marre de voir des
echo "Mavar1 = $toto et Mavar2 = $titi";
ou pire echo 'Mavar1 = ',$toto,' et Mavar2 = ',$titi;
pratiquez plutôt le echo 'Mavar1 = '.$toto.' et Mavar2 = '.$titi;
guitou12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2006, 11h32   #10
Membre régulier
 
Inscription : novembre 2005
Messages : 371
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 371
Points : 80
Points : 80
Je comprends pas.

Le select complet fonctionne trés bien sous phpmyadmin
j'ai fait un echo "'$tavar'"; j'ai bien le H ou le F qui s'affiche donc l'url contient bien la requete et la récupére bien.
et pourtant il continue a me dire qui il y a une erreur

'H'
You have an error in your SQL syntax near ' WHERE SEX='HOMME'' at line 1

kaolivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2006, 11h40   #11
Membre émérite
 
Avatar de guitou12
 
Guillaume
Inscription : juillet 2006
Messages : 813
Détails du profil
Informations personnelles :
Nom : Guillaume
Âge : 29

Informations forums :
Inscription : juillet 2006
Messages : 813
Points : 905
Points : 905
Envoyer un message via MSN à guitou12
Pour y voir un peu plus clair remplace
Code :
$res = mysql_query($req) or die(mysql_error());
par

Code :
$res = mysql_query($req) or die("Rien de va plus !!<br />".$req."<br />".mysql_error());
__________________
Le . est la base de toute bonne concaténation, marre de voir des
echo "Mavar1 = $toto et Mavar2 = $titi";
ou pire echo 'Mavar1 = ',$toto,' et Mavar2 = ',$titi;
pratiquez plutôt le echo 'Mavar1 = '.$toto.' et Mavar2 = '.$titi;
guitou12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2006, 11h48   #12
Membre régulier
 
Inscription : novembre 2005
Messages : 371
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 371
Points : 80
Points : 80
J'ai refais un code plus simple :

Ex : requete : fiche.php?req=H

Citation:
<?
$tavar=@$_GET['req'];
echo "'$tavar'";
$req = "SELECT `NOM` FROM joueurs ";
switch($tavar)
{
case 'H': $req = " WHERE SEX='H'" or die(mysql_error());break;
case 'F': $req = " WHERE SEX='F'" or die(mysql_error());break;
}
$result = mysql_query($req) or die("Rien de va plus !!<br />".$req."<br />".mysql_error());
while($ligne = mysql_fetch_array($result)) {
$id = $ligne["NOM"];
echo "'.$id.'";
}
?>

Réponse :

'H'
Rien de va plus !!
and SEX='H'
You have an error in your SQL syntax near 'and SEX='H'' at line 1

Si j'enleve le switch, le select complet SELECT `NOM` FROM joueurs WHERE SEX='H' fonctionne trés bien..............


BIZARRE
kaolivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2006, 11h57   #13
Membre émérite
 
Avatar de guitou12
 
Guillaume
Inscription : juillet 2006
Messages : 813
Détails du profil
Informations personnelles :
Nom : Guillaume
Âge : 29

Informations forums :
Inscription : juillet 2006
Messages : 813
Points : 905
Points : 905
Envoyer un message via MSN à guitou12
Wouh didiou didiou à recopier les codes à moitié voilà ce qui arrive

Cf ma signature

Code :
1
2
case 'H': $req .= " WHERE SEX='H'";break;
case 'F': $req .= " WHERE SEX='F'";break;
Sinon pas besoin du or die après ton affectation dans le switch
__________________
Le . est la base de toute bonne concaténation, marre de voir des
echo "Mavar1 = $toto et Mavar2 = $titi";
ou pire echo 'Mavar1 = ',$toto,' et Mavar2 = ',$titi;
pratiquez plutôt le echo 'Mavar1 = '.$toto.' et Mavar2 = '.$titi;
guitou12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2006, 12h09   #14
Membre régulier
 
Inscription : novembre 2005
Messages : 371
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 371
Points : 80
Points : 80
Bordel il a fallut que ça tombe sur moi .

Le pire c'est que je l'ai lu avant de répondre la premiere fois, que je l'ai noté dans mon tuto que je me suis fait.

MMMAAAIIISSS pourquoi faut il toujours que je serve d'exemple.............
Ok c'est bon, je vais me poser la question

Bon je t'invite a donner l'URL de ce post a chaque fois que quelqu'un oubliera ce foutu point pour qu'il voit combien de temps inutiliement on peut faire perdre au sympatiques personnes comme toi qui consacrent de leur temps pour aider les indisciplinés et étourdis comme MOI.

Je te présente toutes mes excuses, et te remercie sincérement car tout fonctionne trés bien.

Trés bonne journée a toi, et encore désolés
kaolivier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2006, 13h34   #15
Membre émérite
 
Avatar de guitou12
 
Guillaume
Inscription : juillet 2006
Messages : 813
Détails du profil
Informations personnelles :
Nom : Guillaume
Âge : 29

Informations forums :
Inscription : juillet 2006
Messages : 813
Points : 905
Points : 905
Envoyer un message via MSN à guitou12
Y a pas de mal la problématique du départ n'était pas due à l'absence de point donc a bien résolu ton problème.

@+
__________________
Le . est la base de toute bonne concaténation, marre de voir des
echo "Mavar1 = $toto et Mavar2 = $titi";
ou pire echo 'Mavar1 = ',$toto,' et Mavar2 = ',$titi;
pratiquez plutôt le echo 'Mavar1 = '.$toto.' et Mavar2 = '.$titi;
guitou12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h59.


 
 
 
 
Partenaires

Hébergement Web