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 envoi de photo et traitement [PHP 4]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Par défaut Formulaire envoi de photo et traitement
    Bonjour a tous,

    Avant tous je tiens a vous remerciez de partager vos savoir, de la même occasion je tiens a vous souhaitez une bonne et heureuse année pour 2009.

    Cela fait fait un certain temps que je me creuse la tête comcernant ce formulaire, j'ai deux table qui ont été crées (image et rubrique avec une cléf primaire qui relie les deux table) .
    Ce formulaire doit me permettre de faire deux choses
    1) De récupérer une photo grace à "file" et de le copier dans un dossier selon la Rubrique (requete sql qui récupère les rubriques de ma base de donnée table rubrique)+ traitement lé aux type (jpg, pg, ect...)
    2) Le nom de la photo doit etre stocké dans ma base de donnée ainsi que tous les éléments lié a celle-ci.

    J'ai déja posté une fois mais voila avec la réponse qui ma été apporté je n'ai pas avancé. Je suis encore débutant dans le PHP et mysql.
    Votre aide sera très précieux.

    Voici mon formulaire d'envoie et de traiment

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    <?php
     
    echo "essaie d'envoie des photo vers la base de donnée";
     
    include ("inc_cnx.php");
     
    echo "<form action='inc_katofo.php' 
    enctype='multipart/form-data'
    	    method='post'>
    	Répertoire des images:<br/>
    	  <input type='file' name='katofo' size='40'/>
    	  <br/><br/> 
    	Rubrique: ";
    $query = "SELECT RubriqueID, RubriqueName FROM Rubrique 
    	  ORDER BY RubriqueName DESC";
    $result = mysql_query($query) or die("ERROR");
    echo "<select name='frm_select_rubrique'>";
    $Selected = 0;
    while ($row = mysql_fetch_array($result))
    {
      if($Selected == 0)
      {
        echo '<option value="', $row[0], '" selected="selected">', $row[1], 
    '</option>';
        $Selected = 1;
      }
      else
      {
        echo '<option value="', $row[0], '">', $row[1], '</option>';
      }
    }
    echo "</select>
    	<br/><br/>
    	<input type='submit' value='Ajouter images'/> 
    	</form>";
    ?>
    <?php 
     
    if( isset($_POST['katofo']) ) // si formulaire soumis 
    { 
    $content_dir = '../photos/.$RubriqueName.'/''; // dossier où sera déplacé le fichier 
     
    $tmp_file = $_FILES['katofo']['tmp_name']; 
     
    if( !is_uploaded_file($tmp_file) ) 
    { 
    exit("Le fichier est introuvable"); 
    } 
     
    // on vérifie maintenant l'extension 
    $type_file = $_FILES['katofo']['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['katofo']['name']; 
     
    if( !move_uploaded_file($tmp_file, $content_dir . $name_file) ) 
    { 
    exit("Impossible de copier le fichier dans $content_dir"); 
    } 
     
    echo "Le fichier a bien été uploadé"; 
    } 
     
    //ajout de l'image à la base de données
    $RubriqueID = '';
    $fichier = '';
     
    $Date = date("Y-m-d");
      $Time = date("H:i:s");
      $query = "INSERT INTO Image SET 
    		ImageID='NULL', 
    		RubriqueID='$RubriqueID',
    		ImageName='$fichier',
    		ImageDesc='', 
                   	ImageRes='', 
                   	ImageSize='',
    		Date='$Date',
    		Time='$Time'"; 
      $result = mysql_query($query); 
    ?>
    Lors de la validation du formulaire, je n'ai aucun message d'érreur mais rien n'est copié dans les différent endroit (dans le répertoire photos+rubrique et dans la base de donnée)

    Merci a vous de votre aide

  2. #2
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Bonjour,
    C'est parce que tu ne rentre pas dans ton IF :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( isset($_POST['katofo']) ) // si formulaire soumis
    Essaye simplement de faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(isset($_POST['katofo'])) // si formulaire soumis 
    { 
    echo "OK";
    } else {
    echo "KO";
    }
    Tu resteras toujours avec "KO" ...
    Ce que tu peux faire c'est ajouter un champs caché dans ton formulaire, et ensuite tu fais ton test dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <input type="hidden" name="test" id="test" />
    if(isset($_POST['test'])) // si formulaire soumis 
    {
    ...........

  3. #3
    Membre chevronné Avatar de d-Rek
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 438
    Par défaut
    @Jumano : il y a <input type='file' name='katofo' size='40'/>

    Ton répertoire de destination est-il en mode écriture ?
    Si non, il faut faire un CHMOD dessus.

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Par défaut
    Citation Envoyé par d-Rek Voir le message
    @Jumano : il y a <input type='file' name='katofo' size='40'/>

    Ton répertoire de destination est-il en mode écriture ?
    Si non, il faut faire un CHMOD dessus.
    Re,
    Je suis sur Windows xp, pour le CHMOD n'est pas nécessaire si je ne me trompe pas.
    J'ai apporté une modification au fichier
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    <?php
     
    echo "essaie d'envoie des photo vers la base de donnée";
     
    include ("inc_cnx.php");
     
    echo "<form action='inc_katofo.php' 
    enctype='multipart/form-data'
    	    method='post'>
    	Répertoire des images:<br/>
    	  <input type='file' name='katofo' size='40'/>
    	  <br/><br/> 
    	Rubrique: ";
    $query = "SELECT RubriqueID, RubriqueName FROM Rubrique 
    	  ORDER BY RubriqueName DESC";
    $result = mysql_query($query) or die("ERROR");
    echo "<select name='frm_select_rubrique'>";
    $Selected = 0;
    while ($row = mysql_fetch_array($result))
    {
      if($Selected == 0)
      {
        echo '<option value="', $row[0], '" selected="selected">', $row[1], 
    '</option>';
        $Selected = 1;
      }
      else
      {
        echo '<option value="', $row[0], '">', $row[1], '</option>';
      }
    }
    echo "</select>
    	<br/><br/>
    	<input type='submit' value='Ajouter images'/> 
    	</form>";
    ?>
    <?php 
     
    if(isset($_POST['katofo'])) // si formulaire soumis 
    { 
    echo "OK";
    } else {
    echo "KO";
    }
    { 
    $content_dir = '../photos/.$RubriqueName.'/''; // dossier où sera déplacé le fichier 
     
    $tmp_file = $_FILES['katofo']['tmp_name']; 
     
    if( !is_uploaded_file($tmp_file) ) 
    { 
    exit("Le fichier est introuvable"); 
    } 
     
    // on vérifie maintenant l'extension 
    $type_file = $_FILES['katofo']['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['katofo']['name']; 
     
    if( !move_uploaded_file($tmp_file, $content_dir . $name_file) ) 
    { 
    exit("Impossible de copier le fichier dans $content_dir"); 
    } 
     
    echo "Le fichier a bien été uploadé"; 
    } 
     
    //ajout de l'image à la base de données
    $RubriqueID = '';
    $fichier = '';
     
    $Date = date("Y-m-d");
      $Time = date("H:i:s");
      $query = "INSERT INTO Image SET 
    		ImageID='NULL', 
    		RubriqueID='$RubriqueID',
    		ImageName='$fichier',
    		ImageDesc='', 
                   	ImageRes='', 
                   	ImageSize='',
    		Date='$Date',
    		Time='$Time'"; 
      $result = mysql_query($query); 
    ?>


    lors de la validation du formulaire j'ai deux messages d'érreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Warning: Division by zero in E:\Program Files\EasyPHP 2.0b1\www\zimages\inc\inc_katofo.php on line 46
     
     
    Notice: Undefined index: katofo in E:\Program Files\EasyPHP 2.0b1\www\zimages\inc\inc_katofo.php on line 48


    la ligne 46 est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $content_dir = '../photos/.$RubriqueName.'/''; //
    dossier où sera déplacé le fichier


    et la ligne 48 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tmp_file = $_FILES['katofo']['tmp_name'];


    dans ma base de donnée une ligne vide est créer avec incrémentation mais pas de donnée liée au traitement du formulaire, dans le dossier de destination je n'est pas la photo/image que j'ai uploade.

    Merci de votre aide

  5. #5
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Re,
    Oui, j'avais bien vu qu'il avait un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type='file' name='katofo' size='40'/>
    Le fait de faire le test avec :
    ne fonctionne pas, c'est pour cela que j'indique de faire plutot le test sur un champs caché ....

    De plus il faut supprimer de ton code les deux "echo" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if(isset($_POST['katofo'])) // si formulaire soumis 
    { 
    echo "OK";
    } else {
    echo "KO";
    }
    { 
    $content_dir = '../photos/.$RubriqueName.'/''; // dossier où sera déplacé le fichier 
     
    $tmp_file = $_FILES['katofo']['tmp_name'];

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Par défaut
    re,
    J'ai remplacé la ligne suivant pour faire un test mais voila toujours rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(isset($_POST['katofo'])) // si formulaire soumis
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type='hidden' name='test' id='test' />
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if(isset($_POST['test'])) // si formulaire soumis
    ma table est incrémenté mais sans les infos, une ligne vide est créée à chaque fois et toujours pas de copie dans le dossier concernée.

    Je vous remercie de votre aide et de votre réactivité

    J'ai aussi retiré les deux

  7. #7
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Tes deux variables sont vides :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $RubriqueID = '';
    $fichier = '';
    Elles devraient plutot être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $RubriqueID = $_POST['frm_select_rubrique'];
    $fichier = $name_file ;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Formulaire - Envoi
    Par rockingstone dans le forum Langage
    Réponses: 1
    Dernier message: 19/08/2006, 13h55
  2. Formulaire. Envoi infos dans base mysql + envoi email
    Par Donald08 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 10/08/2006, 13h28
  3. Capture et envoie de photo
    Par infotron dans le forum Java ME
    Réponses: 6
    Dernier message: 27/07/2006, 14h45
  4. Formulaire envoie un .jpg
    Par Le Mad dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 24/05/2006, 17h41
  5. envoi de photo en attachement
    Par progpolice dans le forum Langage
    Réponses: 2
    Dernier message: 08/03/2006, 15h32

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