Systeme d'avatar

Résolu/Fermé
Kearnen Messages postés 36 Date d'inscription jeudi 4 juin 2015 Statut Membre Dernière intervention 13 juin 2015 - 4 juin 2015 à 21:05
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 - 8 juin 2015 à 21:22
Bonjour,

Je suis en train de crée un site et j'en suis au système d'avatar, j'aimerais que le membre puisse choisir l'avatar sur son ordinateur et que la photo se stock sur ma base de donnée ou ftp peu importe.. J'ai chercher sur google et j'ai trouver des trucs mais je ne sais pas pourquoi sa ne marche pas pourtant j'ai essayer pleins de trucs :S J'espère qu'on me répondra bientôt :) A+ :)
A voir également:

16 réponses

jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
4 juin 2015 à 21:33
Bonjour,

1 - On ne stocke pas les fichiers / images DANS la BDD .... on les mets dans un répertoire du serveur ... et on ne stocke en BDD .."que" le chemin pour y accéder.

2 -
j'ai trouver des trucs mais je ne sais pas pourquoi sa ne marche pas

Si tu ne nous montres pas ton code ... impossible pour nous de t'aider....

**** Attention ****
Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

.
1
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
4 juin 2015 à 22:52

Je me reconnecte demain la je deco donc a demain si t'es toujours là :)

Ben je suis là quasiment tous les jours... 12 heures par jour ^^
donc y'a des chances ;-)

Donc par contre... tu utilises l'ancienne extension mysql_* ... elle est considérée comme obsolète.
Il serait préférable de passer à une extension plus récente comme mysqli_* ou (je préfère...) PDO !
Voici un peu de lecture sur le sujet : https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top


Quoi qu'il en soit .. et quelque soit l'extension que tu utiliseras .. il faudra donc faire une requête pour pouvoir insérer les données dans ta BDD.

Pour pouvoir t'aider à la faire .. il faudra que tu nous donnes la structure de ta table...
Dans l'idéal .. tu ajoutes (si ce n'est pas déjà fait) un champ "avatar" de type varchar(255) qui servira à stocker le nom du fichier.

Il faudra également que tu nous montres le code que tu as utilisé pour l'upload (des fois que tu aies changé des choses par rapport au code que je t'ai proposé dans le lien).

à partir de là .. on pourra finaliser ton code.
1
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
4 juin 2015 à 21:53

c'est lequel le code que tu veux ?

Un de ceux que tu as essayé pour uploader les fichiers sur ton serveur (car oui..il faut commencer par ça )

Car en gros ...
en 1 tu upload l'avatar sur le serveur
Une fois l'upload réalisé ... tu stockes (via un requête de type INSERT ) le nom du fichier que tu as uploadé ( et donc...qui a été mis dans un répertoire de ton serveur) dans la BDD
et voilou.. c'est tout.


0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
4 juin 2015 à 21:54
Voici un exemple d'upload de fichier :
https://www.commentcamarche.net/faq/889-php-upload-de-fichiers

ou encore :
http://phpcodeur.net/articles/php/upload
0
Kearnen Messages postés 36 Date d'inscription jeudi 4 juin 2015 Statut Membre Dernière intervention 13 juin 2015 1
Modifié par jordane45 le 4/06/2015 à 22:01
D'accord tiens :
<?php
 
  if(isset($_POST['submit']))
  {
   $avatar = $_FILES['avatar']['name'];
   $avatar_tmp = $_FILES['avatar']['tmp_name'];
   if(!empty($avatar))
    
    {
     $image_ext = strtolower(end(explode('.',$avatar)));
     
     if(in_array($image_ext,array('jpg','jpeg','png','gif')))
     {
      modifier_image_profile($avatar_tmp,$avatar);
      header("Location: ../membre/");
     }else{
      echo"<center><h3><br><br><br><br>Veuillez saisir une image valide</h3></center>";
     }
     
    }
  }
  ?>


EDIT : Ajout du LANGAGE dans les balises de code
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

.
0

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

Posez votre question
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
4 juin 2015 à 22:07
Ok.
Et qu'est-ce qui ne marche pas ?

