par
lebreton22 » 24 mars 2006, 23:41
bonsoir
Je m'interroge sur la manière d'enregistrer le nom du fichier uploadé dans ma BDD.
En début de fichier, la vatiable $_post['nom'] fonctionne bien mais au moment de mettre à jour la bdd,plus rien ! Est-ce que quelqu'un aurait une idée ? Merci
i-dessous le code :
<?php require_once('Connections/perso.php'); ?>
<?php
$colname_liaison = "1";
if (isset($_POST['nom'])) {
$colname_liaison = (get_magic_quotes_gpc()) ? $_POST['nom'] : addslashes($_POST['nom']);
}
mysql_select_db($database_perso, $perso);
$query_liaison = sprintf("SELECT * FROM pe2 WHERE NOM_USUEL = '%s'", $colname_liaison);
$liaison = mysql_query($query_liaison, $perso) or die(mysql_error());
$row_liaison = mysql_fetch_assoc($liaison);
$totalRows_liaison = mysql_num_rows($liaison);
if(isset($_FILES['photo']))
{
// params
unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 100000;
$dest_dossier = '/trombi2/';
// vérifications
if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
{
$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
}
elseif( file_exists($_FILES['photo']['tmp_name'])
and filesize($_FILES['photo']['tmp_name']) > $taille_max)
{
$erreur = 'Votre fichier doit faire moins de 500Ko !';
}
// 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-1]+)/i', '_', $dest_fichier);
// copie du fichier
move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier);
//Mise à jour du champ photo
$photo = '\''.mysql_escape_string($photo).'\''; //On place un antislashes davant les caractères spéciaux de MySQL
mysql_query("UPDATE pe2 SET champ_photo=$photo WHERE NOM_USUEL = '$colname_liaison'", $perso); //Mise à jour de la ligne
//Fin mise à jour du champ photo
}
}
?>
<html>
<body>
<!-- Erreur ? -->
<?php
if(isset($erreur)){
echo '<p>', $erreur ,'</p>';
}
?>
<!-- Formulaire -->
<!-- Attention, ne de ne pas oublier le enctype="multipart/form-data" -->
Envoi de fichiers
<form method="POST" action="" enctype="multipart/form-data">
<!-- Limiter la taille des fichiers à 500Ko -->
<input type="hidden" name="MAX_FILE_SIZE" value="500000" />
<fieldset>
<legend></legend>
<!-- champs d'envoi de fichier, de type file -->
<p>Nom :
<input name="textfield" type="text" value="<?php echo $row_liaison['NOM_USUEL']; ?>">
Prénom :
<input name="textfield2" type="text" value="<?php echo $row_liaison['PRENOM']; ?>">
</p>
<p>
<label for="photo">Photo :</label>
<input type="file" name="photo" />
</p>
<p><label for="photo_2"></label>
</p>
<!-- bouton d'envoi -->
<p><input type="submit" name="envoi" value="Envoyer les fichiers" /></p>
</legend>
</fieldset>
</form>
</body>
</html>
<?php
mysql_free_result($liaison);
?>
bonsoir
Je m'interroge sur la manière d'enregistrer le nom du fichier uploadé dans ma BDD.
En début de fichier, la vatiable $_post['nom'] fonctionne bien mais au moment de mettre à jour la bdd,plus rien ! Est-ce que quelqu'un aurait une idée ? Merci
i-dessous le code :
<?php require_once('Connections/perso.php'); ?>
<?php
$colname_liaison = "1";
if (isset($_POST['nom'])) {
$colname_liaison = (get_magic_quotes_gpc()) ? $_POST['nom'] : addslashes($_POST['nom']);
}
mysql_select_db($database_perso, $perso);
$query_liaison = sprintf("SELECT * FROM pe2 WHERE NOM_USUEL = '%s'", $colname_liaison);
$liaison = mysql_query($query_liaison, $perso) or die(mysql_error());
$row_liaison = mysql_fetch_assoc($liaison);
$totalRows_liaison = mysql_num_rows($liaison);
if(isset($_FILES['photo']))
{
// params
unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 100000;
$dest_dossier = '/trombi2/';
// vérifications
if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
{
$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
}
elseif( file_exists($_FILES['photo']['tmp_name'])
and filesize($_FILES['photo']['tmp_name']) > $taille_max)
{
$erreur = 'Votre fichier doit faire moins de 500Ko !';
}
// 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-1]+)/i', '_', $dest_fichier);
// copie du fichier
move_uploaded_file($_FILES['photo']['tmp_name'], $dest_dossier . $dest_fichier);
//Mise à jour du champ photo
$photo = '\''.mysql_escape_string($photo).'\''; //On place un antislashes davant les caractères spéciaux de MySQL
mysql_query("UPDATE pe2 SET champ_photo=$photo WHERE NOM_USUEL = '$colname_liaison'", $perso); //Mise à jour de la ligne
//Fin mise à jour du champ photo
}
}
?>
<html>
<body>
<!-- Erreur ? -->
<?php
if(isset($erreur)){
echo '<p>', $erreur ,'</p>';
}
?>
<!-- Formulaire -->
<!-- Attention, ne de ne pas oublier le enctype="multipart/form-data" -->
Envoi de fichiers
<form method="POST" action="" enctype="multipart/form-data">
<!-- Limiter la taille des fichiers à 500Ko -->
<input type="hidden" name="MAX_FILE_SIZE" value="500000" />
<fieldset>
<legend></legend>
<!-- champs d'envoi de fichier, de type file -->
<p>Nom :
<input name="textfield" type="text" value="<?php echo $row_liaison['NOM_USUEL']; ?>">
Prénom :
<input name="textfield2" type="text" value="<?php echo $row_liaison['PRENOM']; ?>">
</p>
<p>
<label for="photo">Photo :</label>
<input type="file" name="photo" />
</p>
<p><label for="photo_2"></label>
</p>
<!-- bouton d'envoi -->
<p><input type="submit" name="envoi" value="Envoyer les fichiers" /></p>
</legend>
</fieldset>
</form>
</body>
</html>
<?php
mysql_free_result($liaison);
?>