Problèmes de PHP débutant (2e partie)
6 messages
• Page 1 sur 1
-

miltonis - WRInaute occasionnel

- Messages: 255
- Inscription: 27 Juil 2004
Problèmes de PHP débutant (2e partie)
Bonjour,
comme prévu me revoici. tout réussir du 1er coup c'était bien un doux rêve.
Cette fois je bloque sur un probleme de passage de valeurs de variable d'un page à un autre, j'explique :
à partir d'une page qui est censée afficher des infos, content_w3c.php :
je vais chercher à déterminer quelle info afficher suivant le tiers du mois en cours, star.php :
qui appelle la fonction adéquate, focntions.php :
à l'affichage la zone censée récupérer les infos reste vide. pourtant au niveau de fonctions.php (le 3e script), la variable est bien renseignée. Mais à l'affichage des infos (content_w3c.php) elle est vide.
Si quelqu'un a une solution ou un lien qui expliquerait comment arriver au résultat voulu, je suis preneur
merci par avance
Milt
comme prévu me revoici. tout réussir du 1er coup c'était bien un doux rêve.
Cette fois je bloque sur un probleme de passage de valeurs de variable d'un page à un autre, j'explique :
à partir d'une page qui est censée afficher des infos, content_w3c.php :
- Code: Tout sélectionner
<?php
$msTitreA = ""; $msTitreB = ""; $msTitreC = "";
$msPhotoA = ""; $msPhotoB = ""; $msPhotoC = "";
$msResumA = ""; $msResumB = ""; $msResumC = "";
$starA_title1 = ""; $starA_title2 = ""; $starA_text = "";
$starA_link = ""; $starA_image = "";
include("fonctions.php");
include("star.php");
?>
<!-- === STARS === -->
<!--=== bloc-star 01 ===-->
<h2 id="title01_star" class="width_titles"><?php echo $starA_title1; ?></h2>
<h1 id="title_star" class="width_titles"><?php echo $starA_title2; ?></h1>
<div id="star">
<div id="text_star"><?php
echo $starA_text;
echo $starA_link; ?></div>
<div id="image_star"><?php echo $starA_image; ?></div>
</div>
?>
je vais chercher à déterminer quelle info afficher suivant le tiers du mois en cours, star.php :
- Code: Tout sélectionner
<?php
/********** ===== AFFICHE LE CONTENU DE LA SECTION "STAR" DU MOIS EN COURS, PROCHAIN ou PRECEDENT ===== *********/
/* récupère les valeurs du jour, mois de la date courante */
$jour = date("j");
$mois = date("m");
//echo $mois;
//echo $jour;
/* determine what third of month we are */
if ($jour>=1 && $jour<=10) {
echo "1er tiers";
for ($i=1; $i<=2; $i++) {
if ($i=1)
blocA($mois);
else if ($i=2)
blocB($mois);
}
}
else if ($jour>=11 && $jour<=20) {
echo "2e tiers";
for ($i=1; $i<2; $i++) {
if ($i=1)
blocA($mois);
else if ($i=2)
blocB($mois);
}
}
else if ($jour>=21 && $jour<=31) {
echo "3e tiers";
for ($i=1; $i<2; $i++) {
if ($i=1)
blocA($mois);
else if ($i=2)
blocB($mois);
}
}
?>
qui appelle la fonction adéquate, focntions.php :
- Code: Tout sélectionner
<?php
/* STAR : Pour le BLOC A */
function blocA($valeurdumois) {
include("star_words.php");
switch ($valeurdumois) {
case 01 : $starA_title1 = $starJan_title1;
$starA_title2 = $starJan_title2;
$starA_text = $starJan_text;
$starA_link = $starJan_link;
$starA_image = $starJan_image;
//echo $starA_title1;
break;
case 02 : $starA_title1 = $starFev_title1;
$starA_title2 = $starFev_title2;
$starA_text = $starFev_text;
$starA_link = $starFev_link;
$starA_image = $starFev_image;
break;
.................
case 12 : $starA_title1 = $starDec_title1; $starA_title2 = $starDec_title2;
$starA_text = $starDec_text;
$starA_link = $starDec_link;
$starA_image = $starDec_image;
break;
}
}
?>
à l'affichage la zone censée récupérer les infos reste vide. pourtant au niveau de fonctions.php (le 3e script), la variable est bien renseignée. Mais à l'affichage des infos (content_w3c.php) elle est vide.
Si quelqu'un a une solution ou un lien qui expliquerait comment arriver au résultat voulu, je suis preneur
merci par avance
Milt
-

MarvinLeRouge - WRInaute impliqué

- Messages: 525
- Inscription: 1 Sep 2004
Salut,
Je vois plusieurs problèmes dans ton script :
1) tu as des tests avec des =, et non des == (if $i = 1 par exemple)
2) tu as une boucle qui va de 1 à 2, et qui fait exactement une action dans chaque cas. Je ne comprends pas pourquoi tu utilises une boucle.
3) tes tests pourraient être fortement simplifiés
As-tu tenté un affichage de debug, par exemple à chaque entrée dans une fonction, afin de voir où le bât blesse ?
Je vois plusieurs problèmes dans ton script :
1) tu as des tests avec des =, et non des == (if $i = 1 par exemple)
2) tu as une boucle qui va de 1 à 2, et qui fait exactement une action dans chaque cas. Je ne comprends pas pourquoi tu utilises une boucle.
3) tes tests pourraient être fortement simplifiés
As-tu tenté un affichage de debug, par exemple à chaque entrée dans une fonction, afin de voir où le bât blesse ?
-

miltonis - WRInaute occasionnel

