Page 1 sur 3

envoi nom fichier dans bdd

Posté : 13 juin 2010, 12:25
par jimix
bonjour,
je cherche un moyen qui permet à des pers qui visite mon site d'envoyer un fichier mais j'aimerais que le nom du fichier aille dans la bbd avec moyen de le modifier. ou un tuto

par avance merci pour votre aide

ci dessous code qui permet d'envoyer le fichier :
<?php

if(isset($_FILES['photo']))
{
  // params
  unset($erreur);
  $extensions_ok = array('png', 'gif', 'jpg', 'jpeg','doc');
  $taille_max = 100000;
  $dest_dossier = 'c:/texte';
  // vérifications
  if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
  {
    $erreur = 'Veuillez sélectionner un fichier de type png, gif, jpg ou doc !';  
  }
  elseif( file_exists($_FILES['photo']['tmp_name']) 
          and filesize($_FILES['photo']['tmp_name']) > $taille_max)
  {
    $erreur = 'Votre fichier doit faire moins de 100Ko !';
  }
  // copie du fichier
  if(!isset($erreur))
  {
    $dest_fichier = basename($_FILES['photo']['name']);
    // formatage nom fichier
    // enlever les accents
    $dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    // remplacer les caracteres autres que lettres, chiffres et point par _
    $dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
    // copie du fichier
    move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier);
  }
}

?>
<p>
<!-- Erreur ? -->
<?php 
if(isset($erreur)){
  echo '<p>', $erreur ,'</p>';
}
?>
<!-- Formulaire -->
<!-- Attention, ne de ne pas oublier le  enctype="multipart/form-data" -->
<form method="POST" action="30.php" enctype="multipart/form-data">
<!-- Limiter la taille des fichiers à 100Ko -->
<input type="hidden" name="MAX_FILE_SIZE" value="100000" /> 
<fieldset>
<legend>Envoi de fichiers</legend>
<!-- champs d'envoi de fichier, de type file -->
<p><label for="Fichier">Photo :</label><input type="file" name="photo" /></p>
<!-- bouton d'envoi -->
<p><input type="submit" name="envoi" value="Envoyer les fichiers" /></p>
</legend>
</fieldset>
</form>
</body>
</html>

Re: envoi nom fichier dans bdd

Posté : 13 juin 2010, 23:40
par Ryle
Hello !

Ce n'est pas plus compliqué que de stocké n'importe quelle autre information en provenance de l'utilisateur dans ta base de données :)

Dans ton code, le nom du fichier est stocké dans ta variable $dest_fichier. Rien ne t'empêche d'enregistré celui-ci dans ta base de données. Et si tu veux permettre à l'utilisateur de le renommer, il suffit de lui proposer un champ de formulaire dans lequel il pourra saisir le nouveau nom. Il ne te restera plus alors qu'à renommé le fichier et faire un update de ta base :)

Re: envoi nom fichier dans bdd

Posté : 14 juin 2010, 11:25
par jimix
merci pour votre rep. ça paraît simple quand tu l'expliques mais lorsque que j'essaie c plus compliqué.
j'ai compris mais je ne sais comment le mettre en place.

peut-être comme cela: ??? et en ayant modifié ma table biensûr

mysql_query("INSERT INTO membres VALUES ('','$basename'')") or die ('Erreur : '.mysql_error()); //insertion dans la bdd

Re: envoi nom fichier dans bdd

Posté : 14 juin 2010, 11:30
par jimix
cela me donne ça comme erreur

Notice: Undefined index: basename in C:\Program Files\EasyPHP-5.3.1\www\site\verification.php on line 27

Re: envoi nom fichier dans bdd

Posté : 14 juin 2010, 11:32
par stealth35
cela me donne ça comme erreur

Notice: Undefined index: basename in C:\Program Files\EasyPHP-5.3.1\www\site\verification.php on line 27
$basename est definie ou ?

Re: envoi nom fichier dans bdd

Posté : 14 juin 2010, 12:15
par jimix
dans la bdd

Re: envoi nom fichier dans bdd

Posté : 14 juin 2010, 13:17
par stealth35
dans la bdd
il devrai etre dans ton php, montre ton fichier

Re: envoi nom fichier dans bdd

