IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Formulaire d'envoie d'une image


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut Formulaire d'envoie d'une image
    Bonjour,

    Voilà j'aimerais insérer une image et ça marche pas


    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    echo $_FILES['affichefilm']['error'];
    if ((isset($_FILES['affichefilm']['fichier'])&&($_FILES['affichefilm']['error'] == 0))) {
    $chemin_destination = "../images/films/'';
    move_uploaded_file($_FILES['affichefilm']['tmp_name'], $chemin_destination.$_FILES['affichefilm']['name']);
    echo 'Coucou';
    };
    if (isset($_POST['nomfilm']) AND isset($_POST['acteurfilm'])  AND isset($_POST['realisateurfilm'])  AND isset($_POST['synopsis'])  AND isset($_POST['bafilm']) AND isset($_POST['dureefilm'])  AND isset($_POST['datedebutfilm'])  AND isset($_POST['datefinfilm']))
    {
    [...]
    $affichefilm = $_FILES['affichefilm']['name'];
    [...]
    mysql_query("INSERT INTO film VALUES('', '".$nomfilm."', 'images/films/".$affichefilm."', '".$synopsis."', '".$acteurfilm."', '".$realisateurfilm."', '".$dureefilm."', '".$bafilm."', '', '', '".$datedebutfilm."', '".$datefinfilm."')");
    mysql_close();
    };
    ?>
    Le premier echo m'affiche bien 0
    Le deuxième ne s'affiche pas du tout (donc le if n'est pas justifié...)

    ça s'enregistre bien dans ma base de donnée.
    Quand je navigue dans mon arbo de site :


    site
    ---toutes mes page.php
    ---images
    ------toutes mes images
    ------films
    ---------toutes mes images de films



    En gros ça donne ça, mais y'a aucune photo que j'upload...

    Quelqu'un aurait une idée ?

    Merci d'avance

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    $_FILES['affichefilm']['fichier'] est censé correspondre a quoi ?

  3. #3
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    Effectivement...

    Je viens de corriger mon erreur ^^'

    Voici mon nouveau code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ((isset($_FILES['affichefilm'])&&($_FILES['affichefilm']['error'] == 0))) 
    	{
    		move_uploaded_file($_FILES['affichefilm']['tmp_name'], 'images/films/' . basename ($_FILES['affichefilm']['name']));
    }

    En revanche, j'ai recherché plusieurs info sur le net pour faire une sorte de compteur. L'image uploadé 1 sera : 1.jpg et ainsi de suite. Mais je n'y arrive pas. Faut-il utiliser la commande TARGET ?

    Merci en tout cas

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 102
    Points : 142
    Points
    142
    Par défaut
    tu as 2 possibilités soit:
    - faire une requête sql pour récupérer le dernier enregistrement genre "ORDER BY id DESC LIMIT 0,1"...==> le résultat + 1
    - récupérer l'id courant de ton enregistrement "mysql_insert_id()"

    dans les deux cas, cela suppose que ta table possède un champ auto-incrémenté !

  5. #5
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    ma table possède bien un champ qui s'auto-incrémente, et c'est l'ID.

    Chaque film est auto-incrémenté de 1, donc on pourrait simplement prendre l'id pour mettre sur la photo si je comprends bien ? xD

    Je vais essayer ^^

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 102
    Points : 142
    Points
    142
    Par défaut
    oui c'est simple.
    Comme ton champ "id" est auto-incrémenté, tu n'auras jamais de doublon sur le nommage de tes fichiers uploadés et tu connaitras toujours le propriétaire du fichier grace à son identifiant!

    bonne continuation

  7. #7
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    bon, après 1h d'essai, j'arrive enfin à enregistrer l'image dans le dossier sous le nom de la ligne...

    Mais maintenant pour afficher le bon lien dans le INSERT INTO c'est plus dur ^^'
    Comment faire pour que ma donnée à rentrer dans ma base soit = à "images/films/'$son_id'" ?
    Car là avec mysql_insert_id() je peux pas le mettre dans le INSERT, ça m'affichera toujours 0 ce qui est normal ^^

    Une astuce ? :o



    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if ((isset($_FILES['affichefilm'])&&($_FILES['affichefilm']['error'] == 0))) 
    			{
    				$ext = $_FILES['affichefilm']['name'];
    				$ext = strrchr(strtolower($ext), '.');
    				$nomfichier = mysql_insert_id().$ext;
    				move_uploaded_file($_FILES['affichefilm']['tmp_name'], 'images/films/'.$nomfichier);
    }

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 102
    Points : 142
    Points
    142
    Par défaut
    je n'ai pas vu l'intégralité de ton script mais effectivement actuellement, ce ne sera pas bon !

    Vu comment est fait ton code, tu dois :
    1- enregistrer tes données dans ta table INSERT INTO
    2- récupérer l'id courant avec mysql_insert_id()
    3- utiliser la fonction "move_uploaded_file()" avec les bons arguments
    4- faire un update sur ta table avec pour référence ta variable = mysql_insert_id() pour changer le chemin d'accès genre :
    $maVariable = mysql_insert_id();
    $monFichier = 'images/films/'.$maVariable.$ext;
    "UPDATE maTable SET chemin_photo='".$monFichier."' WHERE id='".$maVariable."';"

    Voilà

  9. #9
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    EDIT : ah ça marche ^^'

    Merci (j'm'étais planté dans ma table, j'ai inversé un champ ^^)


    Merci je vais essayé de continuer

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 102
    Points : 142
    Points
    142
    Par défaut
    J'ai repris un peu ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    mysql_query("INSERT INTO `film`(`champ1`,`champ2`,`champ3`) VALUES('".utf8_decode($nomfilm)."', 'images/', '".utf8_decode($synopsis)."', '".utf8_decode($acteurfilm)."', '".utf8_decode($realisateurfilm)."', '".utf8_decode($dureefilm)."', '".utf8_decode($bafilm)."', '', '', '".$datedebutfilm."', '".$datefinfilm."')") or die(mysql_error());
    		echo '<h2>Nouveau film enregistré</h2><br /><br /><br /><br />';
    		$maVariable = mysql_insert_id();
    		$nomfichier = 'images/films/'.$maVariable.$ext;
     
    		move_uploaded_file($_FILES['affichefilm']['tmp_name'], $nomfichier);
    		mysql_query("UPDATE `film` SET `affichefilm`='".$nomfichier."' WHERE `id`='".$maVariable."'");
    		};

Discussions similaires

  1. Envoi d'une image à travers un formulaire
    Par tatutatu2009 dans le forum Langage
    Réponses: 27
    Dernier message: 09/04/2011, 02h55
  2. Envoi d'une image par e-mail depuis un formulaire
    Par caradhras dans le forum Langage
    Réponses: 2
    Dernier message: 25/09/2008, 20h13
  3. Envoi d'une image sur un serveur + update table
    Par rickways dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/06/2007, 21h15
  4. Réponses: 3
    Dernier message: 02/12/2005, 14h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo