Bonjour à tous, Je suis en train de suivre un tuto (Développer un site : Jour 2, La structure PHP), et j'ai toujours un message d'erreur qui apparait alors que mon code est bon (du moins je crois). C'est super énervant car je ne vois pas ou mon code foire!! Je précise : c'est la première fois que je code, donc je ne comprends pas toujours tout du premier coup! Voila ce que j'ai comme message d'erreur : /Site **( ! ) SCREAM: Error suppression ignored for** **( ! ) Notice: Undefined index: PATH_INFO in C:\wamp\www\Site\core\request.php on line 7** Call Stack # Time Memory Function Location 1 0.0006 676360 {main}( ) ..\index.php:0 2 0.0019 694576 Dispatcher->__construct( ) ..\index.php:11 3 0.0019 694912 Request->__construct( ) ..\dispatcher.php:7 Request Object ( [url] => [controller] => [action] => index [params] => Array ( ) ) Voici mon code : <?php class Request{

public $url; //URL appelé par l'utilisateur

function __construct(){
    $this->url = $\_SERVER['PATH\_INFO']; } } ?> Si quelqu'un pouvait de filer un coup de main, ça serait vraiment très appréciable !! En vous remerciant par avance !!

8 réponses


Salut,
C'est parce que tu appelles la page d'index, en fait le PATH_INFO est tout ce qui suit le nom de domaine donc si il n'y a que le nom de domaine PATH_INFO n'est pas défini.
Tu dois faire une condition pour donner les paramètres par défaut si le PATH_INFO n'est pas défini :

// Si le PATH_INFO est défini
if(isset($_SERVER'PATH_INFO'])){
    //Tu traite le comportement via la variable PATH_INFO
}
else{
    //Tu définis manuellement les variables par défaut.
}
savanah
Auteur

Merci pour ta réponse !!
Mais je ne sais pas ou le définir ni comment, d’ailleurs !!

Autre problème : j'ai beau suivre le tuto à la virgule près, j'ai des messages d'erreurs à ne plus en finir, genre ça :

( ! ) SCREAM: Error suppression ignored for
( ! ) Notice: Undefined index: PATH_INFO in C:\wamp\www\Site\core\request.php on line 7
Call Stack

Time Memory Function Location

1 0.0008 678944 {main}( ) ..\index.php:0
2 0.0025 706784 Dispatcher->__construct( ) ..\index.php:11
3 0.0025 707120 Request->__construct( ) ..\dispatcher.php:7

( ! ) SCREAM: Error suppression ignored for
( ! ) Warning: require(C:\wamp\www\Site\controller\Controller.php) <a href='function.require'>function.require</a>]: failed to open stream: No such file or directory in C:\wamp\www\Site\core\dispatcher.php on line 18
Call Stack

Time Memory Function Location

1 0.0008 678944 {main}( ) ..\index.php:0
2 0.0025 706784 Dispatcher->__construct( ) ..\index.php:11
3 0.0029 707760 Dispatcher->loadController( ) ..\dispatcher.php:9

( ! ) SCREAM: Error suppression ignored for
( ! ) Fatal error: require() <a href='function.require'>function.require</a>]: Failed opening required 'C:\wamp\www\Site\controller\Controller.php' (include_path='.;C:\php\pear') in C:\wamp\www\Site\core\dispatcher.php on line 18
Call Stack

Time Memory Function Location

1 0.0008 678944 {main}( ) ..\index.php:0
2 0.0025 706784 Dispatcher->__construct( ) ..\index.php:11
3 0.0029 707760 Dispatcher->loadController( ) ..\dispatcher.php:9

C'est fatigant à la longue, de faire et de défaire sans que ça marche !!

La condition que je t'ai montré, tu dois la placer dans ta méthode __construct()

Je me permet juste de dire que les tutos ne sont pas la pour qu'on les "suive" mais pour qu'on les "comprenne", si tu n'as pas compris c'est que le niveau est un peu plus haut que tes compétences, si tu veux apprendre il faut commencer par le début, apprendre ce qu'est une classe, une fonction, une méthode, savoir interagir avec une base de données etc...
Si tu brûles les étapes, non seulement ça risque de te dégoûter mais en plus tu ne vas rien apprendre.

Pour finir, tu dis avoir suivi le tuto à la virgule près, non ! Si ça ne fonctionne pas c'est qu'il manque quelque chose quelque part.

savanah
Auteur