- Messages: 255
- Inscription: 27 Juil 2004
merci de répondre rapidement Marvin,
1- pour le "==" dans IF c'est corrigé, erreur d'inattention
2- je suppose que tu parles de la boucle FOR, en fait pour l'instant ça ne se voit pas, mais j'en aurai besoin plus tard et elle sera un peu plus compliquée. je veux juste savoir si la structure focntionne.
C'est vrai par contre qu'il faudrait en faire une fonction à appeler. C'est ce àq uoi tu pensais?
3- "tes tests pourraient être fortement simplifiés"
-----> je ne vois pas ce que tu veux dire par là, comment?
mais corriger tout ça n'arrangera pas le problème. A ce sujet as-tu une idée?
merci
1- pour le "==" dans IF c'est corrigé, erreur d'inattention
2- je suppose que tu parles de la boucle FOR, en fait pour l'instant ça ne se voit pas, mais j'en aurai besoin plus tard et elle sera un peu plus compliquée. je veux juste savoir si la structure focntionne.
C'est vrai par contre qu'il faudrait en faire une fonction à appeler. C'est ce àq uoi tu pensais?
3- "tes tests pourraient être fortement simplifiés"
-----> je ne vois pas ce que tu veux dire par là, comment?
mais corriger tout ça n'arrangera pas le problème. A ce sujet as-tu une idée?
merci
-

miltonis - WRInaute occasionnel

- Messages: 255
- Inscription: 27 Juil 2004
Pour info, j'ai supprimé le INCLUDE("fonction.php"); et j'ai récupéré la focntion dans la boucle.
Là, ça marche, si je mets aussi le INCLUDE("star_words"); (là où il y a tous les textes à afficher.
mais si j'enlève cet include j'ai ceci comme erreur:
pour toutes les variables starJan_xxxxx
Là, ça marche, si je mets aussi le INCLUDE("star_words"); (là où il y a tous les textes à afficher.
mais si j'enlève cet include j'ai ceci comme erreur:
- Code: Tout sélectionner
Notice: Undefined variable: starJan_title1 in c:\program files\easyphp1-8\www\perou\star.php on line 35
pour toutes les variables starJan_xxxxx
-

MarvinLeRouge - WRInaute impliqué

- Messages: 525
- Inscription: 1 Sep 2004
a) Pour tes variables, elles ne sont effectivement pas définies dans le cadre de ta fonction. Si elles sont définies à un niveau supérieur (externes à ta fonction), tu peux récupérer leurs valeurs en iniquant au début de ta fonction
pour indiquer que la variable truc est définie en dehors de la fonction. C'est une question de portée de variable (scope en anglais).
b) Pour tes tests, tu peux simplifier
en
En effet :
a) la fonction date te retournera pour le jour un nombre positif donc inutile de tester cet aspect
b) quand tu arrives au premier "else", tu impliques automatiquement que le nombre est >= 11, puisque tu es dans un else de la condition <= 10
c) la condition elseif (accroché) existe en php : c'est fait exprès pour les enchaînements de tests comme ici
d) le dernier cas englobe tout le reste donc pas la peine de faire un test
En clair, tu fais des tests qui ne sont pas faux, mais ne servent à rien, puisque la réponse est connue d'avance : économise ton clavier et le serveur
- Code: Tout sélectionner
global $truc;
pour indiquer que la variable truc est définie en dehors de la fonction. C'est une question de portée de variable (scope en anglais).
b) Pour tes tests, tu peux simplifier
- Code: Tout sélectionner
if ($jour >= 1 && $jour <= 10)
{ ...
}
else if ($jour >= 11 && $jour <= 20)
{ ...
}
else if ($jour >= 21 && $jour <= 31)
{ ...
}
en
- Code: Tout sélectionner
if ($jour <= 10)
{ ...
}
elseif ($jour <= 20)
{ ...
}
else
{ ...
}
En effet :
a) la fonction date te retournera pour le jour un nombre positif donc inutile de tester cet aspect
b) quand tu arrives au premier "else", tu impliques automatiquement que le nombre est >= 11, puisque tu es dans un else de la condition <= 10
c) la condition elseif (accroché) existe en php : c'est fait exprès pour les enchaînements de tests comme ici
d) le dernier cas englobe tout le reste donc pas la peine de faire un test
En clair, tu fais des tests qui ne sont pas faux, mais ne servent à rien, puisque la réponse est connue d'avance : économise ton clavier et le serveur
6 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- URL rewriting et les problèmes existentiels d'un débutant : acte #1
- Comment oter une partie du texte de ce script PHP ?
- Help! Une partie de mon code php saute sans raison!!
- Problème php de débutant
- S.O.S débutant problème PHP
- PHP - question de débutant
- aider un débutant en html/php
- Php et mysql débutant (vraiment)
- Problèmes avec mail() de PHP
- question de débutant referencement html et php
- PDF Quick View : l'outil de Google pour voir les PDF - 08-10-2009
- Google ouvre un nouveau bureau à New-York - 04-10-2006
- Vidéos de Matt Cutts sur le référencement Google - 04-08-2006
Consultez la description détaillée des produits ou services de Google suivants : Google Compute
- Détection de pages similaires
Cet outil vous permet de calculer la similarité entre 2 pages web. L'algorithme utilisé repose sur l'analyse des occurrences des mots (mais pas sur leur positionnement dans les pages). Google utilise cette notion à certains endroits dans son algorithme, mais de façon bien plus évoluée que ce petit outil... Avoir des pages trop similaires peut entraîner des problèmes d'indexation... Cet outil vous permettra peut-être de résoudre certains problèmes de contenus dupliqués.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