Posté : 14 juin 2010, 13:39
par jimix
voila
$basename=formulaires($_POST['basename']);


//// VERIFICATIONS BANALES ////
if(!$mdp || !$mdp2 || strlen($mdp) < 5)
	{
	echo'Votre mot de passe ou sa confirmation est inexisant ou votre mot de passe fait moins de 5 carractères<br /><a href="inscription.php" onClick="history.back()">Retour</a>';
	include_once('bas.php');
return FALSE;
	}
if($mdp!=$mdp2)
	{
	echo'Votre mot de passe n\'est pas le meme que sa confirmation<br /><a href="inscription.php" onClick="history.back()">Retour</a>';
	include_once('bas.php');
return FALSE;
	}
if(!$pseudo || strlen($pseudo) > 15)
	{
	echo'Votre pseudo est inexisant ou fait plus de 15 carractères<br /><a href="inscription.php" onClick="history.back()">Retour</a>';
	include_once('bas.php');
return FALSE;
	}
if(!$email)
   	{
	echo'Votre e-mail est innexistant.<br /><a href="inscription.php" onClick="history.back()">Retour</a>';
	include_once('bas.php');
return FALSE;
   	}
$nom = $_POST['nom']; 
if(empty($nom))
{
print("<center>Le '<b>nom</b>' est vide !</center>");
exit();
} 
	
//// VERIFICATIONS DES EXISTANCES ////
$reponse_mail=mysql_query("SELECT email FROM membres WHERE email='$email'") or die ('Erreur : '.mysql_error());	//verification si e-mail existe déjà
$count_mail=mysql_num_rows($reponse_mail);
if($count_mail == 1)
	{
	echo'Cet e-mail existe déjà.<br /><a href="inscription.php" onClick="history.back()">Retour</a>';
	include_once('bas.php');
return FALSE;
	}
$reponse_pseudo=mysql_query("SELECT pseudo FROM membres WHERE pseudo='$pseudo'") or die ('Erreur : '.mysql_error());	//verification si pseudo existe déjà
$count_pseudo=mysql_num_rows($reponse_pseudo);
if($count_pseudo == 1)
	{
	echo 'Ce pseudo existe déjà.<br /><a href="inscription.php" onClick="history.back()">Retour</a>';
	include_once('bas.php');
return FALSE;
	}
		
	for ($ligne=0;$ligne<30;$ligne++)		//Création d'un identifiant aléatoire
		{
		@$session.=substr('0123456789AZERTYUIOPMLKJHGFDSQWXCVBN',(rand()%(strlen('0123456789AZERTYUIOPMLKJHGFDSQWXCVBN'))),1);
		}

		$mdp=md5($mdp);		//Codage du mot de passe
		mysql_query("INSERT INTO membres VALUES ('','$session','$pseudo','$mdp','$email','$nom','$prenom','$adresse','$comp','$code','$ville','$nom2','$prenom2','$adresse2','$comp2','$code2','$ville2','$basename')") or die ('Erreur : '.mysql_error());	//insertion dans la bdd
echo'Merci de vous vous etre inscrit à '.$nom_du_site.'<br /><a href="profil.php">Identifiez vous !</a>';
include_once('bas.php');
?>

Re: envoi nom fichier dans bdd

Posté : 14 juin 2010, 13:47
par stealth35
y'a pas tout le fichier la ? si ? ton erreur est toujour ligne 27 ?

Re: envoi nom fichier dans bdd

Posté : 14 juin 2010, 14:11
par jimix
non il y a qu'une partie. voici celui qui concerne la partie joindre. pour info j'ai modifier le nom ce n'est plus basename mais photo

Notice: Undefined index: photo in C:\Program Files\EasyPHP-5.3.1\www\site\verification.php on line 27

ligne 27 :
$photo=formulaires($_POST['photo']);

<?php

