Problèmes de PHP débutant (2e partie)
6 messages • Page 1 sur 1
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
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: 451
- Inscription: Mer Sep 01, 2004 20:10
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 ?
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
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: 451
- Inscription: Mer Sep 01, 2004 20:10
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
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Google Code Jam 2003
- Du nouveau dans le Centre pour Webmasters de Live Search
- Google Search et AdSense sur MySpace : un accord de 900M$
- Référencement d'un forum phpBB
- Comment résoudre les problèmes de Bourbon...
- Comment éviter les contenus dupliqués (avec/sans le www)
- Google va créer une unité de recherche en Inde
- La détection des blog rolls dans Google Blog Search
- MSN Search : Microsoft dans la course
- Nouvelle version de notre FAQ
- 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)
- question de débutant referencement html et php
- Question de débutant: Comment détecter l'url en php?
- Au secours DEBUTANT : page dynamique php pour Réf
- [php] enlever une partie de chaine d'une chaine complete
- [Résolu] Problèmes de droits user apache / php sur dédié
- problèmes d'URL rewriting combiné avec PHP + erreurs apache
- Rewriting pour php nuke pour débutant
- quel livre pour debutant pour apprendre le php
- Adsense partie privée
- wri se trompe en partie ?
- MS vs Google : la partie s'accelère ?
Consultez la description détaillée des produits ou services de Google suivants : Google Compute
- Analyse de similarité textuelle
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



le forum