Bonjour / Bonsoir,

Je suis entrains de développer un site est je rencontre un prôbléme que je n'arrive pas résoudre en php.
Le prôbléme que je rencontre c'est que j'ai un formulaire dans ce formulaire de publier les données en fonction des champs remplie par l'utilisateur, exemple dans moi j'ai un formaulire qui contient un textarea et un input de type file lorsque le textarea est remplie est pas l'input est bien mon code marche trais bien et lorsque le input est remplie est non le textarea la aussi mon code marche, Mais le prôbléme lorsque les 2 champs sont remplies alors la le code ne marche pas elle punblie que le text.

Voila a quoi ressemble la table de la bdd:

et voici le code que j'ai écrie:

            <form METHOD="POST" action="" enctype="multipart/form-data">
                <textarea placeholder="Exprimez-vous avec peux de caractère" name="post"></textarea>
                <label class="label_medias" for="medias" title="Ajouter une images">Medias</label>
                <input class="medias" id="medias" type="file" name="file_medias"/>
                <button name="post_submit">Publier</button>
            </form>
    if(isset($_POST['post_submit'])){
        if(!empty($_POST['post'])){
            $ContentPost = htmlspecialchars($_POST['post']);
            $InsertPost = $bdd->prepare('INSERT INTO wc_post(id_poster, content, medias, post_date) VALUES(?, ?, ?, NOW())');
            $InsertPost->execute(array($_SESSION['id'], $ContentPost, ''));
            $Erreur_Post = 'Votre publication a été bien publier.';
        }elseif(!empty($_FILES['file_medias'])){

            $ExtensionValide = array('png', 'jpg', 'jpeg', 'gif', 'mp4', 'mp3');
            $ExtensionUpload = strtolower(substr(strrchr($_FILES['file_medias']['name'], '.'), 1));
            if(in_array($ExtensionUpload, $ExtensionValide)){
                $chemainMedias = "asset/medias/images/".$_FILES['file_medias']['name'].".".$ExtensionUpload;
                $Resultat = move_uploaded_file($_FILES['file_medias']['tmp_name'], $chemainMedias);
                if($Resultat){
                    $InsertPost = $bdd->prepare('INSERT INTO wc_post(id_poster, content, medias, post_date) VALUES(?, ?, ?, NOW())');
                    $InsertPost->execute(array($_SESSION['id'], '', $chemainMedias));
                    $Erreur_Post = 'Votre fichier a été bien publier.';
                }
            }else{
                $Erreur_Post = 'Le format du fichier doit étre PNG, JPG, GIF, MP4, ou MP3';
            }

        }elseif(!empty($_POST['post']) AND !empty($_FILES['file_medias'])){
            $ExtensionValide = array('png', 'jpg', 'jpeg', 'gif', 'mp4', 'mp3');
            $ExtensionUpload = strtolower(substr(strrchr($_FILES['file_medias']['name'], '.'), 1));
            if(in_array($ExtensionUpload, $ExtensionValide)){
                $chemainMedias = "asset/medias/images/".$_FILES['file_medias']['name'].".".$ExtensionUpload;
                $FilesName = $_FILES['file_medias']['name'].".".$ExtensionUpload;
                $Resultat = move_uploaded_file($_FILES['file_medias']['tmp_name'], $chemainMedias);
                if($Resultat){
                    $ContentPost = htmlspecialchars($_POST['post']);
                    $InsertPost = $bdd->prepare('INSERT INTO wc_post(id_poster, content, medias, post_date) VALUES(?, ?, ?, NOW())');
                    $InsertPost->execute(array($_SESSION['id'], $ContentPost, $FilesName));
                    $Erreur_Post = 'Votre publication a été bien publier.';
                }
            }else{
                $Erreur_Post = 'Le format du fichier doit étre PNG, JPG, GIF, MP4, ou MP3';
            }
        }
    }

Cordialement Mikayil Merci d'avance pour vos futur commentaire et aide.

2 réponses


Bonsoir,
Ben tu testes:
si le textarea n'est pas vide
puis si le file n'est pas vide
ensuite le textaera ET le file => les conditions sont déjà remplies au-dessus

voir plutôt

if(!empty($_POST['post']) OR   !empty($_FILES['file_medias'])

et dans ta logique : i faut ne pas oublier de définir les champs dans ta base "content" et "media" à NULL ( peuvent être nuls) de cette manière lorques tu inséres tes données : pas d'erreur.

Si les champs doivent être obligatoires, le test

if(!empty($_POST['post']) &&  !empty($_FILES['file_medias'])
JMERISE
Auteur

dsl si je répond vraiment en retard, car je suis vraiment occuper avec l'école est tous...
Sinon pour le code je n'est pas encore trouver comment résoudre le prôbléme, merci comme même de ta réponse @Kraddle