As tu essayé de faire un PRINT de la variable $_FILES pour voir ce qu'elle contient ?
<?php
//---------------------------------------------------------// 
// le temps des tests :
//---------------------------------------------------------//
echo "<br><br> POST : <br>";
print_r($_POST);
echo "<br><br> FILES : <br>";
print_r($_FILES);
echo "<br>";
//---------------------------------------------------------//
  if(isset($_POST['submit'])) {
   $avatar = $_FILES['avatar']['name'];
   $avatar_tmp = $_FILES['avatar']['tmp_name'];
   if(!empty($avatar)) {
     $image_ext = strtolower(end(explode('.',$avatar)));
     
     if(in_array($image_ext,array('jpg','jpeg','png','gif'))){
       modifier_image_profile($avatar_tmp,$avatar);
       header("Location: ../membre/");
     }else{
       echo"<center>
                 <h3><br><br><br><br>Veuillez saisir une image valide</h3>
                </center>";
     }
     
    }else{
      echo"<center>
                 <h3>Erreur : Aucune image n'a été selectionnée !</h3>
                </center>";
     } 
  }
  ?>




Et ... que contient le code de ta fonction : modifier_image_profile ?
C'est elle qui doit contenir le "stockage" sur le serveur ainsi que l'insertion en BDD...

0
Kearnen Messages postés 36 Date d'inscription jeudi 4 juin 2015 Statut Membre Dernière intervention 13 juin 2015 1
4 juin 2015 à 22:12
Le lien du code que tu m'as donné ( http://phpcodeur.net/articles/php/upload ) l'upload marche bien mais comment je fait si je veux que le fichier qui a été upload sa change l'image de profil du membre ?
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
4 juin 2015 à 22:23
Comme je te l'ai dit ...
Une fois l'image uploadée sur le serveur ... il faut stocker son chemin dans ta BDD....

Si aucun avatar existe pour le user .. tu fais un INSERT ..... sinon .. tu fais un UPDATE.
(ou éventuellement un REPLACE => https://dev.mysql.com/doc/refman/8.0/en/replace.html )
0
Kearnen Messages postés 36 Date d'inscription jeudi 4 juin 2015 Statut Membre Dernière intervention 13 juin 2015 1 > jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024
4 juin 2015 à 22:24
Je sais pas faire sa, si tu pouvais m'aider :/
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
4 juin 2015 à 22:28

Je sais pas faire sa, si tu pouvais m'aider :/


Tout d'abord .. il faut qu'on sache comment tu te connectes à ta BDD dans tes scripts PHP ..
Tu utilises quoi : mysql_* , mysqli_* ou PDO pour te connecter à ta Base Mysql ?

=> Montres nous ton code de connexion à ta BDD

0
Kearnen Messages postés 36 Date d'inscription jeudi 4 juin 2015 Statut Membre Dernière intervention 13 juin 2015 1
4 juin 2015 à 22:40
Tiens voilà :
mysql_connect('', '', '');
mysql_select_db('');

Je me reconnecte demain la je deco donc a demain si t'es toujours là :)
0
Kearnen Messages postés 36 Date d'inscription jeudi 4 juin 2015 Statut Membre Dernière intervention 13 juin 2015 1
Modifié par jordane45 le 6/06/2015 à 17:55
Re :) alors pour la colonne avatar c'est fait j'ai mis en varchar 255, ensuite pour l'extension mysql_ , un peu la flemme de la changer, je la change que si je suis obligé ^^ ensuite voici le code du bouton pour upload :
 <form method="post" enctype="multipart/form-data" action="upload.php">
<p>
<input type="file" name="fichier" size="30">
<br><br><input type="submit" name="upload" value="Uploader">
</p>
</form>


Et le code pour l'upload :
<?php

