Problème chemin photo

Fermé
mottin - 21 sept. 2008 à 23:09
 mottin - 24 sept. 2008 à 09:50
Bonjour,
j'ais un messages d'erreur qui apparait en plus des photos sur http://www.restaurantmarbella.net/restaurant.php

Voici le fichier incriminé

<?php
class images {

var $repertoire;
var $nb_par_ligne;

function ajouter_image($image,$nom) {
if (is_dir($this->repertoire)) {
if (copy($image, $this->repertoire . "/" . $nom)) return true;
else return false;
} else return false;
}

function lister_repertoire() {
$liste = array();
if (is_dir($this->repertoire)) {
if ($pointeur = opendir($this->repertoire)) {
while (($fichier = readdir($pointeur)) !== false) {
if (is_dir($this->repertoirte . "/" . $fichier) || $fichier=="." || $fichier=="..") continue; $liste[] = $fichier;
}

}
closedir($pointeur);
return $liste;
} else return false;
}

function liste_select() {
$liste = $this->lister_repertoire();
for ($i = 0; $i < count($liste); $i++) {
echo " <option value=\"$this->repertoire/$liste[$i]\">$liste[$i]</option>\n";
}
}

function afficher_liste($lien) {
$liste = $this->lister_repertoire();
echo "<table summary=\"table d'images\">\n";
for ($i = 0; $i < count($liste); $i++) {
$nom = explode(".", $liste[$i]);
$nom = str_replace("_", " ", $nom[0]);
$nom = str_replace("-", " ", $nom);
$nom = strtoupper(substr($nom, 0, 1)) . substr($nom, 1);
if (round($i/$this->nb_par_ligne) == ($i/$this->nb_par_ligne)) echo " <tr>\n";
if( isset($lien) && !empty($lien) ) {
$lien_avant = '<a href="'.$lien.'">';
$lien_apres = '</a>';
} else {
$lien_avant = '';
$lien_apres = '';
}
echo " <td align=\"center\">" . $lien_avant . $this->afficher_image($liste[$i]) . $lien_apres ."<br></td>\n";
if (round(($i+1)/$this->nb_par_ligne) == (($i+1)/$this->nb_par_ligne) || ($i+2) > count($liste)) echo " </tr>\n";
}
echo "</table>\n";
}

function afficher_image($fichier) {
return "<img width=\"200px\" src=\"" . $this->repertoire . "/" . $fichier . "\" alt=\"" . $fichier . " - " . round((filesize($this->repertoire. "/" . $fichier)/1024), 2) . " ko\">";
}


}

?>

J'ais mis en gras la ligne 19 car je ne vois vraiment pas comment régler ce problème

Merci d'avance pour l'aide
A voir également:

22 réponses

TEMCA Messages postés 319 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 24 mars 2011 76
21 sept. 2008 à 23:48
Ton script va chercher les images dans D:\www\restaurantmarbella.net\
En effet, tu vois sur ta page dans les erreurs D:\www\restaurantmarbella.net\htdocs\images.class.php

Il faudrait déjà qu'il aille chercher dans le bon répertoire, c'est à dire sur le serveur avec http://www.restaurantmarbella.net/ et pas sur le disque dur de ton pc (D:\). Voir avec le fichier de config pour donner le bon chemin d'accès...
0
Seulement je n'ais pas de fichier configuration il n'y a que ce fichier (images.class.php) plus le fichier admin permettant de modifier les photos comme ci dessous
<?php

include("images.class.php");

function getextension($fichier) {
$bouts = explode(".", $fichier);
$extension = array_pop($bouts);
return $extension;
}

if ($_POST['action'] == "ajouter") {
if ($image && !empty($_POST['repertoire']) && !empty($_POST['mot_de_passe'])){
if ($_POST['mot_de_passe'] == "nevzat") {
if ($_POST['repertoire'] == "resto1" || $_POST['repertoire'] == "resto2" || $_POST['repertoire'] == "resto3" ||$_POST['repertoire'] == "resto4" || $_POST['repertoire'] == "resto5" || $_POST['repertoire'] == "resto6" ||$_POST['repertoire'] == "soiree1" || $_POST['repertoire'] == "soiree2" ||$_POST['repertoire'] == "soiree3" ||$_POST['repertoire'] == "soiree4" ) {
$repertoire = $_POST['repertoire'];
$extension = strtolower(getextension($image_name));
if ($extension == "jpg" || $extension == "png" || $extension == "bmp" || $extension == "gif") {
$imag = new images();
$imag->repertoire = $repertoire;
if ($imag->ajouter_image($image, $image_name)) echo "<font face=\"Verdana\">Le fichier " . $image_name . " a bien été envoyé.</font>";
else echo "<font face=\"Verdana\">Une erreur s'est produite !</font>";
} else echo "<font face=\"Verdana\">Extension interdite !</font>";
} else echo "<font face=\"Verdana\">Repertoire interdit !</font>";
} else echo "<font face=\"Verdana\">Mot de passe incorrect !</font>";
} else echo "<font face=\"Verdana\">Formulaire incomplet !</font>";
} else if ($_POST['action'] == "supprimer") {
if (!empty($_POST['image']) && !empty($_POST['mot_de_passe'])) {
if ($_POST['mot_de_passe'] == "nevzat") {
$extension = strtolower(getextension($image));
if ($extension == "jpg" || $extension == "png" || $extension == "bmp" || $extension == "gif" || $extension == "jpeg") {
if (@unlink($image)) echo "<font face=\"Verdana\">L'image <b>$image</b> a bien été suprimé !</font>";
else echo "<font face=\"Verdana\">Une erreur s'est produite !</font>";
} else echo "<font face=\"Verdana\">Extension interdite !</font>";
} else echo "<font face=\"Verdana\">Mot de passe incorrect !</font>";
} else echo "<font face=\"Verdana\">Formulaire incomplet !</font>";
}

