Page 1 sur 2

Upload dans un dossier précis

Posté : 18 mars 2006, 19:35
par alexdarcy
Re bonjour

Voilà j'ai une formulaire qui envoie les enregistrements directement dans une table. J'aimerai également pouvoir uploader une image correspondant avec les renseignements.
Bien.
Ci dessous j'ai le script add.php
<?php 
// On commence par récupérer les champs 
if(isset($_POST['nom']))      $nom=$_POST['nom'];
else      $nom="";

if(isset($_POST['titre']))      $titre=$_POST['titre'];
else      $titre="";

if(isset($_POST['adresse']))      $adresse=$_POST['adresse'];
else      $adresse="";

if(isset($_POST['telephone']))      $telephone=$_POST['telephone'];
else      $telephone="";

if(isset($_POST['fax']))      $fax=$_POST['fax'];
else      $fax="";

if(isset($_POST['mail']))      $mail=$_POST['mail'];
else      $mail="";

if(isset($_POST['agent1']))      $agent1=$_POST['agent1'];
else      $agent1="";

if(isset($_POST['mail1']))      $mail1=$_POST['mail1'];
else      $mail1="";

if(isset($_POST['agent2']))      $agent2=$_POST['agent2'];
else      $agent2="";

if(isset($_POST['mail2']))      $mail2=$_POST['mail2'];
else      $mail2="";

if(isset($_POST['agent3']))      $agent3=$_POST['agent3'];
else      $agent3="";

if(isset($_POST['mail3']))      $mail3=$_POST['mail3'];
else      $mail3="";

if(isset($_POST['img']))      $img=$_POST['img'];
else      $img="";


     
    { 
       // connexion à la base
$db = mysql_connect('localhost', 'agence', 'xxx')  or die('Erreur de connexion '.mysql_error());
// sélection de la base  

    mysql_select_db('agences',$db)  or die('Erreur de selection '.mysql_error()); 
     
    // on écrit la requête sql 
    $sql = "INSERT INTO agences_tbl(ID,nom, titre, adresse, telephone,fax, mail, agent1, mail1, agent2, mail2, agent3, mail3, id_img) VALUES('','$nom','$titre','$adresse','$telephone','$fax','$mail','$agent1','$mail1','$agent2','$mail2','$agent3','$mail3','$img')"; 
     
    // on insère les informations du formulaire dans la table 
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 

$path = "logo/";

    // on affiche le résultat pour le visiteur 
    echo '<a href="http://www.castingsurf.com/agences/ad_agents.htm">Vos infos on été ajoutées.</a>';


    mysql_close();  // on ferme la connexion 
    }  
?> 
Le problème est, si l'envoi de l'image à l'air de se faire, je ne sais pas ou elle va !!!!
Comment se passe le dossier de destination de l'image, ici je l'ai nommé "logo" ( $path = "logo/"; ) mais je ne sais pas si c'est bon.

:oops:

Posté : 18 mars 2006, 19:42
par Lorenzo
il y a rien la dedans pour le deplacement/envoit d'une image :lol:

juste stockage de données dans un BD

Re: Upload dans un dossier précis

Posté : 18 mars 2006, 19:51
par Truc
Le problème est, si l'envoi de l'image à l'air de se faire, je ne sais pas ou elle va !!!!
Pas sûr du tout que l'image bouge où que ce soit :wink:
Regarde la FAQ pour l'upload

Posté : 18 mars 2006, 20:02
par alexdarcy
voici le code html du formulaire ad.agents.html d'où partent les enregistrements ...
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Nouvelle page 1</title>
</head>

<body>
<form method="POST" action="add.php">
Nom : <input type="text" name="nom" size="46" value="" maxlength="35"><br>
Titre : <input type="text" name="titre" size="46" value="" maxlength="35"><br>
Adresse : <input type="text" name="adresse" size="100" value="" maxlength="70"><br>
Téléphone : <input type="text" name="telephone" size="46" value="" maxlength="70"><br>
Fax : <input type="text" name="fax" size="46" value="" maxlength="70"><br>
Mail : <input type="text" name="mail" size="70" value="" maxlength="70"><br>
Agent 1 : <input type="text" name="agent1" size="46" value="" maxlength="255"><br>
Mail 1 : <input type="text" name="mail1" size="70" value="" maxlength="255"><br>
Agent 2 : <input type="text" name="agent2" size="46" value="" maxlength="255"><br>
Mail 2 : <input type="text" name="mail2" size="70" value="" maxlength="255"><br>
Agent 3 : <input type="text" name="agent3" size="46" value="" maxlength="255"><br>
Mail 3 : <input type="text" name="mail3" size="70" value="" maxlength="255">
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>
<center>
<input type="hidden" name="img" value=""><input name="NomFichier" type="file" size="16">
<br>
<input type="submit" value="Envoyer" name="envoyer">
</center>
</p>
</form>