if( isset($_POST['upload']) ) // si formulaire soumis
{
    $content_dir = 'upload/'; // dossier où sera déplacé le fichier

    $tmp_file = $_FILES['fichier']['tmp_name'];

    if( !is_uploaded_file($tmp_file) )
    {
        exit("Le fichier est introuvable");
    }

    // on vérifie maintenant l'extension
    $type_file = $_FILES['fichier']['type'];

    if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') )
    {
        exit("Le fichier n'est pas une image");
    }

    // on copie le fichier dans le dossier de destination
    $name_file = $_FILES['fichier']['name'];

    if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
    {
        exit("Impossible");
    }

    echo "Le fichier a bien été uploadé";
}

?>


Voilà en espérant que tu me répondes vite :p

EDIT : Ajout du LANGAGE dans les balises de code
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

.
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
Modifié par jordane45 le 6/06/2015 à 18:03
Donc... si l'upload se fait correctement... il ne reste plus qu'à insérer le chemin en base.

<?php
$id_user = isset($_POST['id_user'])?$_POST['id_user']:NULL;

if($id_user){
if( isset($_POST['upload']) ) { // si formulaire soumis

    $content_dir = 'upload/'; // dossier où sera déplacé le fichier

    $tmp_file = $_FILES['fichier']['tmp_name'];

    if( !is_uploaded_file($tmp_file) ) {
        exit("Le fichier est introuvable");
    }

    // on vérifie maintenant l'extension
    $type_file = $_FILES['fichier']['type'];

    if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') ) {
        exit("Le fichier n'est pas une image");
    }

    // on copie le fichier dans le dossier de destination
    $name_file = $_FILES['fichier']['name'];

    if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )  {
        exit("Impossible");
    }else{
      
     // ICI tu places le code qui va insérer en BDD !
      //par exemple :
      $sql = "UPDATE tatableusers SET avar = '$name_file' WHERE id_user = '$id_user'";
     mysql_query($sql);
     

       echo "Le fichier a bien été uploadé";
    }   
}
}else{
 echo " Erreur ! Aucun ID_USER défini ! ";
}

?>


NB : Il faudra penser à passer également l' id de ton user dans ton formulaire pour savoir à qui tu affectes l'avatar.

Pour cela.. tu peux utiliser un champ input hidden
par exemple :
<form method="post" enctype="multipart/form-data" action="upload.php">
<p>
<input type="hidden" name="id_user" value="<?php echo $id_user;?>">
<input type="file" name="fichier" size="30">
<br><br><input type="submit" name="upload" value="Uploader">
</p>
</form>




Cordialement,
Jordane
0
Kearnen Messages postés 36 Date d'inscription jeudi 4 juin 2015 Statut Membre Dernière intervention 13 juin 2015 1
6 juin 2015 à 18:44
Quand j'essaie sa me dit : Erreur ! Aucun user_id défini
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
6 juin 2015 à 19:36
A quel momment affiches tu le formulaire pour Uploadé l'avatar ?

Quel est le code COMPLET de cette page
celle qui contient :
<form method="post" enctype="multipart/form-data" action="upload.php">
<p>
<input type="hidden" name="id_user" value="<?php echo $id_user;?>">
<input type="file" name="fichier" size="30">
<br><br><input type="submit" name="upload" value="Uploader">
</p>
</form>


.... et dans laquelle tu dois normalement récupérer l'ID de ton USER ... et le mettre dans l'input Hidden

0
Kearnen Messages postés 36 Date d'inscription jeudi 4 juin 2015 Statut Membre Dernière intervention 13 juin 2015 1
Modifié par jordane45 le 7/06/2015 à 18:58
Tiens le code complet de la page :
<?php
session_start();
 
  //---------------------------------------------------------
  // Requires fichiers database
  //---------------------------------------------------------

 $titre = 'Profil';
require_once ("../jointures/head.php");
?>