?>
<html>
<body>

<form action="admin_images.php" method="post">
<input type="hidden" name="action" value="supprimer">
<table>
<tr>
<td><font face="Verdana">Image à supprimer :</font></td>
<td><select name="image">
<option></option>
<option value="">+++ resto1 +++</option>
<?php

Et les lignes de code se trouvant dans la page pour afficher les photos

<a href="resto1.php"> <?php
$images = new images();
$images->repertoire = "resto1";
$images->nb_par_ligne = 1;
$images->afficher_liste('resto1.php');
?></a>
Ce que je ne comprends pas c'est que j'utilise un hébergement chez phpnux pour faire mes essais et cela fonctionnes sans aucun problèmes et que l'hébergement définitif est chez hebergeur-discount et c'est là que le problème apparait
0
Comment je peut régler ce problème, comme j'ais dit je n'ais pas de fichier de config.
0
Bonjour

ligne 19, repertoirte au lieu de repertoirte c'est une faute de recopie, ou vraiment une erreur dans le script ?

Sinon, quel est le message d'erreur ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
au lieu de repertoire !!!
0
Il s'agissait d'une erreur dans le script merci de mel'avoir montrer je l'ais modifié.
Le vrai problème vient du fait que systèmatiquement il me marque le D: dans le chemin d'accès, on m'as dit de modifier le fichier config mais je n'en ais pas et sur mon hébergement mutualisé je n'ais aucun accès.
Pour exemple de message d'erreur:
Fatal error: Class 'images' not found in D:\www\restaurantmarbella.net\htdocs\restaurant1.php on line 41

Si je pouvais enlever ce D: tout rentrerais dans l'ordre
0
Non, ce n'est pas une question de D: et tu n'as pas besoin d'accéder au fichier de config.

Le message signifie qu'il ne trouve pas la classe images et le D: est celui de ton script, pas celui du chemin des images. C'est PHP lui-même qui a affiché D:\www\restaurantmarbella etc.
peux-tu remplacer include("images.class.php"); par require("images.class.php"); et voir si le message d'erreur change ? Si oui, quel est le nouveau message ?
0
Non le message d'erreur est le même.
0
pour s'assurer que le fichier images.class.php est bien uinclus, peux-tu mettre entre le <?php et le class images :
echo "coucou";

le coucou s'affiche-t-il bien quand tu ouvres ta page d'admin ?
0
Le coucou apparait sur la page qui afiche les photos http://www.restaurantmarbella.net/restaurant1.php par contre la ge d'admin buggue http://www.restaurantmarbella.net/admin_images.php alors qu'en définitive elle doit être comme ça http://www.creation-mjc.com/restaurant-marbella/admin_images.php
0
Dans ton message 2, tu dis que tu n'as que 2 fichiers. Or tu en as au moins 3 : images.class.php, restaurant1.php et admin_images.php
Commençons par admin_images.php.
Je constate que sur ta page d'admin http://www.restaurantmarbella.net/admin_images.php le coucou ne s'affiche pas. Donc le fichier images.class.php semble ne pas être inclus.

Es-tu vraiment sûr qu'au début de admin_images.php il y a include("images.class.php"); avec la bonne orthographe ?

L'hébergeur chez lequel ça marche utilse-t-il windows lui aussi ?
Quelles sont les versions de PHP de l'ancien hébergeur et du nouveau ?
0
Pour la version fonctionnelle je suis chez phpnux et pour l'autre je suis chez hebergeur-discount.com.
Sur ce serveur j'ais la version php5 par contre je ne pourrais pas te dire si il utilise windows.
Pour ce qui est de admin_images.php, il n'y a pas d'erreur de frappe.
Voici la partie importante du script:
<?php

include("images.class.php");

function getextension($fichier) {
$bouts = explode(".", $fichier);
$extension = array_pop($bouts);
return $extension;
}