Merci pour ta réponse.
En ce qui concerne le codage, je me débrouille comme avec le reste : je fais de la 3D, j'ai appris seule en suivant des tutos et maintenant je suis à mon compte et je donne des cours !! Donc, moralité, c'est en mettant les mains dans le cambouis qu'on apprend !! Moi pour que ça rentre, il faut que je fasse, que je défasse, que je refasse.... bref, que je voie comment ça s'articule, ce truc !! je pense qu'à force de voir passer les mêmes variables, les mêmes classe et les mêmes fonctions, on fini par comprendre comment ça marche !! C'est balot, mais apprendre par coeur si je teste pas, je ne retiens rien...

Ce que veux dire Natà c'est pas qu'il faut apprendre par cœur quoi que ce soit mais c'est qu'il faut bidouiller essayer sans bruler les étapes.
Si par exemple tu démontes le moteur d'une fusée en te disant que c'est comme ça que tu vas apprendre ça va certainement foirer, alors que en commençant par le moteur d'une mobylette puis d'une voiture puis d'un avion etc.. ça va le faire.
Tout ça sans pour autant aller faire de la physique quantique ou je ne sais quoi en cours magistraux :)

Tu devrais commencer par des tutos de grafikart ciblés sur un seul composant dans un premier temps, déjà il va plus en profondeur sur le thème évoqué et en plus tu vois un résultat concret plus rapidement.

Exemple : http://www.grafikart.fr/tutoriels/php/foreach-implode-explode-210 ou http://www.grafikart.fr/img/tutos/1/208\_236x144.jpg ou http://www.grafikart.fr/tutoriels/php/mvc-model-vue-controller-php-132 et http://www.grafikart.fr/tutoriels/php/creations-helpers-115

Enfin, en ce qui me concerne avant de faire le tuto site complet en php j'ai d'abord fait son homologue avec cakephp. La différence c'est que toute la partie framework est déjà développé avec cakephp c'est plus facile à assimiler le reste. Par la suite une fois familié avec cakephp, faire le tuto pure php permet de passer en coulisse et de comprendre comment se développe le moteur d'un framework.

Bon ca c'est juste mon avis.

En espérant que je t'ai pas ennuyé.

savanah
Auteur

Merci de m'avoir répondu !! Ben voui, t'as raison !! Surtout que moi et le coding, ça fait 2 voire même 3 !! Je suis obligée de m'y mettre car j'ai mon site pro à mettre online vite, vite, vite !! Ca fait des mois que je repousse mais là, ça urge !! Donc, j'ai fait toute la structure en HTML et CSS mais là, il faut que j'y mette du PHP pour gérer une base de données et le rendre dynamique. Et ben, c'est pas de la tarte !! Et merci pour le tuyau "CakePHP", je vais trifouiller la dedans pour voir si j'assimile ou s'il faut que je prévois un boite d'aspirine avec les tutos.
Je te tiendrais au jus

A +

Salut,
Pour te répondre Savanah, je suis d'accord avec toi, je n'ai ouvert que rarement la doc PHP et je met les mains dans le cambouis aussi, c'est comme ça que j'apprends, mais tu peux être autodidacte et méthodique, l'un n'empêche pas l'autre.
Attention, ce n'est pas un reproche que je te fais, je te mets simplement en garde, puisque j'ai moi aussi voulu griller les étapes, mais à la fin du tuto, j'avais déjà oublié le début, j'ai voulu faire une modification et tout a planté sans que je ne puisse comprendre pourquoi.

Dernier point, si tapesec te donne un bon conseil en te disant d'aller faire un tour du coté de cakePHP, il veut dire dans la conception du site et non dans le codage, parce que si tu compte apprendre PHP en trifouillant le code source de CakePHP, il va te falloir bien plus qu'une boite d'aspirine.

Encore une fois, n'y vois aucune animosité, c'est simplement un conseil que tu es libre de prendre en compte ou pas. Contrairement à ce qu'on peut penser tu vas mettre moins de temps à apprendre les bases puis les appliquer dans un projet que d'essayer de déchiffrer le code d'une structure MVC.

Et si vraiment ton projet est super urgent, tu peux te rabattre vers une plateforme comme Wordpress, bien optimisé un blog Wordpress peut devenir un site à part entière sans que l'utilisateur ne s'en rende compte, ça te laissera au moins le temps de mettre en place quelque chose de plus personnel.

savanah
Auteur

Merci Nata !!
Wordpress, j'y ai pensé depuis le début, mais on en reviens toujours au même !! Pour avoir un site en CMS et pouvoir avoir un template perso, faut coder !! On s'en sort plus !!
J'ai fait un template perso,monter toute la structure de mon site en HTML et CSS, mais faut du PHP pour le rendre dynamique à la Wordpress !!
Ca donne ça :
Template
J'ai les boules !!