</body>

</html>

l'upload est donc bon, non ?

:oops:

Posté : 18 mars 2006, 20:13
par Lorenzo
non, un formulaire d'envoit de fichiers ressemblerait plutot a ca :
<form method="post" action="popImg.php" name="formulaireImg" enctype="multipart/form-data">
	<div class="adminnote" style="width:650px">
		<div align="left">
			<h5>Choix de l'image à envoyer sur le Serveur :</h5>
			<div align="center">
				<input type="file" name="img" /><br /><br />
				<input type="submit" value="Validation" id="validChoixAction" name="validChoixAction" />
			</div>
		</div>
	</div>
</form>
parties importantes :
enctype="multipart/form-data"
<input type="file"

Posté : 19 mars 2006, 03:55
par alexdarcy
Ouh la difficile !
J'ai un dossier sur ftp qui se nomme "images" et j'aimerai que les images téléchargées atterissent dans ce dossier et qu'en plus elles aient un ID propre !

L'image téléchargée fait par formulaire est simultanément accompagnée de renseignements, lesquels atterissent dans une table !

Je sais po si je suis clair

Mumm !
:oops:

Posté : 19 mars 2006, 04:07
par Lorenzo
je crois pas avoir compris ton probleme ... il est 3h et je bosse depuis 8h du matin sur une connerie de script.
tu veux envoyer des variables en + de l'image a partir du meme formulaire ?

tu peux tres bien le faire :wink:


ou alors si tu veux modifier le nom de l'image apres le telechargement, tu as une fonction move_uploaded_file qui permet de la deplacer et au passage de la renommer :wink:

Posté : 19 mars 2006, 04:09
par alexdarcy
je crois pas avoir compris ton probleme ... il est 3h et je bosse depuis 8h du matin sur une connerie de script.
tu veux envoyer des variables en + de l'image a partir du meme formulaire ?

tu peux tres bien le faire :wink:


ou alors si tu veux modifier le nom de l'image apres le telechargement, tu as une fonction move_uploaded_file qui permet de la deplacer et au passage de la renommer :wink:
Oui mais comment indiquer le dossier de réception de l'image ??
Voici mon formulaire
http://www.castingsurf.com/agences/ad_agents.htm

:oops:

Posté : 19 mars 2006, 04:26
par Lorenzo
ahhhhhhhhhhhhhhhhhhhhhhhhh ... j'me disais bien que j'avais pas tout compris :lol:

c'est pas grave, t'inquiete pas, du moment que l'image est bien envoyé, y a pas de problemes pour la deplacer/renommer/....


apres l'envoit, ton code PHP qui fait la verif+deplacement doit ressembler a ceci :
$stFichier = $_FILES['img']['name'];
$stNom = substr($stFichier, 0, strrpos($stFichier, '.'));
$stExt = substr($stFichier, strrpos($stFichier, '.')+1);
$stRepDest = $stRepPhotos.$tbClient[$_REQUEST['nbIdClient']][2].'/';

$stExt = strtolower($stExt);
if( !in_array($stExt, array('jpg', 'jpeg')) ){
	$nbError = 3;
	$stError = "Erreur dans l'extension de l'image, ce n'est pas une image ou le format n'est pas acceptable :<br />".$_FILES['img']['name'];
	break;
}

if( file_exists($stRepDest.$stFichier) ){
	$stNom = $stNom . '1';
	$stFichier = $stNom . '.' . $stExt;
}

if( !is_uploaded_file($_FILES['img']['tmp_name']) ){
	$nbError = 3;
	$stError = "Erreur lors de l'envoie de l'image : <br>".($_FILES['img']['name']).'<br>'.($_FILES['img']['tmp_name']);
	break;
}

if( !move_uploaded_file($_FILES['img']['tmp_name'], $stRepDest.$stFichier) ){
	$nbError = 3;
	$stError = "Erreur lors du déplacement de l'image : <br>".($_FILES['img']['tmp_name']).'<br>'.($stRepDest.$stFichier);
	break;
}

$nbError = 1;
$stError = "Envoie et stockage de l'image réussi";

ne fait pas trop attention a la programmation, c'est un tres vieux script que j'ai fait avant de me servir de la POO :?

parties importantes :
$_FILES
$_REQUEST
is_uploaded_file
move_uploaded_file

Posté : 19 mars 2006, 04:47
par alexdarcy
lol
Merci Lorenzo .. mais ton script ci dessus puis je l'intégrer dans le fichier php add.php (post) ci dessous :
<?php 
// On commence par récupérer les champs 
if(isset($_POST['nom']))      $nom=$_POST['nom'];
else      $nom="";