<div class="container">
  
    <?php require_once("../jointures/header.php"); ?>
 
 
 </div>
 <?php
   if(isset($_SESSION['username']))
   {
   ?>
 
 
 <br><br><br><br><br><br><br><br><center>
 <h3><center><font color="orange">Changer votre photo de profil</font></center></h3>
 <center>
 <br>
 <img src ="../membre/upload/base.jpg" height="200" width="200" alt="avatar">
 <br><br>
<form method="post" enctype="multipart/form-data" action="upload.php">
<p>
<input type="hidden" name="id_user" value="<?php echo $id_user; ?>">
<input type="file" name="fichier" size="30">
<br><br><input type="submit" name="upload" value="Uploader">
</p>
</form>
 
 </center>
 
   <?php
   }
   else
   {
   ?>
 
 
 <h3><center>
 <br><br><br>
   <a href="../membre/connexion.php">Veuillez vous connecté...</a>
   </center>
   
    <?php
     } 
     ?>
 
 
 
 
 
 
 <?php require_once("../jointures/footer.php");?>
 <?php require_once("../modal/modal.php"); ?>


EDIT : Ajout du LANGAGE dans les balises de code
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
7 juin 2015 à 19:04
Dans le code que tu nous montres actuellement...
l'information permettant d'identifier l'utilisateur est la variable de session
$_SESSION['username']

... tu peux donc l'utiliser lorsque tu mets à jour l'avatar dans ta BDD.

La requête deviendrait alors un truc du genre :
$username = isset($_SESSION['username'])?$_SESSION['username']:NULL;
if ($username){
      $sql = "UPDATE tatableusers SET avar = '$name_file' WHERE username = '$username'";
}else{
 echo "<br> Erreur ! Aucun USERNAME ! ";
}


Et tu peux donc retirer le champ input hidden que je t'ai fait ajouter dans le code de ton formulaire.
0
Kearnen Messages postés 36 Date d'inscription jeudi 4 juin 2015 Statut Membre Dernière intervention 13 juin 2015 1
7 juin 2015 à 19:43
Sa marche tjs pas tiens le code de mon upload.php :
<?php
$username = isset($_POST['username'])?$_POST['username']:NULL;

if($username){
if( isset($_POST['upload']) ) { // si formulaire soumis

$content_dir = 'upload/'; // dossier où sera déplacé le fichier

$tmp_file = $_FILES['fichier']['tmp_name'];

if( !is_uploaded_file($tmp_file) ) {
exit("Le fichier est introuvable");
}

// on vérifie maintenant l'extension
$type_file = $_FILES['fichier']['type'];

if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') ) {
exit("Le fichier n'est pas une image");
}

// on copie le fichier dans le dossier de destination
$name_file = $_FILES['fichier']['name'];

if( !move_uploaded_file($tmp_file, $content_dir . $name_file) ) {
exit("Impossible");
}else{

// ICI tu places le code qui va insérer en BDD !
//par exemple :
$sql = "UPDATE users SET avatar = '$name_file' WHERE username = '$username'";
mysql_query($sql);


echo "Le fichier a bien été uploadé";
}
}
}else{
echo " Erreur ! Aucun Username défini ! ";
}

?>
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
7 juin 2015 à 20:06
.. et quelle est la structure de la table ?
0
Kearnen Messages postés 36 Date d'inscription jeudi 4 juin 2015 Statut Membre Dernière intervention 13 juin 2015 1
7 juin 2015 à 20:10
id, username, prenom, password, email, avatar, signup_date, region, friends Voilà
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
8 juin 2015 à 09:54
Ok ...
Tu peux modifier le code par ceci :

    // ICI tu places le code qui va insérer en BDD !
      //par exemple :
      $sql = "UPDATE tatable SET avatar = '$name_file' WHERE username = '$username'";
     mysql_query($sql) die('Requête invalide : ' . mysql_error() . " <br><br> REQUETE : <br>". $sql);



NB : Penses à modifier le nom de ta table ( tatable ) dans la requête ... par le nom de TA TABLE dans ta BDD !

Tu as également oublié de changer la première ligne par :
$username = isset($_SESSION['username'])?$_SESSION['username']:NULL;

0
Kearnen Messages postés 36 Date d'inscription jeudi 4 juin 2015 Statut Membre Dernière intervention 13 juin 2015 1
Modifié par jordane45 le 8/06/2015 à 19:56
Sa ne marche toujours pas, il y a une page blanche donc une erreur de code, tiens le code :

