Salut à tous, je suis en train de monter un projet de réseau social et je suis à la partie d'enregistrement des status (messages) postés.Alors voila je permet en plus du message de joindre une image, j'ai réussi à faire fonctionner l'enregistrement des messages seul lorsque le champ de fichier photo n'est pas rempli, or ce que je veux c'est pouvoir soit envoyer un message sans photo soit avec mais dans tous les cas le champs message doit être remplis. Voila ou j'en suis :
<?php
session_start();
require('includes/init.php');
require('includes/functions.php');
include('filters/auth_filter.php');
if(isset($_POST['publish'])){
if(!empty($_POST['content']) && (isset($_POST['img_post'])))
{
extract($_POST);
$content_dir = 'upload_post/'.get_session('user_id').'/'; // dossier où sera déplacé le img_post
if (!file_exists($content_dir)) {
mkdir($content_dir, 0777, true);
}
$tmp_file = $_FILES['img_post']['tmp_name'];
if( !is_uploaded_file($tmp_file) )
{
exit("Le fichier est introuvable");
}
// on vérifie maintenant l'extension
$type_file = $_FILES['img_post']['type'];
if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'png'))
{
exit("Le fichier n'est pas une image");
}
// on copie le img_post dans le dossier de destination
$name_file = $_FILES['img_post']['name'];
if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
{
exit("Impossible de copier le fichier dans $content_dir");
}
$img_post = $content_dir.$_FILES['img_post']['name'];
$q = $db->prepare('INSERT INTO microposts(content,img_post, user_id,created_at) VALUES (:content,:img_post,:user_id,NOW())');
$q->execute([
'content'=>$content,
'img_post'=>$img_post,
'user_id' => get_session('user_id')
]);
set_flash('Votre statut a été mis a jour');
/*$to = '[email protected]';
$subject = 'Ma résidence étudiante';
$message = 'Un nouveau message a était publié dans la résidence, il peut peut etre vous intéresser http://studeamayol.maresidencetudiante.fr';
mail($to, $subject, $message);*/
}
if(!empty($_POST['content']))
{
extract($_POST);
$q = $db->prepare('INSERT INTO microposts(content,img_post, user_id,created_at) VALUES (:content,:img_post,:user_id,NOW())');
$q->execute([
'content'=>$content,
'img_post'=>$img_post,
'user_id' => get_session('user_id')
]);
set_flash('Votre statut a été mis a jour');
}
}
redirect('profile.php?id='.get_session('user_id'));
En gros, si le champ du message n'est pas vide et que le champ photo est soumis alors je fais tout le traitement (photo+message) mais si il n'y a que le message qui est rempli je ne fais que le traitement du message.Et pourtant que je mette ou non une image, dans ma base de données je n'ai que le texte qui est enregistré.
Voila j'espère que quelqu'un pourra m'éclairer :p, merci d'avance !!