[RESOLU] Url, Free et base de donnée

Petit nouveau ! | 1 Messages

26 août 2016, 17:25

Bonjour à tous !

Je vous explique mon problème, je suis entrain de faire un formulaire d'upload d'images qui fonctionne très bien mais le problème vient du fait que je veux conserver l'adresse où sont uploadées les photos dans ma base de donnée. Mon site est sur Free.fr et ma base de donnée aussi. Alors je sais qu'il y a certains problèmes avec eux au niveau de la racine du site, il faut ajouter "/mnt/132/sda/4/9/..." avant l'adresse. Je l'ai donc fait, mais le soucis, c'est qu'après mon url d'image dans ma base de donnée, j'ai de nouveau ce début d'url ! Cela me donne ceci : "/mnt/132/sda/4/9/adrien***/database/images_articles/32//mnt/132/sda/4/9/adrien***/php6JhoYp"

Je n'arrive pas à comprendre pourquoi... Voici mon code PHP et mon formulaire :

Code : Tout sélectionner

<?php // on se connecte à la base de données include('connexion_bd.php'); mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe"); mysql_select_db("$nom_de_la_base") or die('Impossible de s&eacute;lectionner une base de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es du fichier connexion_bd.php.'); mysql_query("SET NAMES UTF8"); $res = mysql_query("SELECT id FROM Articles ORDER BY `Articles`.`id` DESC LIMIT 1"); $affiche = mysql_fetch_array($res); //Traitement du formulaire if(isset($_POST["Valider"])) { $class = $_POST["class"]; $title = htmlspecialchars(stripcslashes(trim($_POST["title"]))); $born_date = $_POST["born_date"]; $sex = $_POST["sex"]; $coat = $_POST["coat"]; $text = stripcslashes($_POST["text"]); $statut = $_POST["statut"]; $url_img1 = '/mnt/132/sda/4/9/adrienphilippon/database/images_articles/'.$affiche['id'].'/'.$photo.''; $result = mysql_query("INSERT INTO Articles VALUES ( '', '".mysql_real_escape_string($class)."', '".mysql_real_escape_string($title)."', '".mysql_real_escape_string($born_date)."', '".mysql_real_escape_string($sex)."', '".mysql_real_escape_string($coat)."', '".mysql_real_escape_string($text)."', '".mysql_real_escape_string($statut)."', '".mysql_real_escape_string($url_img1)."' ) "); //Si il y a une erreur, on crie ^^ if (!$result) { die('Requête invalide : ' . mysql_error()); } else{ //Si tout est ok, on informe le webmaster $message_ok = '<div class="okay"><p>L\'article à bien été publié</p><div class="bouton"><a href="/admin/index.php" style="background-color: #2399de; color: #FFF;">Accueil</a></div></div>'; } //On ferme else } //On ferme if(isset($_POST["Valider"])) ?>

Code : Tout sélectionner

<p>Image</br> <?php // on se connecte à la base de données include('connexion_bd.php'); mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe"); mysql_select_db("$nom_de_la_base") or die('Impossible de s&eacute;lectionner une base de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es du fichier connexion_bd.php.'); mysql_query("SET NAMES UTF8"); //On va chercher le dernier numéro id //SHOW TABLE STATUS fournit des informations sur les tables $res = mysql_query("SELECT id FROM Articles ORDER BY `Articles`.`id` DESC LIMIT 1"); $affiche = mysql_fetch_array($res); //on construit le nom du dossier et son adresse sur le serveur $dossier_upload = '/mnt/132/sda/4/9/adrienphilippon/database/images_articles/'.$affiche['id'].''; //si le dossier n'existe pas, on le créé if (!file_exists($dossier_upload)) { //on créé automatiquement un dossier d'upload d'image mkdir ("$dossier_upload", 0777); } ?> <?php //on vérifie l'extension des images et on arrange la mise en forme du nom if(isset($_FILES['photo'])) { unset($erreur); //Extension autorisé $extensions_ok = array('png', 'gif', 'jpg', 'jpeg', 'JPG', 'bmp'); //Chemin du dossier image $dest_dossier = '/mnt/132/sda/4/9/adrienphilippon/database/images_articles/'.$affiche['id'].'/'; // vérifications if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) ) { $erreur = '<a name="ancre_formulaire"></a><div class="erreur">Veuillez sélectionner un fichier de type png, gif, bmp ou jpg !</div>'; } // copie du fichier if(!isset($erreur)) { $dest_fichier = basename($_FILES['photo']['name']); // formatage nom fichier $dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèé êëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); // remplacer les caracteres autres que lettres, chiffres et point par _ $dest_fichier = preg_replace('/([^.a-z0-1]+)/i', '_', $dest_fichier); // copie du fichier move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier); } } //Erreur if(isset($erreur)){ echo $erreur; } ?> <fieldset> <input type="file" size="65" name="photo" /></p> </fieldset> </p> <p> <div class="bouton"><input name="Valider" value="Valider" type="submit" required></div> </p>
Si quelqu'un a une solution je suis preneur ! :)

Merci d'avance.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

26 août 2016, 17:59

Bonjour,
Alors je sais qu'il y a certains problèmes avec eux au niveau de la racine du site, il faut ajouter "/mnt/132/sda/4/9/..." avant l'adresse.
???
Bah non, si tu rajoutes ça c'est parce que c'est le chemin depuis la racine du serveur (comme chez n'importe quel hébergeur) mais normalement tu ne dois aps le mettre dans ton script.
Utilise un chemin relatif par rapport à ton fichier PHP et ça devrait marcher.
Quand tout le reste a échoué, lisez le mode d'emploi...