Php: probleme avec variable
Fermé
Utilisateur anonyme
-
11 mars 2009 à 15:40
Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016 - 12 mars 2009 à 12:04
Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016 - 12 mars 2009 à 12:04
13 réponses
Mimiste
Messages postés
1149
Date d'inscription
samedi 17 mai 2008
Statut
Membre
Dernière intervention
6 mars 2016
206
11 mars 2009 à 15:44
11 mars 2009 à 15:44
Salut
t'a essayé avec la concatenation ?
"Location:https://cse.google.com/cse?cx=002706385973069719928%3Aibocr-c7xz8&ie=UTF-8&q=".$tag."&sa=Rechercher"
t'a essayé avec la concatenation ?
"Location:https://cse.google.com/cse?cx=002706385973069719928%3Aibocr-c7xz8&ie=UTF-8&q=".$tag."&sa=Rechercher"
Mimiste
Messages postés
1149
Date d'inscription
samedi 17 mai 2008
Statut
Membre
Dernière intervention
6 mars 2016
206
11 mars 2009 à 15:49
11 mars 2009 à 15:49
bien c'est a dire comme je t'ai montré, comme ça :
"Location:https://cse.google.com/cse?cx=002706385973069719928%3Aibocr-c7xz8&ie=UTF-8&q=".$tag."&sa=Rechercher"
"Location:https://cse.google.com/cse?cx=002706385973069719928%3Aibocr-c7xz8&ie=UTF-8&q=".$tag."&sa=Rechercher"
Bonjour
Il est bizarre ton test, c'est si la variable est vide que tu la prends en compte ! Je crois que le contraire est plus logique.
Tu aurais dû écrire :
if (! empty($_POST['search-field'])) {
$tag = $_POST[search-field];
header( "Location:https://cse.google.com/cse?cx=002706385973069719928%3Aibocr-c7xz8&ie=UTF-8&q=$tag&sa=Rechercher" ) ;
}
Mais il faudrait aussi prévoir quoi faire si la variable n'est pas définie.
Sinon, la concaténation n'a pas à être essayée, tu n'en as aucun besoin ici. : "Location:https://cse.google.com/cse?cx=002706385973069719928%3Aibocr-c7xz8&ie=UTF-8&q=".$tag."&sa=Rechercher" est absolument équivalent à ce que tu as écrit, c'est juste un peu plus difficile à lire.
Il est bizarre ton test, c'est si la variable est vide que tu la prends en compte ! Je crois que le contraire est plus logique.
Tu aurais dû écrire :
if (! empty($_POST['search-field'])) {
$tag = $_POST[search-field];
header( "Location:https://cse.google.com/cse?cx=002706385973069719928%3Aibocr-c7xz8&ie=UTF-8&q=$tag&sa=Rechercher" ) ;
}
Mais il faudrait aussi prévoir quoi faire si la variable n'est pas définie.
Sinon, la concaténation n'a pas à être essayée, tu n'en as aucun besoin ici. : "Location:https://cse.google.com/cse?cx=002706385973069719928%3Aibocr-c7xz8&ie=UTF-8&q=".$tag."&sa=Rechercher" est absolument équivalent à ce que tu as écrit, c'est juste un peu plus difficile à lire.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
11 mars 2009 à 15:57
11 mars 2009 à 15:57
voila c'est bon sa marche voila mon code :
<?php header( "Location:https://cse.google.com/cse?cx=002706385973069719928%3Aibocr-c7xz8&ie=UTF-8&q=".$_POST[searchword]."&sa=Rechercher" ) ; ?>
Utilisateur anonyme
11 mars 2009 à 15:59
11 mars 2009 à 15:59
j'ai fait une petite modification car search-field n'existais pas
Mimiste
Messages postés
1149
Date d'inscription
samedi 17 mai 2008
Statut
Membre
Dernière intervention
6 mars 2016
206
11 mars 2009 à 16:03
11 mars 2009 à 16:03
Tu fait bien de laisser la concatenation, c'est peut etre pas aussi naturel à lire mais c'est bien plus propre
header( "Location:https://cse.google.com/cse?cx=002706385973069719928%3Aibocr-c7xz8&ie=UTF-8&q=".$_POST[searchword]."&sa=Rechercher" ) ;
Non, ça n'est pas propre. Si on ne cache pas les "Notice", on a droit à un : "Notice: Use of undefined constant searchword - assumed 'searchword' in ..."
Il faut des ' dans $_POST['searchword']
Ça marche parce que l'interpréteur PHP corrige de lui-même, mais c'est quand même une erreur de syntaxe.
Alors que l'utilisation ou non de la concaténation ne change **rien du tout** à la propreté de l'écriture puisqu'il y a exacte équivalence. Et à mon humble avis, entre deux écritures exactement équivalentes, la plus lisible est préférable.
Et ma remarque sur le fait qu'il faut prévoir quelque chose si $_POST['searchword'] est non défini vide reste valable. (mais c'est peut-être prévu ailleurs dans le script)
Non, ça n'est pas propre. Si on ne cache pas les "Notice", on a droit à un : "Notice: Use of undefined constant searchword - assumed 'searchword' in ..."
Il faut des ' dans $_POST['searchword']
Ça marche parce que l'interpréteur PHP corrige de lui-même, mais c'est quand même une erreur de syntaxe.
Alors que l'utilisation ou non de la concaténation ne change **rien du tout** à la propreté de l'écriture puisqu'il y a exacte équivalence. Et à mon humble avis, entre deux écritures exactement équivalentes, la plus lisible est préférable.
Et ma remarque sur le fait qu'il faut prévoir quelque chose si $_POST['searchword'] est non défini vide reste valable. (mais c'est peut-être prévu ailleurs dans le script)
Mimiste
Messages postés
1149
Date d'inscription
samedi 17 mai 2008
Statut
Membre
Dernière intervention
6 mars 2016
206
11 mars 2009 à 16:38
11 mars 2009 à 16:38
Certe mais c'est quelque chose de valable uniquement en PHP, lorsqu'on pratique plusieurs langages on ce rend compte que l'aspect "propre" que je décrit est important.
1 - Je suis bien d'accord que l'écriture directe des variables dans les chaînes est propre au PHP et ne s'applique pas aux autres langages. Mais c'est une totale absurdité de ne pas utiliser une possibilité d'un langage sous prétexte qu'elle est absente des autres. On ne fait que ça, en programmation : chaque langage a ses particularités.
Je me permets de penser que la plupart des programmeurs évitent cette forme parce qu'ils ne l'ont tout simplement pas comprise. Je justifie ce que j'avance. Dès que sur ce forum il y a une question autour d'une chaîne PHP avec une variable, il y a toujours des âmes (pleines de bonne volonté, j'en suis sûr) qui proposent de réécrire la même chaîne sous la forme avec concaténation, preuve qu'ils ne sont pas conscients qu'ils n'ont rien changé.
2 - l'aspect "propre" que je décrit. Tu ne décris pas d'aspect propre, tu affirmes que l'écriture avec concaténation est plus propre, sans rien justifier. Au risque de me répéter, je ne comprends pas en quoi une forme équivalente à une autre peut être considérée comme "bien plus propre". Où est la propreté ?
Je me permets de penser que la plupart des programmeurs évitent cette forme parce qu'ils ne l'ont tout simplement pas comprise. Je justifie ce que j'avance. Dès que sur ce forum il y a une question autour d'une chaîne PHP avec une variable, il y a toujours des âmes (pleines de bonne volonté, j'en suis sûr) qui proposent de réécrire la même chaîne sous la forme avec concaténation, preuve qu'ils ne sont pas conscients qu'ils n'ont rien changé.
2 - l'aspect "propre" que je décrit. Tu ne décris pas d'aspect propre, tu affirmes que l'écriture avec concaténation est plus propre, sans rien justifier. Au risque de me répéter, je ne comprends pas en quoi une forme équivalente à une autre peut être considérée comme "bien plus propre". Où est la propreté ?
Mimiste
Messages postés
1149
Date d'inscription
samedi 17 mai 2008
Statut
Membre
Dernière intervention
6 mars 2016
206
11 mars 2009 à 19:23
11 mars 2009 à 19:23
La propreté vient tout simplement du fait qu'il est plus simple d'un seul coup d'oeil de voir qu'une variable est présente dans cette chaîne.
Comme justification en voici une, créer un bug à l'affichage pour certains editeurs :
Eclipse : http://a-w-t.fr/screen-capture.jpg
Le seul moyen étant d'utiliser les accolades mais c'est pas le genre de choses que les developpeurs PHP ont l'habitude de faire.
Je ne m'attend pas à faire te faire changer d'avis évidement, tous le monde voyant midi à sa porte comme on dis et ce genre de débats sur la manière de coder n'a pas fini d'exister.
Comme justification en voici une, créer un bug à l'affichage pour certains editeurs :
Eclipse : http://a-w-t.fr/screen-capture.jpg
Le seul moyen étant d'utiliser les accolades mais c'est pas le genre de choses que les developpeurs PHP ont l'habitude de faire.
Je ne m'attend pas à faire te faire changer d'avis évidement, tous le monde voyant midi à sa porte comme on dis et ce genre de débats sur la manière de coder n'a pas fini d'exister.
Comme tu dis, on peur débattre longtemps de la manière de coder...
La propreté vient tout simplement du fait qu'il est plus simple d'un seul coup d'oeil de voir qu'une variable est présente dans cette chaîne. Pure question d'opinion avec des éditeurs sans coloration syntaxique, pur argument de mauvaise foi avec la coloration syntaxique que tout le monde (enfin, ceux qui veulent être propres) utilise.
Ta justification est bidon : il faudrait coder en fonction des bugs des éditeurs ? Et ce n'est même pas un bug, on ne peut pas reprocher une mauvaise coloration syntaxique quand la syntaxe est mauvaise ! Car il y a une erreur de syntaxe dans l'exemple que tu donnes. Et l'éditeur te permet justement de t'en rendre compte ! Alors n'appelle pas ça un bug.
Mais surtout, ce qui ne me semble pas sujet à débat, c'est le fait de proposer à quelqu'un qui soumet un problème une correction qui ne corrige rien du tout.
La propreté vient tout simplement du fait qu'il est plus simple d'un seul coup d'oeil de voir qu'une variable est présente dans cette chaîne. Pure question d'opinion avec des éditeurs sans coloration syntaxique, pur argument de mauvaise foi avec la coloration syntaxique que tout le monde (enfin, ceux qui veulent être propres) utilise.
Ta justification est bidon : il faudrait coder en fonction des bugs des éditeurs ? Et ce n'est même pas un bug, on ne peut pas reprocher une mauvaise coloration syntaxique quand la syntaxe est mauvaise ! Car il y a une erreur de syntaxe dans l'exemple que tu donnes. Et l'éditeur te permet justement de t'en rendre compte ! Alors n'appelle pas ça un bug.
Mais surtout, ce qui ne me semble pas sujet à débat, c'est le fait de proposer à quelqu'un qui soumet un problème une correction qui ne corrige rien du tout.
Mimiste
Messages postés
1149
Date d'inscription
samedi 17 mai 2008
Statut
Membre
Dernière intervention
6 mars 2016
206
12 mars 2009 à 12:04
12 mars 2009 à 12:04
Amen ^^