<?php
$username = isset($_SESSION['username'])?$_SESSION['username']:NULL;

if($username){
if( isset($_POST['upload']) ) { // si formulaire soumis

    $content_dir = 'upload/'; // dossier où sera déplacé le fichier

    $tmp_file = $_FILES['fichier']['tmp_name'];

    if( !is_uploaded_file($tmp_file) ) {
        exit("Le fichier est introuvable");
    }

    // on vérifie maintenant l'extension
    $type_file = $_FILES['fichier']['type'];

    if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') ) {
        exit("Le fichier n'est pas une image");
    }

    // on copie le fichier dans le dossier de destination
    $name_file = $_FILES['fichier']['name'];

    if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )  {
        exit("Impossible");
    }else{
      
     // ICI tu places le code qui va insérer en BDD !
      //par exemple :
      $sql = "UPDATE users SET avatar = '$name_file' WHERE username = '$username'";
     mysql_query($sql) die('Requête invalide : ' . mysql_error() . " <br><br> REQUETE : <br>". $sql);

     

       echo "Le fichier a bien été uploadé";
    }   
}
}else{
 echo " Erreur ! Aucun Username défini ! ";
}

?>


et le code du formulaire :
<form method="post" enctype="multipart/form-data" action="upload.php">
<p>
<input type="hidden" name="username" value="<?php echo $username; ?>">
<input type="file" name="fichier" size="30">
<br><br><input type="submit" name="upload" value="Uploader">
</p>
</form>


EDIT : AJOUT DU LANGAGE DANS LES BALISES DE CODE ! (encore ....)
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Merci d'y penser à l'avenir !
.
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
8 juin 2015 à 20:05
Déjà ..merci de penser à ajouter le LANGAGE dans les balises de code.
Cela rend le code plus lisible !
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code


Ensuite... on va forcer l'affichage des éventuelles erreurs de code php et ajouter un peu de debug.

Dis moi ce que ça donne :
<?php
//affichage des erreurs PHP
error_reporting(E_ALL);

//pour faire un test :
echo " <br> TEST !!!! (est-ce que ce message s'affiche sur ta page ??)";

//récupération des données :
$username = isset($_SESSION['username'])?$_SESSION['username']:NULL;


// dossier où sera déplacé le fichier
$content_dir = 'upload/'; 
		
if($username){
  if( isset($_POST['upload']) ) { // si formulaire soumis


    if(isset($_FILES['fichier']['tmp_name'])){
    $tmp_file = $_FILES['fichier']['tmp_name'];

    if( !is_uploaded_file($tmp_file) ) {
        exit("Le fichier est introuvable");
    }

    // on vérifie maintenant l'extension
    $type_file = $_FILES['fichier']['type'];

    if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') && !strstr($type_file, 'png') ) {
        exit("Le fichier n'est pas une image");
    }

    // on copie le fichier dans le dossier de destination
    $name_file = isset($_FILES['fichier']['name'])?$_FILES['fichier']['name']:NULL;

    if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )  {
      exit("Impossible");
    }else{  
      // ICI tu places le code qui va insérer en BDD !
      //par exemple :
      $sql = "UPDATE users SET avatar = '$name_file' WHERE username = '$username'";
      mysql_query($sql) or die('Requête invalide : ' . mysql_error() . " <br><br> REQUETE : <br>". $sql);
      echo "Le fichier a bien été uploadé";
    }  
   }else{
      echo " Erreur ! La variable FILES['fichier']['tmp_name'] n'existe pas !";
   }	 
  }else{
    echo " Erreur ! La variable 'upload' n'existe pas !";
  }
}else{
 echo " Erreur ! Aucun Username défini ! ";
}


