Je m'appelle Daphnée. J'ai décidé de me lancer dans de nouvelles études en cours du soir (BAC+3 en informatique). Tout se passait plus ou moins bien jusqu'à l'année passée. Aujourd'hui, je n'arrive plus à gérer le boulot, les cours et mes filles. On nous demande trop d'autonomie sans nous donner des solutions.
Je dois réaliser une application MVC connectée à une base de données en essayant d'être la plus générique possible. Au lieu de créer un formulaire bêtement en HTML, je dois passer par des classes et PHP. J'avance petit à petit. Actuellement, je n'ai plus cours de Web. Je dois présenter cette application finalisée le plus rapidement possible. Malheureusement, je bloque sur certains points.
Je dois notamment pourvoir mettre mon application dans un autre répertoire ou sur un serveur réel sans devoir changer quoi que ce soit. J'y arrive grâce à des constantes et une classe qui charge toutes les autres. Malheureusement, je dois toujours changer une des constantes pour que tout fonctionne.
On m'a suggéré d'utiliser le chemin traduit. Je n'y arrive pas. J'ai les erreurs ci-dessous et un résultat nulle pour cette constante.
Notice: Use of undefined constant PATH_TRANSLATED - assumed 'PATH_TRANSLATED'
perso la racine que je nomme ROOT, je la définis dans l'index.php
define('ROOT', __DIR__ . '/');
pour info :
__FILE__ est une constante php qui contient le chemin du fichier dans lequel __FILE__ est appelé.
par exemple : __FILE__ peut être égal à /var/www/html/index.php
pour avoir le dossier on peut faire :
dirname(__FILE__) qui donnera /var/www/html ou C:\site\www\html si tu es sous windows.
la constante __DIR__ est équivalente à dirname(__FILE__)
Tu remarqueras que ces constantes ne mettent pas de slash à la fin, il faut donc le rajouter
Dans ton bout de code tu ranges ça dans un tableau etc. mais ce n'est pas utile. En théorie ton fichier index.php se trouve à la racine de ton projet et est le point d'entrée de ton programme.
Si tu met dans ce fichier index.php :
define('ROOT', __DIR__ .'/');
la constante ROOT sera visible partout et contiendra toujours la même chose.
si tu veux inclure un fichier tu n'auras qu'à faire :
include(ROOT . 'models/model_user.php');
et ce code fonctionnera quelques que soit l'endroit où est stocké ton projet.
Étant donné que tu utilises un / pour 'models/model_user.php' et que j'utilises moi aussi des / dans la définition de mes autres constantes, je suppose qu'il faut réaliser un remplacement des \ par des /.
J'ai obtenu une nouvelle information. Apparemment, la plupart des serveurs tournent en Linux. Je ne sais pas si cela a son importance. Je vous renvoie aussi à ma question précédente.
Quelle est la meilleure solution (fonctionnement sous Windows et sous Linux)?
Pour corriger ton erreur, il suffit de lire ce que t'indique PHP. (Ne pas voir ici une indication de mauvaise foi, mais ce que PHP t'indique peut réellement t'aider :
Notice: Use of undefined constant PATH_TRANSLATED - assumed 'PATH_TRANSLATED'
C'est à dire :
Je ne connais pas
$_SERVER[PATH_TRANSLATED];
mais peut-être que si tu m'indiquais :
$_SERVER["PATH_TRANSLATED"];
je connaîtrais peut-être mieux
La seul chance qu'on a de gagner la guerre, c'est qu'en face ils soient aussi cons qu'ici !
Je te remercie pour l'explication et la correction. Je ne suis pas très douée en anglais. En outre, je débute en programmation. Il est difficile de savoir quand on doit mettre des ' ou des " dans le passage de paramètres. Cependant, j'aurais pu trouver cette erreur seule en étant moins pressée. Malheureusement, on doit avancer rapidement.
Bonsoir MetallicAAA,
Je te remercie pour le complément d'informations. Je teste tout cela prochainement. Je reviens vers vous dès que possible. En effet, j'aimerais quand même donner une solution. Vous m'avez aidée, c'est bien. Je souhaiterais aider à mon tour. Des fois, en programmation, on cherche des heures pour une petite connerie.
D'AVANCE, MERCI BIEN À VOUS!
Répertoire de l'application
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.