if(isset($_POST['titre']))      $titre=$_POST['titre'];
else      $titre="";

if(isset($_POST['adresse']))      $adresse=$_POST['adresse'];
else      $adresse="";

if(isset($_POST['telephone']))      $telephone=$_POST['telephone'];
else      $telephone="";

if(isset($_POST['fax']))      $fax=$_POST['fax'];
else      $fax="";

if(isset($_POST['mail']))      $mail=$_POST['mail'];
else      $mail="";

if(isset($_POST['agent1']))      $agent1=$_POST['agent1'];
else      $agent1="";

if(isset($_POST['mail1']))      $mail1=$_POST['mail1'];
else      $mail1="";

if(isset($_POST['agent2']))      $agent2=$_POST['agent2'];
else      $agent2="";

if(isset($_POST['mail2']))      $mail2=$_POST['mail2'];
else      $mail2="";

if(isset($_POST['agent3']))      $agent3=$_POST['agent3'];
else      $agent3="";

if(isset($_POST['mail3']))      $mail3=$_POST['mail3'];
else      $mail3="";

if(isset($_POST['img']))      $img=$_POST['img'];
else      $img="";


     
    { 
       // connexion à la base
$db = mysql_connect('localhost', 'agence', 'xxx')  or die('Erreur de connexion '.mysql_error());
// sélection de la base  

    mysql_select_db('agences',$db)  or die('Erreur de selection '.mysql_error()); 
     
    // on écrit la requête sql 
    $sql = "INSERT INTO agences_tbl(ID,nom, titre, adresse, telephone,fax, mail, agent1, mail1, agent2, mail2, agent3, mail3, id_img) VALUES('','$nom','$titre','$adresse','$telephone','$fax','$mail','$agent1','$mail1','$agent2','$mail2','$agent3','$mail3','$img')"; 
     
    // on insère les informations du formulaire dans la table 
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 

$path = "logo/";

    // on affiche le résultat pour le visiteur 
    echo '<a href="http://www.castingsurf.com/agences/ad_agents.htm">Vos infos on été ajoutées.</a>';


    mysql_close();  // on ferme la connexion 
    }  
?> 

:wink:

Posté : 19 mars 2006, 04:57
par Lorenzo
oui, tu peux :)
tu dois juste comprendre le systeme avant d'attaquer la chose



il y a une pitite bizarerie avec ton formulaire :

Code : Tout sélectionner

<input type="hidden" name="img" value=""> <input name="NomFichier" type="file" size="16">
pourquoi tu mets ceci ?
<input type="hidden" name="img" value="">

Posté : 19 mars 2006, 05:26
par alexdarcy
dois je mettre ceci :

<input type="file" name="img" value=""><input name="NomFichier" type="file" size="16"> ???

je vais essayer de l'intégrer ..
:wink:

ps comprendre le system cad ?? :oops:

Posté : 19 mars 2006, 05:35
par alexdarcy
dis moi là :
$stRepDest = $stRepPhotos.$tbClient[$_REQUEST['nbIdClient']][2].'/';
je dois mettre le nom de ma table, hein ?

:oops:

Posté : 19 mars 2006, 05:44
par Lorenzo
juste ceci :
<input name="NomFichier" type="file" size="16">


----------
"comprendre le systeme" -> comprendre comment fonctionne l'envoit de fichier par POST et le test de cet envoit .... etc


----------
cette ligne n'a rien a voir avec ton probleme, j'aurais du epurer l'exemple avant de te l'envoyer ....
$stRepDest = $stRepPhotos.$tbClient[$_REQUEST['nbIdClient']][2].'/';

j'ai marqué les parties importantes dans le message precedent, c'etait surtout sur ces parties que tu dois porter ton attention et tes recherches, le script que j'ai copié/collé etait surtout la pour que tu ais un exemple, les noms des variables et autres actions ne correspondent pas obligatoirement a ce que tu veux faire.

fait un print_r() sur :
$_FILES ( http://fr2.php.net/manual/fr/features.file-upload.php)
$_REQUEST (logiquement tu peux la zapper mais peux aussi etre utile http://fr2.php.net/manual/fr/reserved.v ... es.request)
et tu verras ce qu'elles contiennent et donc ce que tu dois faire de ces tableaux.

Posté : 19 mars 2006, 06:06
par alexdarcy
oh la la :oops: :oops: :oops:

ca va etre trop difficile pour mes petites connaissances en php ...

Ce que je n'arrive pas à comprendre entre autre est: comment l'image va t-elle se retrouver dans mon dossier "images" sur le serveur ???

:cry: