Alors je poste ici car je sais qu'il y a plein de gens de bons conseils...
Je fais du php depuis 2 ou 3 semaines là (enorme débutant), mes codes ne buggent pas mais je suppose qu'il y a forcément une meilleure façon de faire que mes bidoullages. (sans passer par la POO dont je saisi à moitié le concept et qui fait que je me retrouve 9 fois sur 10 avec des erreurs pour le moment.).
C'est pourquoi je poste un code simple que je viens de faire concernant un ajout d'image avec un "title" facultatif et la possibilité de supprimer cette dernière.
Très simple en somme mais ça va me permettre, dans l'hypothèse où l'un d'entre vous accepte de me conseiller à ne pas m'embrouiller avec un plat de spagetti trop long si je m'y prend mal.
Je fais ça de tête (parti d'une page blanche...enfin noire ^^ ) sans me référer à quoi que ce soit (pour ma compréhenssion personnelle) donc il se peut que la présentation soit parfois conceptuelle et en suis désolé par avance.
J'ai viré la plupart des div, des id et des class (css) inutiles ici.
En d'autres termes, je cherche surtout à optimiser ma façon de faire via vos conseils car je suis certain que mes pages de test ne tiennent qu'à un fil et qu'il est fort probable que mon chateau de carte tombe au premier souffle. (pas terrible comme métaphore mais j'ai trouvé que ça là
<div>
<form method="post" enctype="multipart/form-data" >
<label for="titre" >Titre <em>(facultatif)</em> : </label><input type="text" name="titre" id="titre" value="<?php if(isset($_POST['titre'])) { echo $_POST['titre']; } ?>" />
<label for"image" >Image <span>*</span> : </label><input type="file" name="image" id="image" />
<input type="submit" name="valid" value="Poster" />
</form>
</div>
<div>
<?php
$actual = date("YmdHis");
// VERIFICATION DES ERREURS
if(isset($_FILES['image']) AND $_FILES['image']['error']==0)
{
// VERIFICATION DU POID DE L'IMAGE
if($_FILES['image']['size']<501000)
{
$file_info = pathinfo($_FILES['image']['name']);
$ext_upload = strtolower($file_info['extension']);
$ext_auto = array('jpg', 'jpeg', 'png', 'gif');
// VERIFICATION DE L'EXTENSION
if (in_array($ext_upload, $ext_auto))
{
// RENAME DE L'IMAGE PAR LE TIME ACTUEL ET ENVOI DANS LE DOSSIER IMAGE
$new_name = 'image/'.$actual.'.'.$ext_upload.'';
// ENREGISTREMENT DE L'IMAGE
move_uploaded_file($_FILES['image']['tmp_name'], $new_name);
}
else { echo '! veuillez sélectionner une image au format .jpg, .jpeg, .png ou .gif et non .'.$ext_upload.'.'; }
}
else { echo '! veuillez sélectionner une image de 500ko maximum.'; }
}
try
{
// CONNEXION A LA BDD
$pdo_op[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_op);
// VERIFICATION DU POST
if(isset($_POST['valid']))
{
if(empty($_FILES['image']))
{
echo '! veuillez poster une image.';
}
else
{
// TITRE IMPOSE SI VIDE
if(empty($_POST['titre'])) { $_POST['titre']='image'; }
$titre = strip_tags($_POST['titre']);
$titre = htmlspecialchars($titre);
$titre = preg_replace('#[éèêë]#', 'e', $titre);
$titre = preg_replace('#[àâä]#', 'a', $titre);
$titre = preg_replace('#[ùüû]#', 'u', $titre);
$titre = preg_replace('#[ôö]#', 'o', $titre);
$titre = preg_replace('#[ç]#', 'c', $titre);
$titre = strtoupper($titre);
$new_name = htmlspecialchars($new_name); // pas forcément utile mais bon
// INSERTION DES INFOS DANS LA BDD
$prepa = $bdd->prepare('INSERT INTO gallery (image, titre) VALUES (:image, :titre)');
$inser = $prepa->execute(array('image'=>$new_name, 'titre'=>$titre));
echo 'l\'image a bien été enregistré dans la base de données.';
$prepa->closeCursor();
}
}
// SUPPRESSION DES IMAGES DE LA BDD
if(isset($_POST['delete']))
{
$erase = $bdd->exec('DELETE FROM gallery WHERE id=\''.$_POST['id'].'\'');
echo 'l\'image a été effacé de la base de données.';
$erase->closeCursor();
}
?>
<div>
<?php
// AFFICHAGE DES IMAGES
$answer = $bdd->query('SELECT * FROM gallery ORDER BY id DESC');
while($done = $answer->fetch())
{
echo '<img src="'.$done['image'].'" width="50" height="50" alt="image" title="'.$done['titre'].'" />';
?>
<!-- BOUTON DE SUPPRESSION D'IMAGE -->
<form method="post" >
<input type="hidden" name="id" value="<?php echo $done['id']; ?>" />
<input type="submit" name="delete" value="effacer" />
</form>
<?php
}
$answer->closeCursor();
?>
</div>
<?php
}
// SI LA BASE DE DONNES ECHOUE
catch (Exception $e) { die ('Echec de la base de données, vérifiez l\'état de votre connexion.' ); }
?>
</div>
J'ai mit que trois champs dans la table 'id, image et titre'.Voilà, j'attends vos conseils.