Probleme d'enregistrement - PHP - Programmation
Marsh Posté le 01-06-2016 à 23:11:32
Il y a une balise code sur le forum destiné à mettre en forme le code.
Alors comme ça à la 1ère lecture :
- isset ne garanti pas qu'une variable contienne quelque chose, donc empty à la place, et il ne suffit pas de tester une seule valeur d'un formulaire pour se dire que tout est bon, il faut tester, vérifier chaque champ d'un formulaire avec soin, c'est primordial.
- isset encore une fois pour tester l'existence de ta variable erreur n'est pas idéal, toute variable doit être déclarée.
- L'extension d'une image (ou autres fichiers) ne garanti en rien son type, je peux très bien t'envoyer un simple fichier texte avec une extension d'image, et ça c'est gentil, quelqu'un de mal intentionné pourrait t'envoyer un truc bien pire.
- Ton expression régulière, que vient faire le . ici ? Tu autorises les ........ dans un nom de fichier ?
Quant à ton erreur, je vois pas, y'a autre chose avant ce code ?
Marsh Posté le 01-06-2016 à 13:34:31
Bonjour à tous, j'ai créé une table ayant pour colonnes ''prenom'' ,''nom'', ''adresse'', ''image'' . Ensuite j'ai créé dans le repertoire www de mon serveur Wamp un dossier dénommé ''membres'' et dont le chemin d’accès est : C:\wamp\www\enregistrer_images\membres .Dans ce dossier ''membres'' je souhaite enregistrer des photos auxquelles les chemins seront stockés dans ma table dans la colonne ''image'' .
Voici mon code :
Pour la page formulaire_envoi.html
<html>
<body>
<br><br/>
<form method="post" action="affichage.php" enctype="multipart/form-data">
<label for="prenom">Prenom :</label>
<input type="text" name="nom" />
<br><br/>
<label for="nom">Nom :</label>
<input type="text" name="prenom" />
<br><br/>
<label for="adresse">Adresse :</label>
<input type="text" name="prenom" />
<br><br/>
<label for="img">Telecharger une image :</label>
<input name="img" type="file" />
<input type="submit" name="valider" value="VALIDER"/>
</form>
</body>
Pour la page affichage.php
<?php
if ( isset( $_POST['prenom'] ))
{
$prenom = $_POST['prenom'];
$nom = $_POST['nom'];
$adresse = $_POST['adresse'];
// Récupèration du nom de l'image :
$image = basename($_FILES['img']['name']);
//initialisation des extensions de l'image:
$dossier = '../enregistrer_images/membres';
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['img']['name'], '.');
//Vérifications des extensions
if(!in_array($extension, $extensions))//Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez uploader un fichier de type png, gif, jpg ou jpeg...';
}
//Si l'extension existe dans le tableau
if(!isset($erreur))
//On formatage du nom fichier
{
$fichier = strtr($fichier,'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
if(move_uploaded_file($_FILES['image']['tmp_name'], $dossier . $fichier))
//insèrtion des données du formulaire dans la table
{
try
{
$bdd = new PDO('mysql:host=localhost;dbname=productions','root','',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$req = $bdd->prepare('INSERT INTO clients(prenom, nom, adresse, photo) VALUES(:prenom, :nom, :adresse, hoto)');
$req->execute(array($fichier
'prenom' => $prenom,
'nom' => $nom,
'adresse' => $adresse,
'photo' => $image,
));
else
//Sinon la fonction renvoie FALSE.
{
echo 'Echec de l\'enregistrement dans la table !';
}
else
{
echo $erreur;
}
$req->closeCursor();
}
}
?>
D'abord je souhaiterais recueillir vos avis par rapport aux différentes étapes que j'ai suivies pour parvenir à ce que je veux , je rappelle ici que je suis débutant .
Et ensuite je souhaiterais comprendre l'erreur que le serveur m'affiche quand je veux executer le code arse error: syntax error, unexpected ''AAAAAACEEEEIIIIOOOOOUUUUYaaaa' (T_CONSTANT_ENCAPSED_STRING) in C:\wamp\www\enregistrer_images\affichage.php on line 42
La ligne 42 correspond à la ligne qui traite du formatage du fichier
//On formatage du nom fichier
{
$fichier = strtr($fichier,'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
if(move_uploaded_file($_FILES['image']['tmp_name'], $dossier . $fichier))
merci