Page 1 sur 2

Pb tutorial Upload de fichier

Posté : 17 mai 2005, 17:13
par ptinicola
Bonjour,
j'ai voulu intégrer le tutorial "Upload de fichiers" dans un script d'insertion de données dans une base, mais ça ne fonctionne pas et je ne sais pas comment faire. Ci-dessous les deux fichiers que j'utilise, En premier le formulaire et en second le script php. Quelqu'un peut-il m'aider et m'expliquer SVP.

nb: Je suis sur un serveur local (j'utilise MAMP), j'ai créé un dossier tmp et avec un chmod 777 sur les dossiers et images. Rien ne s'inscrit dans ma base et rien ne va dns le dossier /images/

------formulaire--------
<html>
<head>
<title>ins&eacute;rer un dossier</title>
</head>
<body>
<form name="insertion" action="insert_doss.php" enctype="multipart/form-data" method="POST">
<table border="0" align="center" cellspacing="2" cellpadding="2">
<tr align="center">
<td>&nbsp;</td>
<td align="left">Ins&eacute;rer un dossier </td>
</tr>
<tr align="center">
<td>titre</td>
<td align="left"><input type="text" name="titre"></td>
</tr>
<tr align="center">
<td>texte</td>
<td><textarea name="texte" cols="40" rows="5"></textarea></td>
</tr>

<tr align="center">
<td>image</td>
<td>
<fieldset>
<legend>Envoi de fichiers</legend>
<label for="photo">Photo :</label><input type="file" name="photo" />
</legend>
</fieldset>
</td>
</tr>

<tr align="center">
<td colspan="2"><input type="submit" value="insÈrer"></td>
</tr>
</table>
</form>
</body>
</html>

------script insert_doss.php----------
<?php
require_once("config.php") ;
include('header.php');


//connection au serveur
$cnx = mysql_connect(SERVEUR, USER, PASS, DB) ;

//sÈlection de la base de donnÈes:
$db = mysql_select_db(DB) ;

//rÈcupÈration des valeurs des champs:
//titre:
$titre = $_POST["titre"] ;
//texte:
$texte = $_POST["texte"] ;

//crÈation de la requÍte SQL:
$sql = "INSERT INTO doss (titre, texte)
VALUES ( '$titre', '$texte' ) " ;

//upload images
if(isset($_FILES['photo']))
{
// parents
unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 500000;
$dest_dossier = '/localhost:8888/monsite/admin/images/';
// 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);
}
}


//affichage de la requÍte SQL pour mieux comprendre ;) :
echo( "<center>".$sql."<br>" ) ;
if(isset($erreur)){
echo '<p>', $erreur ,'</p>';
}
//exÈcution de la requÍte SQL:
$requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;

//affichage des rÈsultats, pour savoir si l'insertion a marchÈe:
if($requete)
echo("<center>L'insertion a ÈtÈ correctement effectuÈe</center>") ;
else
echo("<center>L'insertion ‡ ÈchouÈe</center>") ;

?>

Posté : 18 mai 2005, 13:01
par Cyrano
As-tu un message d'erreur affiché quelque part ?

Posté : 18 mai 2005, 13:12
par ptinicola
non pas de message d'erreur

Posté : 18 mai 2005, 13:15
par ZeRo[^L^]CoOOL
est ce que tu peut reformater ton code c un peux illisible
merci
utilise les balises
 et Code si tu veut

Posté : 18 mai 2005, 13:16
par zeus
Tu est sûr que tu vérifie bien dans ce dossier ?
 $dest_dossier = '/localhost:8888/monsite/admin/images/'
Comme tu as défini ton pb,
rien ne va dns le dossier /images/
j'ai l'impression que tu regarde dans ce dossier :
 $dest_dossier = '/localhost:8888/monsite/images/'

Posté : 18 mai 2005, 13:20
par ZeRo[^L^]CoOOL
je ne vois pas l'utiliter d'utiliser tous ce chemin
'/localhost:8888/monsite/admin/images/' 
tu peut juste utiliser "admin/images/"

Posté : 18 mai 2005, 13:23
par ptinicola
oui, j'ai bien vérifier...

Posté : 18 mai 2005, 13:27
par zeus
Merci ZeRo[^L^]CoOOL de ton soutien mais j'ai préferer donner l'adresse complete du dossier pour être sûr qu'on cherche au bon endroit !!

On se trouve dans la catégorie "Débuter en PHP", ptinicola est peut-être un débutant trsè débutant et dans ce cas je préfère lui donner la solution complète, s'il est un débutant moins débutant, il aura corriger ou même compris tout seul !!!!

Posté : 18 mai 2005, 13:32
par ptinicola
je préfère me considérer comme très débutant...
j'ai essayé avec le chemin '/images'/
j'ai le même résultat

merci de votre aide...

Posté : 18 mai 2005, 13:32
par zeus
et avec le chemin /admin/images ?

Posté : 18 mai 2005, 13:34
par ZeRo[^L^]CoOOL
d'accord mais si jamais par exemple il a changé du nom du repertoire du script !!!

Posté : 18 mai 2005, 13:36
par zeus
Si il a changé le nom du répertoire du script, PHP devrait généré une erreur ne trouvant pas le bon répertoire !!!

Et oui, PHP ne crée pas l'arborescence quand on lui demande de poser un fichier dans un répertoire qui n'existe pas

Posté : 18 mai 2005, 13:38
par ptinicola
j'ai essayé '/admin/images/'
même problème
et je n'ai pas changé de nom...

Posté : 18 mai 2005, 13:42
par ptinicola
Si vous aviez à faire la même chose, c'est à dire un formulaire avec les champs "titre" "texte" "image" vous procéderiez comment ?
Pourque je puisse comparer avec ce que je fais ? Peut-être je trouverez mon erreur ? ...

Posté : 18 mai 2005, 13:42
par zeus
De toute façon, si tu n'as rien dans ta base, ca aurait été bizarre que les images aient été uploadées