.
PS: Au moment d'exécuter cette page.... quelle est l'adresse qui est indiquée dans ton navigateur internet ?
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
8 juin 2015 à 20:16
Tu viens de me dire en MP que ça marche toujours pas...
Pourrais tu être plus précis ?
Qu'est-ce qui s'affiche sur la page ?
Quelle est l'URL qui apparait dans la barre d'adresse de ton navigateur ?
0
Kearnen Messages postés 36 Date d'inscription jeudi 4 juin 2015 Statut Membre Dernière intervention 13 juin 2015 1
8 juin 2015 à 20:19
Alors déjà, désolé pour les balises, ensuite l'adresse indiquée quand j'exécute la page c'est : "monsite/membre/upload.php" et le message qui est affiché c'est : "TEST !!!! (est-ce que ce message s'affiche sur ta page ??) Erreur ! Aucun Username défini !"
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
Modifié par jordane45 le 8/06/2015 à 20:26
On avance ...

La raison du Problème est simple tu (enfin.. ON ) a oublié d'activer les variables de session ..... (A faire DANS TOUTES TES PAGES ! )

ce qui donne :

<?php
//affichage des erreurs PHP
error_reporting(E_ALL);

// démarrage des SESSION "propre"
if(session_id() == '') {
 session_start();
}

//récupération des données :
$username = isset($_SESSION['username'])?$_SESSION['username']:NULL;


// dossier où sera déplacé le fichier
$content_dir = 'upload/'; 
  
if($username){
  if( isset($_POST['upload']) ) { // si formulaire soumis


    if(isset($_FILES['fichier']['tmp_name'])){
    $tmp_file = $_FILES['fichier']['tmp_name'];

    if( !is_uploaded_file($tmp_file) ) {
        exit("Le fichier est introuvable");
    }

    // on vérifie maintenant l'extension
    $type_file = $_FILES['fichier']['type'];

    if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') && !strstr($type_file, 'png') ) {
        exit("Le fichier n'est pas une image");
    }

    // on copie le fichier dans le dossier de destination
    $name_file = isset($_FILES['fichier']['name'])?$_FILES['fichier']['name']:NULL;

    if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )  {
      exit("Impossible");
    }else{  
      // ICI tu places le code qui va insérer en BDD !
      //par exemple :
      $sql = "UPDATE users SET avatar = '$name_file' WHERE username = '$username'";
      mysql_query($sql) or die('Requête invalide : ' . mysql_error() . " <br><br> REQUETE : <br>". $sql);
      echo "Le fichier a bien été uploadé";
    }  
   }else{
      echo " Erreur ! La variable FILES['fichier']['tmp_name'] n'existe pas !";
   }  
  }else{
    echo " Erreur ! La variable 'upload' n'existe pas !";
  }
}else{
 echo " Erreur ! Aucun Username défini ! ";
}

0
Kearnen Messages postés 36 Date d'inscription jeudi 4 juin 2015 Statut Membre Dernière intervention 13 juin 2015 1
8 juin 2015 à 20:50
Sa me donne : Requête invalide : Access denied for user ''@'localhost' (using password: NO)

REQUETE :
UPDATE users SET avatar = 'images.jpg' WHERE username = 'Killer'
Donc faut que je le fasse connecté a la BDD
0
Kearnen Messages postés 36 Date d'inscription jeudi 4 juin 2015 Statut Membre Dernière intervention 13 juin 2015 1
8 juin 2015 à 20:54
Voilà j'ai réussi :) voilà le resultat affiché : Le fichier a bien été uploadé
et donc voici le code final pour les interéssés :
<?php
//affichage des erreurs PHP
error_reporting(E_ALL);

// démarrage des SESSION "propre"
if(session_id() == '') {
 session_start();
}

//récupération des données :
$username = isset($_SESSION['username'])?$_SESSION['username']:NULL;


// dossier où sera déplacé le fichier
$content_dir = 'upload/'; 
  