if ($_POST['action'] == "ajouter") {
if ($image && !empty($_POST['repertoire']) && !empty($_POST['mot_de_passe'])){
if ($_POST['mot_de_passe'] == "XXXX") {
if ($_POST['repertoire'] == "resto1" || $_POST['repertoire'] == "resto2" || $_POST['repertoire'] == "resto3" ||$_POST['repertoire'] == "resto4" || $_POST['repertoire'] == "resto5" || $_POST['repertoire'] == "resto6" ||$_POST['repertoire'] == "soiree1" || $_POST['repertoire'] == "soiree2" ||$_POST['repertoire'] == "soiree3" ) {
$repertoire = $_POST['repertoire'];
$extension = strtolower(getextension($image_name));
if ($extension == "jpg" || $extension == "png" || $extension == "bmp" || $extension == "gif") {
$imag = new images();
$imag->repertoire = $repertoire;
if ($imag->ajouter_image($image, $image_name)) echo "<font face=\"Verdana\">Le fichier " . $image_name . " a bien été envoyé.</font>";
else echo "<font face=\"Verdana\">Une erreur s'est produite !</font>";
} else echo "<font face=\"Verdana\">Extension interdite !</font>";
} else echo "<font face=\"Verdana\">Repertoire interdit !</font>";
} else echo "<font face=\"Verdana\">Mot de passe incorrect !</font>";
} else echo "<font face=\"Verdana\">Formulaire incomplet !</font>";
} else if ($_POST['action'] == "supprimer") {
if (!empty($_POST['image']) && !empty($_POST['mot_de_passe'])) {
if ($_POST['mot_de_passe'] == "XXXX") {
$extension = strtolower(getextension($image));
if ($extension == "jpg" || $extension == "png" || $extension == "bmp" || $extension == "gif" || $extension == "jpeg") {
if (@unlink($image)) echo "<font face=\"Verdana\">L'image <b>$image</b> a bien été suprimé !</font>";
else echo "<font face=\"Verdana\">Une erreur s'est produite !</font>";
} else echo "<font face=\"Verdana\">Extension interdite !</font>";
} else echo "<font face=\"Verdana\">Mot de passe incorrect !</font>";
} else echo "<font face=\"Verdana\">Formulaire incomplet !</font>";
}

?>
0
J'ai beau réfléchir, je ne vois pas pourquoi le coucou s'affiche dans une de tes pages et pas l'autre. Comment est fait le include au début de la page restaurant1.php (copier-coller) ?
0
Je dois hélas m'absenter pour travailler, je serais de retour ce soir vers 21H30 donc si tu n'as pas de réponses de ma part, ne t'étonnes pas
0
Voici la partie du fichier restaurant.php qui t'intéresses:
<?php include("images.class.php"); ?>
<div id="body"><center><img src="images/titrenews1.jpg"><br>
<br>
<br>
<p>Le restaurant MARBELLA vous invite à découvrir son nouveau décor et sa nouvelle carte... </p>
<br><p>Un large choix à votre disposition : amateur de pizzas, vous retrouverez l´ambiance italienne...<br>des tartes flambées croustillantes et odorantes...des grillades, des salades, bref de quoi satisfaire votre appétit!</p>
<br>
<table border="0" width="100%" cellspading="0" cellspacing="0" valign=top>
<tr>
<td width="30%" valign=top>
<a href="resto1.php"> <?php
$images = new images();
$images->repertoire = "resto1";
$images->nb_par_ligne = 1;
$images->afficher_liste('resto1.php');
?></a> </td>

La partie en gras appelle l'image
0
Chez moi ça marche, pour autant que j'ai pu recréer ton site avec les éléments de script que tu as donnés.
Le coucou s'affiche dans les 2 pages et la classe images est bien reconnue
Bien sûr j'ai d'autres erreurs puisque je n'ai pas une copie complète de ton site, mais au moins sur ces deux points-là le comportement est normal.
Je sèche...
0
Le problème ne peut il pas venir de l'hébergeur?
0
Si c'est possible. Il y aurait une bizarrerie dans le système de fichiers ?
peux-tu (provisoirement) retirer la ligne include("images.class.php"); du début de chacun de tes fichiers pour voir si le message d'erreur change ?

Au passage, tu as mis un mot de passe en clair dans ton code (1 ère erreur) et tu as recopié ce code sur le forum (2 ème erreur). Change le vite et ne recommence jamais !
0
j'ais tout supprimé et remis les fichiers de bases sans les modifs et tu peut voir sur http://www.restaurantmarbella.net/restaurant1.php .
J'ais aussi essayé de supprimer l'include sans succès
0
Il vient de m'arriver un grand mystère de l'univers ça marche.
J'ais remis les fichiers de bases qui au début ne fonctionnaient pas et maintenant miracle ça marche.
Malgré tout je tiens à te remercier pour ta patience et ton aide.
0