Chemin images php mysql

Résolu/Fermé
lina-24 Messages postés 63 Date d'inscription vendredi 6 novembre 2020 Statut Membre Dernière intervention 25 mars 2023 - 26 mai 2022 à 20:48
lina-24 Messages postés 63 Date d'inscription vendredi 6 novembre 2020 Statut Membre Dernière intervention 25 mars 2023 - 26 mai 2022 à 22:32
Bonjour,

Je reviens vers vous au sujet de l'Upload images sur le serveur.

Quand j'exécute mon script le chemin entier s'enregistre sur la base de données
ex.. ( uploads/files/image.jpg ),
est-ce que c'est possible d'enregistrer que le nom de l'image sur ma base de donné mysql
ex ( image.jpg )
pas avec le chemin du dossier ( uploads/files/ )
Merci.

<?php 
//Affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);


//connexion à ta bdd
$server = 'localhost';
$username = 'root';
$password = '';
$dbname = 'test';

$mysqli = new mysqli($server, $username, $password, $dbname);
if ($mysqli->connect_error) {
  sendResponse('Erreur de connexion (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error, false); 
}



/**
 * Permet de récupérer proprement les variables avant de les utiliser
 * @param type $varName
 * @param type $defaultValue
 * @return type
 */
function getPost($varName,$defaultValue=NULL){
  return isset($_POST[$varName]) ? $_POST[$varName] : $defaultValue;
}


/**
 * Fonction qui va assurer le renvoi, au format json, du message
 * @param type $message
 * @param type $success
 */
function sendResponse($message,$success=false){
  header('Content-Type: application/json'); // on force le format en JSON dans le header http de la réponse
  $data = array('success' => $success, 'messages' => $message);
  echo json_encode($data);
  exit;
}

/**
 * Retourne les infos d'un "visiteur" 
 * @global mysqli $mysqli
 * @param string $email
 * @return array
 */
function getVisitorByMail($email){
  global $mysqli;
  $sql = "SELECT * FROM visitor 
         WHERE email = '$email' ";
  
  if (!$result = $mysqli->query($sql)) {
    sendResponse("Message d'erreur : %s\n", $mysqli->error , false);
  }
  return $result -> fetch_array(MYSQLI_ASSOC);
}


function addInDb($name,$email,$url){
  global $mysqli;
  $sql = "INSERT INTO visitor (Name,email, Image) 
          VALUES ('$name',,'$email','$url')";
  if (!$result = $mysqli->query($sql)) {
    sendResponse("Message d'erreur : %s\n", $mysqli->error , false);
  }
  return $result;
}

//récupération PROPRE des variables AVANT de les utiliser
$name = getPost('Name');
$email = getPost('email');



//on récupère proprement la variables $_FILES
$files = !empty($_FILES['userImage']) ? $_FILES['userImage'] : NULL;
if(empty($files)){
  sendResponse("Aucun fichie à uploader !",false);
}

//On récupère les infos du visiteur pour voir si son email existe déjà
$visitor = getVisitorByMail($email);

//si l'utilisateur existe déjà
if(!empty($visitor)){
  sendResponse("Cet email existe déjà !",false);
}

$dossier = 'uploads/files/';
$filename = $files['name'];
$ext = pathinfo($filename, PATHINFO_EXTENSION);
$url = $dossier . uniqid(rand()) . '.' . $ext;

$allowed = array('gif', 'jpg', 'jpeg', 'png');
if (!in_array($ext, $allowed)) {
  sendResponse("Extension de fichier non autorisé !",false);
}

if(!is_uploaded_file($files['tmp_name'])){
  sendResponse("Erreur lors du téléchargement du fichier !",false);
}

 if(!move_uploaded_file($files['tmp_name'],$url)){
   //si le move_uploaded a échoué
   sendResponse("Erreur lors du déplacement du fichier !",false);
 }else{
   //l'uplod c'est bien passé...
  addInDb($name,$email,$url);
  sendResponse("Successfully Uploaded",true); 
 }




Configuration: Windows / Chrome 101.0.4951.67

4 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
26 mai 2022 à 21:11
Bonjour

Ben oui, il suffit d'utiliser la bonne variable...
1
lina-24 Messages postés 63 Date d'inscription vendredi 6 novembre 2020 Statut Membre Dernière intervention 25 mars 2023 4
26 mai 2022 à 21:19
justement jordane45 c'est la que je bug :( je reviens vers vous pour m'aider a résoudre de problème.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
26 mai 2022 à 21:30
Comment ça tu bug ?

On va y aller par étape ....
Actuellement .. quelle est la variable ( du code que tu nous montres) qui contient la donnée enregistrée en bdd ?
Une fois que tu l'auras trouvée ...
Regarde dans le code, la variable qui pourrait contenir la donnée que tu souhaites ( le nom du fichier ) ( petit indice .. le nom de cette variable, en anglais, veut dire : nom du fichier )
Remplace enfin la première variable par cette seconde dans le code qui sert à faire l'ajout en bdd.. et le tour est joué.
0
lina-24 Messages postés 63 Date d'inscription vendredi 6 novembre 2020 Statut Membre Dernière intervention 25 mars 2023 4
26 mai 2022 à 21:48
sincèrement je suis perdu :( j'abandonne le php j'ai vraiment la tête qui tourne, c'est un exercice que je dois remettre demain matin au professeur d'informatique.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
26 mai 2022 à 22:27
Ah la la la la.....

La fonction qui te sert à faire l'insert en bdd c'est
 addInDb($name,$email,$url);

Dans cette ligne de code, on constate que le chemin vers le fichier se trouve dans la variable $url

Dans le code, tu as une variable qui, comme son nom l'indique, contient le nom du fichier ... cette variable c'est :
$fileName
$filename = $files['name'];


Donc... il te suffit d'utiliser cette variable à la place de $url .. et là.. tu n'auras que le nom du fichier et pas son chemin complet.

Enfin bon.. ce n'est pas un problème de langage php... c'est surtout que tu as un souci pour être capable de lire du code (et le comprendre)...
Pour progresser, il faudrait que essaye de mettre des commentaires dans le code à chaque "étape".
En faisant cela, ça te permettra d'en comprendre le fonctionnement plus facilement...
D'ailleurs, il faut prendre cette habitude dès maintenant afin que, lorsque tu feras tes propres codes, être capable de pouvoir y revenir plusieurs semaines plus tard et le comprendre ... ou pour qu'un ( futur..) collègue .. soit capable de reprendre ton code si besoin..
1
lina-24 Messages postés 63 Date d'inscription vendredi 6 novembre 2020 Statut Membre Dernière intervention 25 mars 2023 4
26 mai 2022 à 22:32
Merci pour votre aide j'ai trouvé la solution avant de lire votre réponse je vous le jure .
jordane45 vous êtes un ange je ne ne lâcherai jamais le php <3
0