envoi nom fichier dans bdd

Eléphant du PHP | 94 Messages

13 juin 2010, 12:25

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>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

13 juin 2010, 23:40

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 :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 94 Messages

14 juin 2010, 11:25

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

Eléphant du PHP | 94 Messages

14 juin 2010, 11:30

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

ViPHP
ViPHP | 5462 Messages

14 juin 2010, 11:32

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 ?

Eléphant du PHP | 94 Messages

14 juin 2010, 12:15

dans la bdd

ViPHP
ViPHP | 5462 Messages

14 juin 2010, 13:17

dans la bdd
il devrai etre dans ton php, montre ton fichier

Eléphant du PHP | 94 Messages

14 juin 2010, 13:39

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');
?>

ViPHP
ViPHP | 5462 Messages

14 juin 2010, 13:47

y'a pas tout le fichier la ? si ? ton erreur est toujour ligne 27 ?

Eléphant du PHP | 94 Messages

14 juin 2010, 14:11

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>

ViPHP
ViPHP | 5462 Messages

14 juin 2010, 14:13

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)

Eléphant du PHP | 94 Messages

14 juin 2010, 14:24

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 !

ViPHP
ViPHP | 5462 Messages

14 juin 2010, 14:28

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

Eléphant du PHP | 94 Messages

14 juin 2010, 14:35

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,,,

ViPHP
ViPHP | 5462 Messages

14 juin 2010, 14:37

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 ?