if(isset($_FILES['photo']))
{
  // params
  unset($erreur);
  $extensions_ok = array('png', 'gif', 'jpg', 'jpeg','doc');
  $taille_max = 100000;
  $dest_dossier = 'c:/texte';
  // vérifications
  if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
  {
    $erreur = 'Veuillez sélectionner un fichier de type png, gif, jpg ou doc !';  
  }
  elseif( file_exists($_FILES['photo']['tmp_name']) 
          and filesize($_FILES['photo']['tmp_name']) > $taille_max)
  {
    $erreur = 'Votre fichier doit faire moins de 100Ko !';
  }
  // copie du fichier
  if(!isset($erreur))
  {
    $dest_fichier = basename($_FILES['photo']['name']);
    // formatage nom fichier
    // enlever les accents
    $dest_fichier = strtr($dest_fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    // remplacer les caracteres autres que lettres, chiffres et point par _
    $dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
    // copie du fichier
    move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier);
  }
}

?>
<p>
<!-- Erreur ? -->
<?php 
if(isset($erreur)){
  echo '<p>', $erreur ,'</p>';
}
?>
<!-- Formulaire -->
<!-- Attention, ne de ne pas oublier le  enctype="multipart/form-data" -->
<form method="POST" action="30.php" enctype="multipart/form-data">
<!-- Limiter la taille des fichiers à 100Ko -->
<input type="hidden" name="MAX_FILE_SIZE" value="100000" /> 
<fieldset>
<legend>Envoi de fichiers</legend>
<!-- champs d'envoi de fichier, de type file -->
<p><label for="Fichier">Photo :</label><input type="file" name="photo" /></p>
<!-- bouton d'envoi -->
<p><input type="submit" name="envoi" value="Envoyer les fichiers" /></p>
</legend>
</fieldset>
</form>
</body>
</html>

Re: envoi nom fichier dans bdd

Posté : 14 juin 2010, 14:13
par stealth35
au tout debut de ton code fais un
print_r($_POST);
et tu verras les valeurs qui viennent de ton formulaire (si il en manque une ou que le nom est diffèrent)

Re: envoi nom fichier dans bdd

Posté : 14 juin 2010, 14:24
par jimix
voila ce qu'il me met. aucune trace de photo


Array ( [pseudo] => m [email] => m [nom] => m [prenom] => m [adresse] => [comp] =>

Code : Tout sélectionner

=> [ville] => [nom2] => [prenom2] => [adresse2] => [comp2] => [code2] => [ville2] => [mdp] => mmmmm [mdp2] => mmmmm [color=#FF0000][MAX_FILE_SIZE] => 100000 [envoi] => Envoyer les fichiers[/color] ) Notice: Undefined index: photo in C:\Program Files\EasyPHP-5.3.1\www\site\verification.php on line 27 Merci de vous vous etre inscrit à Mon site.com Identifiez vous !

Re: envoi nom fichier dans bdd

Posté : 14 juin 2010, 14:28
par stealth35
voila ce qu'il me met. aucune trace de photo


Array ( [pseudo] => m [email] => m [nom] => m [prenom] => m [adresse] => [comp] =>

Code : Tout sélectionner

=> [ville] => [nom2] => [prenom2] => [adresse2] => [comp2] => [code2] => [ville2] => [mdp] => mmmmm [mdp2] => mmmmm [color=#FF0000][MAX_FILE_SIZE] => 100000 [envoi] => Envoyer les fichiers[/color] ) Notice: Undefined index: photo in C:\Program Files\EasyPHP-5.3.1\www\site\verification.php on line 27 Merci de vous vous etre inscrit à Mon site.com Identifiez vous ![/quote] ta mis $_POST['photo'] photo est dans $_FILES pas dans POST

Re: envoi nom fichier dans bdd

Posté : 14 juin 2010, 14:35
par jimix
ta mis $_POST['photo']

photo est dans $_FILES pas dans POST
[/quote]

oui j'ai bien mis cela
$photo=formulaires($_POST['photo']);
par contre comprends tu me dis que photo est dans files?? JE DOIS LES NOMMER FILES,,,

Re: envoi nom fichier dans bdd

Posté : 14 juin 2010, 14:37
par stealth35
ta mis $_POST['photo']

photo est dans $_FILES pas dans POST
oui j'ai bien mis cela
$photo=formulaires($_POST['photo']);
par contre comprends tu me dis que photo est dans files?? JE DOIS LES NOMMER FILES,,,[/quote]


c'est toi qu'a créer le script ou tu la récupérer quelque part ?