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

PHP & Base de données Discussion :

Upload de fichier [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 19
    Par défaut Upload de fichier
    Bonjour à tous

    Donc voilà j'ai un petit problème qui commence à me prendre la tête et donc j'ai besoin d'aide
    Avant toutes choses je ne suis pas un débutant en php mais pas loin.

    Je suis sur un projet visant a afficher des "callflow" entre les différents nœuds d'un réseau.
    Mon équipe, ayant commencé le projet, est parti sur la base de DotProject (pour ceux qui sont curieux)
    et ont implantés une fonction création, dessin, etc (je vous passe les détails).

    Toujours est il que nouveau venu dans l'équipe et pour me "faire les dents", je suis amené à optimiser certains aspect.

    Voilà pourquoi je veux sélectionner des images, via un <input type="file">, que j'associe à un numéro id afin de les ressortir le moment oportun.
    Ces images sont envoyés sur le serveur et leurs adresses mémorisés dans une base MySQL.

    Voici le 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
    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
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
     
    <html>
    <head>
     
    <?require("connexion.php");?>
    <?$rs_id=$_GET["rs_id"];?>
    <?
    $g1=mysql_query("select * from resource_entity where rs_id=$rs_id");
    $rs_name=mysql_result($g1,0,'rs_name');
    $rs_category=mysql_result($g1,0,'rs_category');
    $rs_type=mysql_result($g1,0,'rs_type');
    $rs_description=mysql_result($g1,0,'rs_description');
    $rs_pic=mysql_result($g1,0,'rs_pic');
    ?>
     
    <?
    if(isset($_POST["moda"])){
    $a=$_POST["rs_na"];
    $b=$_POST["rs_catego"];
    $c=$_POST["rs_ty"];
    $d=$_POST["rs_descripti"];
    $p=$_POST["rs_pic"];
     
    if($_POST["moda"]=="mod"){
    	mysql_query("UPDATE resource_entity SET rs_name='$a',rs_category='$b',rs_type='$c',rs_description='$d' WHERE rs_id='$rs_id'");
    	$rs_name=$a;
    	$rs_category=$b;
    	$rs_type=$c;
    	$rs_description=$d;
     
    }
    if($_POST["moda"]=="del"){
    	mysql_query("delete from resource_entity where rs_id=$rs_id");
     
    }
    print("<script>document.location.href=\"index.php?m=msc&a=rs\";</script>");
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    	   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    	<meta name="Description" content="dotProject Default Style" />
    	<meta name="Version" content="1.0" />
    	<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" />
    	<title>Updating <?echo $rs_name;?> </title>
    	<link rel="stylesheet" type="text/css" href="./style/default/main.css" media="all" />
    	<style type="text/css" media="all">@import "./style/default/main.css";</style>
     
     
     
    <script language="javascript">
    function modif(){
    var r=document.rs_update;
    r.moda.value="mod";
    r.method="POST";
    r.action="index.php?m=msc&a=modify_rs&rs_id=<?echo $rs_id?>";
    r.submit();
    }
     
    function del()
    {
    if(confirm("Are you sure you want to delete it?")==true)
    		{
    		var r=document.rs_update;
    		r.moda.value="del";
    		r.method="POST";
    		r.action="index.php?m=msc&a=modify_rs&rs_id=<?echo $rs_id?>";
    		r.submit();
    		}
    }
     
    </script>
     
    </head>
     
    <body>
     
    //tableau affichant les valeurs modifiable
    <p><a href="index.php?m=msc&a=rs">Back to Network elements</a></p>
    <form name='rs_update'>
    <input type=hidden name="moda">
     
     
                <table width="50%" border="0" class=std align="center">
     
                  <tr> 
                  <th height="20" colspan="3" align="center">Updating <?echo $rs_name;?></th>
                </tr>
                <tr> 
                    <td width="40%" height="31"> 
                      <div align="right"><b>Name </b></div>
                  </td>
                    <td width="60%" height="31" class=hilite align=left> 
                      <input type=text class=text name='rs_na' value="<?echo $rs_name;?>">
                    </td>
                </tr>
                <tr> 
                    <td width="40%" height="31"> 
                      <div align="right"><b>Category </b></div>
                  </td>
                    <td width="60%" height="31" class=hilite align=left> 
                      <input type=text name='rs_catego' value="<?echo $rs_category;?>" class=text>
                    </td>
                </tr>
                <tr> 
                    <td width="40%" height="31"> 
                      <div align="right"><b>Type </b></div>
                  </td>
                    <td width="60%" height="31" class=hilite align=left> 
                      <input type=text name='rs_ty' value="<? echo $rs_type;?>" class=text>
                    </td>
                </tr>
                <tr> 
                    <td width="40%" height="33"> 
                      <div align="right"><b>Description </b></div>
                  </td>
                    <td width="60%" height="33" class=hilite> 
                    <textarea cols=50 rows=4 name='rs_descripti' ><?echo $rs_description;?></textarea>
                    </td>
                </tr>
     
     
              </table>
    		  <br />
    		  <table width="50%" border="0" class=std align="center">
    				<td width="40%" height="31"> 
                      <div align="right"><b>Picture</b><br>Please only use file <br> that no exceed 4 ko</div>
    				</td>
    				<td>
    		<form enctype="multipart/form-data" method="post" action="" >
    			<font >
    			<input type="hidden" name="MAX_FILE_SIZE" value="4096" > <!-- 2^12 -->
    			<input type="file" name="image" id="image" >
    			<input type="submit" value="Send" >
    		        </font>
     
     
     
                    </td>
    			<td>	
    			<!-- affichage de l'image -->
    			<label><b>Visulisation</b></label>
    			<img src="adresse du répertoire"/<?echo $rs_pic;?>" />	
    			</td>
    			 </table>
     
    <p>
    <div align="center">
    <input type="button" class="button" style="width:100px;height:25px;" onclick="modif()" value="Update">
    <input type="button" class="button" style="width:100px;height:25px;" onclick="del()" value="Delete">
    </div>
    </p>
    </form>
    </body>
    </html>
    Vous remarquerez que je fait appel au début du script à "connexion.php" qui fait appel aux : logins, mdp, etc de la base MySQL
    mais aussi en fin de code à "traitement.php" dont voici le 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
    16
    17
    18
    19
    20
    21
    22
    23
     
    <?
    // transfert error
    if (isset($_FILES['image']) AND $_FILES['image']['error'] == 0)
    {
    // extension error
    											$infosfichier = pathinfo($_FILES['image']['name']);
    											$extension_upload = strtolower($infosfichier['extension']);
    //passage en tout minuscule de l'extension
    $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
    if (in_array($extension_upload, $extensions_autorisees))
    {
    													//Move
    													$nom="bdd_image/";//destination repertory
    $resultat = move_uploaded_file($_FILES['image']['tmp_name'],$nom . basename($_FILES['image']['name']));
    													if ($resultat) echo "Transfert sucessfull";
     
    													//Name into mysql							
    													$rs_pic = mysql_escape_string(file_get_contents($_FILES['image']['name']));
    													mysql_query("UPDATE resource_entity SET rs_pic = '".$rs_pic."' WHERE rs_id='".$rs_id."' ") or exit (mysql_error());			
    	}
    }
     ?>
    Bon voilà le problème :
    Tout marche séparément, j'ai réalisé des tests etc c'est cool

    Mais

    Lorsque j'appuie sur le bouton "Send" censé envoyer les infos du <input type="file">,
    non seulement le "traitement.php n'est pas éxécuté mais je reviens aussi à l'index principal de "DotProject"

    Quelqu'un aurait une idée?
    Je me tient à votre disposition si vous avez des questions bien entendu

    Merci d'avance

  2. #2
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    où se trouve la ligne de code qui fait la redirection vers la page d'index ?

  3. #3
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 19
    Par défaut
    Euh j'ai pas vraiment compris la question en fait

    Néanmoins, en essayant d'y répondre, j'ai trouvé la solution et l'explication...

    Explication :
    En fait DotProject ne va pas de pages en pages mais charge sur l'index tout les "modules". En gros nous ne bougeons pas de l'index mais nous accédons aux différentes fonctions en les chargeants...
    (Je sais pas si j'arrive à bien me faire comprendre ... Enfin personnellement je ne savais pas qu'on pouvait faire ça )
    Bref, lorsque je lançais le "Send" et que la page se rechargeait pour transmettre les infos, je rechargeais donc l'index du départ -_-...

    Solution :
    Si je ne peux pas recharger la page alors allons dans une autre, et si possible sans bouger de la première.
    Donc un tuto javascript, quelques casses tête et hop le tour est joué, une belle petite fenêtre pop up.
    Je fais donc apparaitre cette fenêtre qui va faire le travail sans toucher à la première page...

    voici le code

    Donc fonction javascript :

    function affichage_popup(nom_de_la_page, nom_interne_de_la_fenetre)
    {
    window.open (nom_de_la_page, nom_interne_de_la_fenetre, config='height=250, width=500, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, directories=no, status=no')
    }
    l'appel qui remplace le formulaire :

    <div><A HREF="javascript:affichage_popup('modules/msc/traitement.php','popup_1');"><b>Select Picture</b></A></div>
    et donc le fichier traitement.php :

    <html>
    <head>


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    <meta name="Description" content="dotProject Default Style" />
    <meta name="Version" content="1.0" />
    <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" />

    <link rel="stylesheet" type="text/css" href="main.css" media="all" />


    <?require("connexion.php");?>
    <?$rs_id=56;?>
    </head>
    <body>

    <?php
    // transfert error
    if (isset($_FILES['image']) AND $_FILES['image']['error'] == 0)
    {
    // extension error
    $infosfichier = pathinfo($_FILES['image']['name']);
    $extension_upload = strtolower($infosfichier['extension']);
    $extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');

    if (in_array($extension_upload, $extensions_autorisees))
    {
    //Move
    $nom="bdd_image/";//destination repertory
    $resultat = move_uploaded_file($_FILES['image']['tmp_name'],$nom . basename($_FILES['image']['name']));


    //Name into mysql
    $rs_pic = $_FILES['image']['name'];
    mysql_query("UPDATE resource_entity SET rs_pic = '".$rs_pic."' WHERE rs_id='56' ") or exit (mysql_error());

    }

    }

    ?>

    <table width="90%" border="0" class=std align="center">

    <tr>
    <th height="20" width="100%" colspan="3" align="center">Picture <?echo $rs_name;?>
    </th>
    </tr>
    <td width="35%" height="70">
    <div align="right"><b>Picture</b><br>Please only use file <br> that no exceed 4 ko</div>
    </td>
    <td width="70%" height="70">
    <form enctype="multipart/form-data" method="post" action="">
    <input type="hidden" name="MAX_FILE_SIZE" value="4096" ><!-- 2^12 -->
    <input type="file" name="image" id="image" >
    <input type="submit" value="Send" >
    </font>
    </form>

    <tr>
    <td align="right">
    <form method="post">
    <input type="button" value="Close Window" onclick="window.close()">
    </form>
    </td>
    </tr>
    </table>

    </body>
    </html>

    Voilà si ça peut aider quelqu'un d'autre

    Merci nosferapti pour l'inspiration

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

Discussions similaires

  1. [FTP] Problème pour uploader un fichier
    Par Crazyblinkgirl dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 07/01/2008, 22h21
  2. Upload de fichier par XMLHTTP
    Par Immobilis dans le forum ASP
    Réponses: 6
    Dernier message: 21/01/2005, 17h02
  3. upload de fichier
    Par 120 dans le forum ASP
    Réponses: 16
    Dernier message: 21/06/2004, 12h07
  4. Upload de fichiers sur un ftp
    Par Crazyblinkgirl dans le forum ASP
    Réponses: 10
    Dernier message: 20/06/2004, 11h55
  5. Upload de fichiers
    Par GDVL dans le forum ASP
    Réponses: 4
    Dernier message: 03/06/2004, 12h44

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