dernierement, j'ai un souci de "raffraichissement" du code des pahes php
uploadé sur mon server perso.
-------------------
$DBerr = openDatabase();
if ($DBErr) echo 'erreur';
if (getTBLGeneralValue('maintenance', $value))
{ $value = '1'; if ($value == '1')
{ header('location:'.cstHomedir.$path); exit; } }
[...]
La fonction "getTBLGeneralValue" effectue une requete sql sur la base et
renvoie dans "value" la valeur desire.
Mon soucis : quelque qoit le retour de la requere (ie $value) je n'ai pas
le resultat escompte.
J'ai teste aussi en "forcant" l'affectation de la variable a "1" ou "0"
(code encore present dans l'extrait).
Une idee ?
dernierement, j'ai un souci de "raffraichissement" du code des pahes php
uploadé sur mon server perso.
-------------------
$DBerr = openDatabase();
if ($DBErr) echo 'erreur';
if (getTBLGeneralValue('maintenance', $value))
{ $value = '1'; if ($value == '1')
{ header('location:'.cstHomedir.$path); exit; } }
[...]
La fonction "getTBLGeneralValue" effectue une requete sql sur la base et
renvoie dans "value" la valeur desire.
Mon soucis : quelque qoit le retour de la requere (ie $value) je n'ai pas
le resultat escompte.
J'ai teste aussi en "forcant" l'affectation de la variable a "1" ou "0"
(code encore present dans l'extrait).
Une idee ?
dernierement, j'ai un souci de "raffraichissement" du code des pahes php
uploadé sur mon server perso.
-------------------
$DBerr = openDatabase();
if ($DBErr) echo 'erreur';
if (getTBLGeneralValue('maintenance', $value))
{ $value = '1'; if ($value == '1')
{ header('location:'.cstHomedir.$path); exit; } }
[...]
La fonction "getTBLGeneralValue" effectue une requete sql sur la base et
renvoie dans "value" la valeur desire.
Mon soucis : quelque qoit le retour de la requere (ie $value) je n'ai pas
le resultat escompte.
J'ai teste aussi en "forcant" l'affectation de la variable a "1" ou "0"
(code encore present dans l'extrait).
Une idee ?
dernierement, j'ai un souci de "raffraichissement" du code des pahes php
uploadé sur mon server perso.
-------------------
$DBerr = openDatabase();
if ($DBErr) echo 'erreur';
if (getTBLGeneralValue('maintenance', $value))
{ $value = '1'; if ($value == '1')
{ header('location:'.cstHomedir.$path); exit; } }
J'ai plein de remarques sur ce code.
1) Est-ce la fonction getTBLGeneralValue() qui initialise la variable
$value par référence ?
2) Pourquoi positionner $value à 1 juste avant de quitter le code en
rendant la main au navigateur à qui tu demandes de faire une
nouvelle requête ?
3) Pourquoi tester ($value == '1') puisque ce test sera forcément vrai ?
4) Que vaut la constante cstHomedir ?
5) Sais-tu que si cstHomedir pointe sur le même site il est parfaitement
stupide de faire faire un aller et retour au lieu d'utiliser la
fonction require() ? Ceci est encore plus vrai si cstHomedir ne
commence pas par « http:// » ou « https:// » car cela enfreint les
règles des redirections.
6) As-tu lu la FAQ ?
http://faqfclphp.free.fr/#rub2.11
http://faqfclphp.free.fr/#rub2.12
[...]
La fonction "getTBLGeneralValue" effectue une requete sql sur la base et
renvoie dans "value" la valeur desire.
Bon, ceci répond à l'une de mes questions. Et que retourne-t-elle à
l'appelant lors du « return » ? 1 si tu as une valeur "maintenance"
et 0 sinon ?Mon soucis : quelque qoit le retour de la requere (ie $value) je n'ai
pas
le resultat escompte.
Vérifier le code de retour principal (testé par le premier if).J'ai teste aussi en "forcant" l'affectation de la variable a "1" ou "0"
(code encore present dans l'extrait).
Ah, OK. Ça me semblait bizarre aussi.Une idee ?
Deux principalement :
- vérifier le code de retour de la fonction (*pas* $value) ;
- remplacer header() par require() (lire la FAQ).
dernierement, j'ai un souci de "raffraichissement" du code des pahes php
uploadé sur mon server perso.
-------------------
$DBerr = openDatabase();
if ($DBErr) echo 'erreur';
if (getTBLGeneralValue('maintenance', $value))
{ $value = '1'; if ($value == '1')
{ header('location:'.cstHomedir.$path); exit; } }
J'ai plein de remarques sur ce code.
1) Est-ce la fonction getTBLGeneralValue() qui initialise la variable
$value par référence ?
2) Pourquoi positionner $value à 1 juste avant de quitter le code en
rendant la main au navigateur à qui tu demandes de faire une
nouvelle requête ?
3) Pourquoi tester ($value == '1') puisque ce test sera forcément vrai ?
4) Que vaut la constante cstHomedir ?
5) Sais-tu que si cstHomedir pointe sur le même site il est parfaitement
stupide de faire faire un aller et retour au lieu d'utiliser la
fonction require() ? Ceci est encore plus vrai si cstHomedir ne
commence pas par « http:// » ou « https:// » car cela enfreint les
règles des redirections.
6) As-tu lu la FAQ ?
http://faqfclphp.free.fr/#rub2.11
http://faqfclphp.free.fr/#rub2.12
[...]
La fonction "getTBLGeneralValue" effectue une requete sql sur la base et
renvoie dans "value" la valeur desire.
Bon, ceci répond à l'une de mes questions. Et que retourne-t-elle à
l'appelant lors du « return » ? 1 si tu as une valeur "maintenance"
et 0 sinon ?
Mon soucis : quelque qoit le retour de la requere (ie $value) je n'ai
pas
le resultat escompte.
Vérifier le code de retour principal (testé par le premier if).
J'ai teste aussi en "forcant" l'affectation de la variable a "1" ou "0"
(code encore present dans l'extrait).
Ah, OK. Ça me semblait bizarre aussi.
Une idee ?
Deux principalement :
- vérifier le code de retour de la fonction (*pas* $value) ;
- remplacer header() par require() (lire la FAQ).
dernierement, j'ai un souci de "raffraichissement" du code des pahes php
uploadé sur mon server perso.
-------------------
$DBerr = openDatabase();
if ($DBErr) echo 'erreur';
if (getTBLGeneralValue('maintenance', $value))
{ $value = '1'; if ($value == '1')
{ header('location:'.cstHomedir.$path); exit; } }
J'ai plein de remarques sur ce code.
1) Est-ce la fonction getTBLGeneralValue() qui initialise la variable
$value par référence ?
2) Pourquoi positionner $value à 1 juste avant de quitter le code en
rendant la main au navigateur à qui tu demandes de faire une
nouvelle requête ?
3) Pourquoi tester ($value == '1') puisque ce test sera forcément vrai ?
4) Que vaut la constante cstHomedir ?
5) Sais-tu que si cstHomedir pointe sur le même site il est parfaitement
stupide de faire faire un aller et retour au lieu d'utiliser la
fonction require() ? Ceci est encore plus vrai si cstHomedir ne
commence pas par « http:// » ou « https:// » car cela enfreint les
règles des redirections.
6) As-tu lu la FAQ ?
http://faqfclphp.free.fr/#rub2.11
http://faqfclphp.free.fr/#rub2.12
[...]
La fonction "getTBLGeneralValue" effectue une requete sql sur la base et
renvoie dans "value" la valeur desire.
Bon, ceci répond à l'une de mes questions. Et que retourne-t-elle à
l'appelant lors du « return » ? 1 si tu as une valeur "maintenance"
et 0 sinon ?Mon soucis : quelque qoit le retour de la requere (ie $value) je n'ai
pas
le resultat escompte.
Vérifier le code de retour principal (testé par le premier if).J'ai teste aussi en "forcant" l'affectation de la variable a "1" ou "0"
(code encore present dans l'extrait).
Ah, OK. Ça me semblait bizarre aussi.Une idee ?
Deux principalement :
- vérifier le code de retour de la fonction (*pas* $value) ;
- remplacer header() par require() (lire la FAQ).
Je vais quand meme repondre a tes premieres questions ... car meme si le
pb semble resolu, cela m'aidera a comprendre peut etre certains aspects du
php.
if (getTBLGeneralValue('maintenance', $value))
{ $value = '1'; if ($value == '1')
{ header('location:'.cstHomedir.$path); exit; } }
J'ai plein de remarques sur ce code.
1) Est-ce la fonction getTBLGeneralValue() qui initialise la variable
$value par référence ?
Oui comme dit plus bas, c'est une astuce que j'utilise souvent dans mes
programes binaires quand j'ai besoin de plusieurs valeurs de retours.
En fait j'utilise plus souvent des structures mais la je sais pas les
mettre en place :)
2) Pourquoi positionner $value à 1 juste avant de quitter le code en
rendant la main au navigateur à qui tu demandes de faire une
nouvelle requête ?
On l'a vu plus bas : pour "forcer" le test.
3) Pourquoi tester ($value == '1') puisque ce test sera forcément vrai ?
ben crois moi ou non .... meme avec mon code ca m'affiche quand meme le
resultat "faux" ;)
4) Que vaut la constante cstHomedir ?
elle est le chemin relatif jusqu'a la racine du site. C'ets a dire ".",
"..", "../..", etc ...
C'est la seule astuce que j'ai trouve pour specifier des chemin absolu
depuis la racine du site tout en gerant la partie variable de celui ci.
Je m'explique. Chez moi j'ai un server web perso : http://XXXX.YY.ZZ/
dans lequel j'ai un repertoire par site :
http://XXXX.YY.ZZ/Monsite1
http://XXXX.YY.ZZ/Monsite2
PAr contre j'envisage de passer un jour sur un site dedié (genre pages
perso free). dans ce cas l'adresse racine du site sera : http://XXXX.YY.ZZ/
Donc les chemin relatifs passerons de /Monsite1/Pages a /Pages par exemple
5) Sais-tu que si cstHomedir pointe sur le même site il est parfaitement
stupide de faire faire un aller et retour au lieu d'utiliser la
fonction require() ? Ceci est encore plus vrai si cstHomedir ne
commence pas par « http:// » ou « https:// » car cela enfreint les
règles des redirections.
j'utilise la plupart du temps require_once mais c'ets visiblement la meme.
Je ne comprends pas ton histoire d'aller retour.
6) As-tu lu la FAQ ?
http://faqfclphp.free.fr/#rub2.11
http://faqfclphp.free.fr/#rub2.12
Peut etre pas la faq .... mais a peut pres une bonne 40 aines de sites
differents ;)
J'irais faire un tour.
[...]
La fonction "getTBLGeneralValue" effectue une requete sql sur la base et
renvoie dans "value" la valeur desire.
Bon, ceci répond à l'une de mes questions. Et que retourne-t-elle à
l'appelant lors du « return » ? 1 si tu as une valeur "maintenance"
et 0 sinon ?Mon soucis : quelque qoit le retour de la requere (ie $value) je n'ai
pas
le resultat escompte.
Vérifier le code de retour principal (testé par le premier if).
Une idee ?
Deux principalement :
- vérifier le code de retour de la fonction (*pas* $value) ;
- remplacer header() par require() (lire la FAQ).
Je vais quand meme repondre a tes premieres questions ... car meme si le
pb semble resolu, cela m'aidera a comprendre peut etre certains aspects du
php.
if (getTBLGeneralValue('maintenance', $value))
{ $value = '1'; if ($value == '1')
{ header('location:'.cstHomedir.$path); exit; } }
J'ai plein de remarques sur ce code.
1) Est-ce la fonction getTBLGeneralValue() qui initialise la variable
$value par référence ?
Oui comme dit plus bas, c'est une astuce que j'utilise souvent dans mes
programes binaires quand j'ai besoin de plusieurs valeurs de retours.
En fait j'utilise plus souvent des structures mais la je sais pas les
mettre en place :)
2) Pourquoi positionner $value à 1 juste avant de quitter le code en
rendant la main au navigateur à qui tu demandes de faire une
nouvelle requête ?
On l'a vu plus bas : pour "forcer" le test.
3) Pourquoi tester ($value == '1') puisque ce test sera forcément vrai ?
ben crois moi ou non .... meme avec mon code ca m'affiche quand meme le
resultat "faux" ;)
4) Que vaut la constante cstHomedir ?
elle est le chemin relatif jusqu'a la racine du site. C'ets a dire ".",
"..", "../..", etc ...
C'est la seule astuce que j'ai trouve pour specifier des chemin absolu
depuis la racine du site tout en gerant la partie variable de celui ci.
Je m'explique. Chez moi j'ai un server web perso : http://XXXX.YY.ZZ/
dans lequel j'ai un repertoire par site :
http://XXXX.YY.ZZ/Monsite1
http://XXXX.YY.ZZ/Monsite2
PAr contre j'envisage de passer un jour sur un site dedié (genre pages
perso free). dans ce cas l'adresse racine du site sera : http://XXXX.YY.ZZ/
Donc les chemin relatifs passerons de /Monsite1/Pages a /Pages par exemple
5) Sais-tu que si cstHomedir pointe sur le même site il est parfaitement
stupide de faire faire un aller et retour au lieu d'utiliser la
fonction require() ? Ceci est encore plus vrai si cstHomedir ne
commence pas par « http:// » ou « https:// » car cela enfreint les
règles des redirections.
j'utilise la plupart du temps require_once mais c'ets visiblement la meme.
Je ne comprends pas ton histoire d'aller retour.
6) As-tu lu la FAQ ?
http://faqfclphp.free.fr/#rub2.11
http://faqfclphp.free.fr/#rub2.12
Peut etre pas la faq .... mais a peut pres une bonne 40 aines de sites
differents ;)
J'irais faire un tour.
[...]
La fonction "getTBLGeneralValue" effectue une requete sql sur la base et
renvoie dans "value" la valeur desire.
Bon, ceci répond à l'une de mes questions. Et que retourne-t-elle à
l'appelant lors du « return » ? 1 si tu as une valeur "maintenance"
et 0 sinon ?
Mon soucis : quelque qoit le retour de la requere (ie $value) je n'ai
pas
le resultat escompte.
Vérifier le code de retour principal (testé par le premier if).
Une idee ?
Deux principalement :
- vérifier le code de retour de la fonction (*pas* $value) ;
- remplacer header() par require() (lire la FAQ).
Je vais quand meme repondre a tes premieres questions ... car meme si le
pb semble resolu, cela m'aidera a comprendre peut etre certains aspects du
php.
if (getTBLGeneralValue('maintenance', $value))
{ $value = '1'; if ($value == '1')
{ header('location:'.cstHomedir.$path); exit; } }
J'ai plein de remarques sur ce code.
1) Est-ce la fonction getTBLGeneralValue() qui initialise la variable
$value par référence ?
Oui comme dit plus bas, c'est une astuce que j'utilise souvent dans mes
programes binaires quand j'ai besoin de plusieurs valeurs de retours.
En fait j'utilise plus souvent des structures mais la je sais pas les
mettre en place :)
2) Pourquoi positionner $value à 1 juste avant de quitter le code en
rendant la main au navigateur à qui tu demandes de faire une
nouvelle requête ?
On l'a vu plus bas : pour "forcer" le test.
3) Pourquoi tester ($value == '1') puisque ce test sera forcément vrai ?
ben crois moi ou non .... meme avec mon code ca m'affiche quand meme le
resultat "faux" ;)
4) Que vaut la constante cstHomedir ?
elle est le chemin relatif jusqu'a la racine du site. C'ets a dire ".",
"..", "../..", etc ...
C'est la seule astuce que j'ai trouve pour specifier des chemin absolu
depuis la racine du site tout en gerant la partie variable de celui ci.
Je m'explique. Chez moi j'ai un server web perso : http://XXXX.YY.ZZ/
dans lequel j'ai un repertoire par site :
http://XXXX.YY.ZZ/Monsite1
http://XXXX.YY.ZZ/Monsite2
PAr contre j'envisage de passer un jour sur un site dedié (genre pages
perso free). dans ce cas l'adresse racine du site sera : http://XXXX.YY.ZZ/
Donc les chemin relatifs passerons de /Monsite1/Pages a /Pages par exemple
5) Sais-tu que si cstHomedir pointe sur le même site il est parfaitement
stupide de faire faire un aller et retour au lieu d'utiliser la
fonction require() ? Ceci est encore plus vrai si cstHomedir ne
commence pas par « http:// » ou « https:// » car cela enfreint les
règles des redirections.
j'utilise la plupart du temps require_once mais c'ets visiblement la meme.
Je ne comprends pas ton histoire d'aller retour.
6) As-tu lu la FAQ ?
http://faqfclphp.free.fr/#rub2.11
http://faqfclphp.free.fr/#rub2.12
Peut etre pas la faq .... mais a peut pres une bonne 40 aines de sites
differents ;)
J'irais faire un tour.
[...]
La fonction "getTBLGeneralValue" effectue une requete sql sur la base et
renvoie dans "value" la valeur desire.
Bon, ceci répond à l'une de mes questions. Et que retourne-t-elle à
l'appelant lors du « return » ? 1 si tu as une valeur "maintenance"
et 0 sinon ?Mon soucis : quelque qoit le retour de la requere (ie $value) je n'ai
pas
le resultat escompte.
Vérifier le code de retour principal (testé par le premier if).
Une idee ?
Deux principalement :
- vérifier le code de retour de la fonction (*pas* $value) ;
- remplacer header() par require() (lire la FAQ).
Petit rappel de ton code, en l'indentant pour le rendre plus clair :
if (getTBLGeneralValue('maintenance', $value)) {
$value = '1';
if ($value == '1') {
header('location:'.cstHomedir.$path);
exit;
}
}
echo 'index';
exit;
Petit rappel de ton code, en l'indentant pour le rendre plus clair :
if (getTBLGeneralValue('maintenance', $value)) {
$value = '1';
if ($value == '1') {
header('location:'.cstHomedir.$path);
exit;
}
}
echo 'index';
exit;
Petit rappel de ton code, en l'indentant pour le rendre plus clair :
if (getTBLGeneralValue('maintenance', $value)) {
$value = '1';
if ($value == '1') {
header('location:'.cstHomedir.$path);
exit;
}
}
echo 'index';
exit;
Je vais quand meme repondre a tes premieres questions ... car meme si le
pb semble resolu, cela m'aidera a comprendre peut etre certains aspects
du
php.
C'est avec plaisir que je tâcherai de t'aider à y voir plus clair.
if (getTBLGeneralValue('maintenance', $value))
{ $value = '1'; if ($value == '1')
{ header('location:'.cstHomedir.$path); exit; } }
J'ai plein de remarques sur ce code.
1) Est-ce la fonction getTBLGeneralValue() qui initialise la variable
$value par référence ?
Oui comme dit plus bas, c'est une astuce que j'utilise souvent dans mes
programes binaires quand j'ai besoin de plusieurs valeurs de retours.
En fait j'utilise plus souvent des structures mais la je sais pas les
mettre en place :)
Une autre possibilité consiste à retourner un tableau :
return array($valeur1, $valeur2, $valeur3);
Lors de l'appel, tu peux extraire le contenu directement avec la
construction list :
list($val1, $mal2, $val3) = mafonction();
Voir <http://fr2.php.net/list>.
2) Pourquoi positionner $value à 1 juste avant de quitter le code en
rendant la main au navigateur à qui tu demandes de faire une
nouvelle requête ?
On l'a vu plus bas : pour "forcer" le test.
Ça ne force rien du tout, puisque tu as un premier test sur la valeur de
retour de la fonction.
Petit rappel de ton code, en l'indentant pour le rendre plus clair :
if (getTBLGeneralValue('maintenance', $value)) {
$value = '1';
if ($value == '1') {
header('location:'.cstHomedir.$path);
exit;
}
}
echo 'index';
exit;
Si ta fonction getTBLGeneralValue() se termine par un return(1) ou
n'importe quoi d'autre qui n'est pas nul, alors quelle que soit la
valeur de $value retournée par la fonction, tu forces $value à 1,
puis tu réponds au navigateur avec un code 3xx, en abandonnant donc le
script en cours (ce qui détruit la variable $value).
Inversement, si ta fonction getTBLGeneralValue() se termine par un
return(0) ou n'importe quoi d'autre qui soit nul, alors quelle que soit
la valeur de $value retournée par la fonction, tu fais echo 'index' et
tu sors.
Dans un cas comme dans l'autre, tu n'utilises pas le $value calculé par
la fonction.
3) Pourquoi tester ($value == '1') puisque ce test sera forcément vrai
?
ben crois moi ou non .... meme avec mon code ca m'affiche quand meme le
resultat "faux" ;)
Attention : je voulais dire « ce test sera forcément vrai dans le cas où
tu passes dedans ». Dans le cas où tu passes par echo 'index', le test
($value == '1') n'est pas vu.4) Que vaut la constante cstHomedir ?
elle est le chemin relatif jusqu'a la racine du site. C'ets a dire ".",
"..", "../..", etc ...
C'est parfait pour un require(), mais interdit pour une redirection HTTP
(même si la plupart des navigateurs l'acceptent).
C'est la seule astuce que j'ai trouve pour specifier des chemin absolu
depuis la racine du site tout en gerant la partie variable de celui ci.
Je m'explique. Chez moi j'ai un server web perso : http://XXXX.YY.ZZ/
dans lequel j'ai un repertoire par site :
http://XXXX.YY.ZZ/Monsite1
http://XXXX.YY.ZZ/Monsite2
Pas de problème pour un require()PAr contre j'envisage de passer un jour sur un site dedié (genre pages
perso free). dans ce cas l'adresse racine du site sera :
http://XXXX.YY.ZZ/
Dans ce cas, pour passer d'un site à l'autre, une redirection par
header() peut être obligatoire. Mais cela ne doit pas se faire très
souvent, et jamais dans une navigation courante.
Donc les chemin relatifs passerons de /Monsite1/Pages a /Pages par
exemple
Ah. Et ça ne passera pas de http://site1/Pages à http://site2/Pages ?
Pas de header("Location"), donc.
5) Sais-tu que si cstHomedir pointe sur le même site il est
parfaitement
stupide de faire faire un aller et retour au lieu d'utiliser la
fonction require() ? Ceci est encore plus vrai si cstHomedir ne
commence pas par « http:// » ou « https:// » car cela enfreint les
règles des redirections.
j'utilise la plupart du temps require_once mais c'ets visiblement la
meme.
Absolument pas. Il y a un monde entre les deux. Tu connais l'histoire du
livreur de machine à laver (ou de frigo, je ne sais jamais) ?
Je ne comprends pas ton histoire d'aller retour.
Ce serait bien que tu la comprennes, parce que cela pourrait expliquer
la lenteur de ton site *beaucoup mieux* que par le type de CPU.
6) As-tu lu la FAQ ?
http://faqfclphp.free.fr/#rub2.11
http://faqfclphp.free.fr/#rub2.12
Peut etre pas la faq .... mais a peut pres une bonne 40 aines de sites
differents ;)
J'irais faire un tour.
Je ne te demande pas de lire toute la FAQ (enfin... si, c'est toujours
intéressant, mais pas pour ton problème particulier) mais juste de lire
les deux paragraphes dont j'ai donné les liens ci-dessus.
[...]
La fonction "getTBLGeneralValue" effectue une requete sql sur la base
et
renvoie dans "value" la valeur desire.
Bon, ceci répond à l'une de mes questions. Et que retourne-t-elle à
l'appelant lors du « return » ? 1 si tu as une valeur "maintenance"
et 0 sinon ?Mon soucis : quelque qoit le retour de la requere (ie $value) je n'ai
pas
le resultat escompte.
Je le dis et le répète : le $value, ton code s'en fiche comme de l'an
40, à cause du if devant getTBLGeneralValue().Vérifier le code de retour principal (testé par le premier if).
Tiens, je l'avais déjà écrit, mais tu n'as pas eu l'air de trouver ça
important car tu n'y as pas répondu.
Je vais quand meme repondre a tes premieres questions ... car meme si le
pb semble resolu, cela m'aidera a comprendre peut etre certains aspects
du
php.
C'est avec plaisir que je tâcherai de t'aider à y voir plus clair.
if (getTBLGeneralValue('maintenance', $value))
{ $value = '1'; if ($value == '1')
{ header('location:'.cstHomedir.$path); exit; } }
J'ai plein de remarques sur ce code.
1) Est-ce la fonction getTBLGeneralValue() qui initialise la variable
$value par référence ?
Oui comme dit plus bas, c'est une astuce que j'utilise souvent dans mes
programes binaires quand j'ai besoin de plusieurs valeurs de retours.
En fait j'utilise plus souvent des structures mais la je sais pas les
mettre en place :)
Une autre possibilité consiste à retourner un tableau :
return array($valeur1, $valeur2, $valeur3);
Lors de l'appel, tu peux extraire le contenu directement avec la
construction list :
list($val1, $mal2, $val3) = mafonction();
Voir <http://fr2.php.net/list>.
2) Pourquoi positionner $value à 1 juste avant de quitter le code en
rendant la main au navigateur à qui tu demandes de faire une
nouvelle requête ?
On l'a vu plus bas : pour "forcer" le test.
Ça ne force rien du tout, puisque tu as un premier test sur la valeur de
retour de la fonction.
Petit rappel de ton code, en l'indentant pour le rendre plus clair :
if (getTBLGeneralValue('maintenance', $value)) {
$value = '1';
if ($value == '1') {
header('location:'.cstHomedir.$path);
exit;
}
}
echo 'index';
exit;
Si ta fonction getTBLGeneralValue() se termine par un return(1) ou
n'importe quoi d'autre qui n'est pas nul, alors quelle que soit la
valeur de $value retournée par la fonction, tu forces $value à 1,
puis tu réponds au navigateur avec un code 3xx, en abandonnant donc le
script en cours (ce qui détruit la variable $value).
Inversement, si ta fonction getTBLGeneralValue() se termine par un
return(0) ou n'importe quoi d'autre qui soit nul, alors quelle que soit
la valeur de $value retournée par la fonction, tu fais echo 'index' et
tu sors.
Dans un cas comme dans l'autre, tu n'utilises pas le $value calculé par
la fonction.
3) Pourquoi tester ($value == '1') puisque ce test sera forcément vrai
?
ben crois moi ou non .... meme avec mon code ca m'affiche quand meme le
resultat "faux" ;)
Attention : je voulais dire « ce test sera forcément vrai dans le cas où
tu passes dedans ». Dans le cas où tu passes par echo 'index', le test
($value == '1') n'est pas vu.
4) Que vaut la constante cstHomedir ?
elle est le chemin relatif jusqu'a la racine du site. C'ets a dire ".",
"..", "../..", etc ...
C'est parfait pour un require(), mais interdit pour une redirection HTTP
(même si la plupart des navigateurs l'acceptent).
C'est la seule astuce que j'ai trouve pour specifier des chemin absolu
depuis la racine du site tout en gerant la partie variable de celui ci.
Je m'explique. Chez moi j'ai un server web perso : http://XXXX.YY.ZZ/
dans lequel j'ai un repertoire par site :
http://XXXX.YY.ZZ/Monsite1
http://XXXX.YY.ZZ/Monsite2
Pas de problème pour un require()
PAr contre j'envisage de passer un jour sur un site dedié (genre pages
perso free). dans ce cas l'adresse racine du site sera :
http://XXXX.YY.ZZ/
Dans ce cas, pour passer d'un site à l'autre, une redirection par
header() peut être obligatoire. Mais cela ne doit pas se faire très
souvent, et jamais dans une navigation courante.
Donc les chemin relatifs passerons de /Monsite1/Pages a /Pages par
exemple
Ah. Et ça ne passera pas de http://site1/Pages à http://site2/Pages ?
Pas de header("Location"), donc.
5) Sais-tu que si cstHomedir pointe sur le même site il est
parfaitement
stupide de faire faire un aller et retour au lieu d'utiliser la
fonction require() ? Ceci est encore plus vrai si cstHomedir ne
commence pas par « http:// » ou « https:// » car cela enfreint les
règles des redirections.
j'utilise la plupart du temps require_once mais c'ets visiblement la
meme.
Absolument pas. Il y a un monde entre les deux. Tu connais l'histoire du
livreur de machine à laver (ou de frigo, je ne sais jamais) ?
Je ne comprends pas ton histoire d'aller retour.
Ce serait bien que tu la comprennes, parce que cela pourrait expliquer
la lenteur de ton site *beaucoup mieux* que par le type de CPU.
6) As-tu lu la FAQ ?
http://faqfclphp.free.fr/#rub2.11
http://faqfclphp.free.fr/#rub2.12
Peut etre pas la faq .... mais a peut pres une bonne 40 aines de sites
differents ;)
J'irais faire un tour.
Je ne te demande pas de lire toute la FAQ (enfin... si, c'est toujours
intéressant, mais pas pour ton problème particulier) mais juste de lire
les deux paragraphes dont j'ai donné les liens ci-dessus.
[...]
La fonction "getTBLGeneralValue" effectue une requete sql sur la base
et
renvoie dans "value" la valeur desire.
Bon, ceci répond à l'une de mes questions. Et que retourne-t-elle à
l'appelant lors du « return » ? 1 si tu as une valeur "maintenance"
et 0 sinon ?
Mon soucis : quelque qoit le retour de la requere (ie $value) je n'ai
pas
le resultat escompte.
Je le dis et le répète : le $value, ton code s'en fiche comme de l'an
40, à cause du if devant getTBLGeneralValue().
Vérifier le code de retour principal (testé par le premier if).
Tiens, je l'avais déjà écrit, mais tu n'as pas eu l'air de trouver ça
important car tu n'y as pas répondu.
Je vais quand meme repondre a tes premieres questions ... car meme si le
pb semble resolu, cela m'aidera a comprendre peut etre certains aspects
du
php.
C'est avec plaisir que je tâcherai de t'aider à y voir plus clair.
if (getTBLGeneralValue('maintenance', $value))
{ $value = '1'; if ($value == '1')
{ header('location:'.cstHomedir.$path); exit; } }
J'ai plein de remarques sur ce code.
1) Est-ce la fonction getTBLGeneralValue() qui initialise la variable
$value par référence ?
Oui comme dit plus bas, c'est une astuce que j'utilise souvent dans mes
programes binaires quand j'ai besoin de plusieurs valeurs de retours.
En fait j'utilise plus souvent des structures mais la je sais pas les
mettre en place :)
Une autre possibilité consiste à retourner un tableau :
return array($valeur1, $valeur2, $valeur3);
Lors de l'appel, tu peux extraire le contenu directement avec la
construction list :
list($val1, $mal2, $val3) = mafonction();
Voir <http://fr2.php.net/list>.
2) Pourquoi positionner $value à 1 juste avant de quitter le code en
rendant la main au navigateur à qui tu demandes de faire une
nouvelle requête ?
On l'a vu plus bas : pour "forcer" le test.
Ça ne force rien du tout, puisque tu as un premier test sur la valeur de
retour de la fonction.
Petit rappel de ton code, en l'indentant pour le rendre plus clair :
if (getTBLGeneralValue('maintenance', $value)) {
$value = '1';
if ($value == '1') {
header('location:'.cstHomedir.$path);
exit;
}
}
echo 'index';
exit;
Si ta fonction getTBLGeneralValue() se termine par un return(1) ou
n'importe quoi d'autre qui n'est pas nul, alors quelle que soit la
valeur de $value retournée par la fonction, tu forces $value à 1,
puis tu réponds au navigateur avec un code 3xx, en abandonnant donc le
script en cours (ce qui détruit la variable $value).
Inversement, si ta fonction getTBLGeneralValue() se termine par un
return(0) ou n'importe quoi d'autre qui soit nul, alors quelle que soit
la valeur de $value retournée par la fonction, tu fais echo 'index' et
tu sors.
Dans un cas comme dans l'autre, tu n'utilises pas le $value calculé par
la fonction.
3) Pourquoi tester ($value == '1') puisque ce test sera forcément vrai
?
ben crois moi ou non .... meme avec mon code ca m'affiche quand meme le
resultat "faux" ;)
Attention : je voulais dire « ce test sera forcément vrai dans le cas où
tu passes dedans ». Dans le cas où tu passes par echo 'index', le test
($value == '1') n'est pas vu.4) Que vaut la constante cstHomedir ?
elle est le chemin relatif jusqu'a la racine du site. C'ets a dire ".",
"..", "../..", etc ...
C'est parfait pour un require(), mais interdit pour une redirection HTTP
(même si la plupart des navigateurs l'acceptent).
C'est la seule astuce que j'ai trouve pour specifier des chemin absolu
depuis la racine du site tout en gerant la partie variable de celui ci.
Je m'explique. Chez moi j'ai un server web perso : http://XXXX.YY.ZZ/
dans lequel j'ai un repertoire par site :
http://XXXX.YY.ZZ/Monsite1
http://XXXX.YY.ZZ/Monsite2
Pas de problème pour un require()PAr contre j'envisage de passer un jour sur un site dedié (genre pages
perso free). dans ce cas l'adresse racine du site sera :
http://XXXX.YY.ZZ/
Dans ce cas, pour passer d'un site à l'autre, une redirection par
header() peut être obligatoire. Mais cela ne doit pas se faire très
souvent, et jamais dans une navigation courante.
Donc les chemin relatifs passerons de /Monsite1/Pages a /Pages par
exemple
Ah. Et ça ne passera pas de http://site1/Pages à http://site2/Pages ?
Pas de header("Location"), donc.
5) Sais-tu que si cstHomedir pointe sur le même site il est
parfaitement
stupide de faire faire un aller et retour au lieu d'utiliser la
fonction require() ? Ceci est encore plus vrai si cstHomedir ne
commence pas par « http:// » ou « https:// » car cela enfreint les
règles des redirections.
j'utilise la plupart du temps require_once mais c'ets visiblement la
meme.
Absolument pas. Il y a un monde entre les deux. Tu connais l'histoire du
livreur de machine à laver (ou de frigo, je ne sais jamais) ?
Je ne comprends pas ton histoire d'aller retour.
Ce serait bien que tu la comprennes, parce que cela pourrait expliquer
la lenteur de ton site *beaucoup mieux* que par le type de CPU.
6) As-tu lu la FAQ ?
http://faqfclphp.free.fr/#rub2.11
http://faqfclphp.free.fr/#rub2.12
Peut etre pas la faq .... mais a peut pres une bonne 40 aines de sites
differents ;)
J'irais faire un tour.
Je ne te demande pas de lire toute la FAQ (enfin... si, c'est toujours
intéressant, mais pas pour ton problème particulier) mais juste de lire
les deux paragraphes dont j'ai donné les liens ci-dessus.
[...]
La fonction "getTBLGeneralValue" effectue une requete sql sur la base
et
renvoie dans "value" la valeur desire.
Bon, ceci répond à l'une de mes questions. Et que retourne-t-elle à
l'appelant lors du « return » ? 1 si tu as une valeur "maintenance"
et 0 sinon ?Mon soucis : quelque qoit le retour de la requere (ie $value) je n'ai
pas
le resultat escompte.
Je le dis et le répète : le $value, ton code s'en fiche comme de l'an
40, à cause du if devant getTBLGeneralValue().Vérifier le code de retour principal (testé par le premier if).
Tiens, je l'avais déjà écrit, mais tu n'as pas eu l'air de trouver ça
important car tu n'y as pas répondu.