if($username){
  if( isset($_POST['upload']) ) { // si formulaire soumis


    if(isset($_FILES['fichier']['tmp_name'])){
    $tmp_file = $_FILES['fichier']['tmp_name'];

    if( !is_uploaded_file($tmp_file) ) {
        exit("Le fichier est introuvable");
    }

    // on vérifie maintenant l'extension
    $type_file = $_FILES['fichier']['type'];

    if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') && !strstr($type_file, 'png') ) {
        exit("Le fichier n'est pas une image");
    }

    // on copie le fichier dans le dossier de destination
    $name_file = isset($_FILES['fichier']['name'])?$_FILES['fichier']['name']:NULL;

    if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )  {
      exit("Impossible");
    }else{  
      // ICI tu places le code qui va insérer en BDD !
      //par exemple :
      $sql = "UPDATE users SET avatar = '$name_file' WHERE username = '$username'";
      mysql_query($sql, $dblink) or die('Requête invalide : ' . mysql_error() . " <br><br> REQUETE : <br>". $sql);
      echo "Le fichier a bien été uploadé";
    }  
   }else{
      echo " Erreur ! La variable FILES['fichier']['tmp_name'] n'existe pas !";
   }  
  }else{
    echo " Erreur ! La variable 'upload' n'existe pas !";
  }
}else{
 echo " Erreur ! Aucun Username défini ! ";
}
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
8 juin 2015 à 20:57
Je ne vois pas de différence avec le code que je t'ai donné.
Par contre.. oui il faut ajouter la connexion à la BDD.

Pour cela, je t'invite à mettre ton script de connexion à la BDD dans un fichier.. puis à l'inclure au début de ton script ( de préférence avec un REQUIRE_ONCE )

PS: Si la question est résolue..
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

Cordialement,
Jordane
0
Kearnen Messages postés 36 Date d'inscription jeudi 4 juin 2015 Statut Membre Dernière intervention 13 juin 2015 1
Modifié par Kearnen le 8/06/2015 à 21:05
Parcontre l'image n'est pas affiché, voilà le code que j'ai mis si tu peux me corrigé stp ^^ :
 <?php 
 include_once('../membre/lol.php'); // Inclusion de la connexion à MySQL
 
  $sql = 'SELECT avatar FROM users WHERE username="'.$_SESSION['username'].'"';
  $query = mysql_query($sql, $dblink); // Envoi de la requête à la base de données
  
  $avatar = $fetch['avatar'];
?>
 <img src ="../membre/upload/<?php $avatar; ?>" height="200" width="200" alt="avatar">
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705 > Kearnen Messages postés 36 Date d'inscription jeudi 4 juin 2015 Statut Membre Dernière intervention 13 juin 2015
8 juin 2015 à 21:11
Elle vient d'où ta variable $fetch ??

Normalement... il te faut faire une boucle :
<?php 
 require_once('../membre/lol.php'); // Inclusion de la connexion à MySQL
 
  $sql = 'SELECT avatar FROM users WHERE username="'.$_SESSION['username'].'"';
  $query = mysql_query($sql, $dblink); // Envoi de la requête à la base de données
  
while ($fetch= mysql_fetch_assoc($query)) {
 $avatar = $fetch['avatar'];
 echo "<img src ='../membre/upload/$avatar' height='200' width='200' alt='avatar'>";
}

0
Kearnen Messages postés 36 Date d'inscription jeudi 4 juin 2015 Statut Membre Dernière intervention 13 juin 2015 1
8 juin 2015 à 21:14
Merci de m'avoir corrigé, c'est bon l'image est bien affiché, tu es le meilleur :) Et merci d'avoir consacré autant de temps pour m'aidé :) !
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
8 juin 2015 à 21:22
:-)

Si la question est résolue..
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

Cordialement,
Jordane
0
Kearnen Messages postés 36 Date d'inscription jeudi 4 juin 2015 Statut Membre Dernière intervention 13 juin 2015 1
4 juin 2015 à 21:42
Désolé je suis pas trés fort, tu aurais skype pour parler sa sera plus simple ?
-1
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
4 juin 2015 à 21:48
Désolé .. mais
1 - Je ne donne pas mon Skype à n'importe qui (sans connaitre...)
2 - Le FORUM est là pour aider ... pas besoin de chat pour réussir
0
Kearnen Messages postés 36 Date d'inscription jeudi 4 juin 2015 Statut Membre Dernière intervention 13 juin 2015 1
4 juin 2015 à 21:49
D'acc pas de problème sinon c'est lequel le code que tu veux ?
0