Bonjour / Bonsoir,
Je publie ce topic car je rencontre un prôbléme au niveau d'un système de publication en poo.
Alors j'ai créer un formulaire qui à des champs avec un name, ce que je voudrais faire c'est méttre tous les traitement php dans une fonction ce que j'ai fait est qui marche pour le moment, mais le seul prôblème que j'ai c'est que avec cette fonction elle publie que 1 dans ma bdd.
Je vous mais un peux de script histoire de vous situer dans mon prôbléme:
Formulaire :
// Publication content Function.
$PublicationContent = new Publication();
if(isset($_SESSION['id']) AND $_SESSION['id'] == $RequireUsersExist['id']):
$ResultPublication = $PublicationContent->PublicationFunction(isset($_POST['post_submit']), !empty($_POST['post']), !empty($_POST['file_medias']), isset($_SESSION['id']));
endif;
<?php if(isset($ResultPublication)): ?>
<div class="alert alert-dismissible alert-danger" role="alert">
<button type="button" class="close" data-dismiss="alert">×</button>
<?php echo $ResultPublication; ?>
</div>
<?php endif; ?>
<form METHOD="POST" action="">
<div class="form-group">
<textarea class="form-control" rows="3" id="message2" name="post" placeholder="Exprimez-vous !"></textarea>
<div class="alert_form_number_caracter">
<p id="compteur2">0 mots | 160 Caracteres restant</p>
</div>
<div class="button_class">
<label for="medias" class="medias1"><i class="fa fa-camera" aria-hidden="true"></i>Medias</label>
<input type="file" id="medias" name="file_medias" />
<button name="post_submit"><i class="fa fa-paper-plane" aria-hidden="true"></i>Publier</button>
</div>
</div>
</form>
Est voici a quoi ressemble côter php :
<?php
require_once 'php/GenererKey.function.php';
// Publication function class.
class Publication extends GenererKey {
private $submit;
private $post;
private $file;
private $session_user;
public $Erreur_Post;
public $SuccessPublication;
function PublicationFunction ($submit, $post, $file, $session_user) {
global $bdd;
// Function generate new key.
$GenererNewKey = new GenererKey();
// Publier un POST dans la BDD.
if(isset($submit)){
// Publication of the post.
if(!empty($post) AND isset($post) AND $post AND $post != false AND empty($file)) {
$PublicationPost2 = htmlspecialchars($post);
$CountPost = strlen($PublicationPost2);
if($CountPost <= 160) {
$InsertPublicationPost = $bdd->prepare("INSERT INTO wc_post(id_poster, content, medias, post_date) VALUES(?, ?, ?, NOW())");
$InsertPublicationPost->execute(array($session_user, $PublicationPost2, false));
return $SuccessPublication = 'Votre publication a été bien publier.';
} else {
return $Erreur_Post = 'Oups il semblerait que votre publication comporte plus de 160 Caracteres.';
}
}
}
}
}
Je ne vous mais tous le code car il est un peux long de plus le bute c'est juste d'aider est non de vous demander de refaire mon code... breff,
Si une personne personne qui c'est d'ou vient mon prôbléme est qui veux m'aider merci d'avance est a tous les perosnne qui ont pris la pêne de prendre leur temps pour m'aider a ce petit prôbléme.
Cordialement Mikayil,
Bonjour.
Le problème que tu rencontres est normal, car au lieu d'envoyer des valeurs à ta fonction, tu ne lui transmet que des true
|false
.
En mettant par exemple !empty($_POST['post'])
, ta fonction ne recevra pas la valeur de l'input, mais soit true
, soit false
.
Pour faire simple, c'est comme-ci tu faisais $PublicationContent->PublicationFunction(true, true, false, true);
.
mhhh donc je doit pas mettre les condition dans une function ?, ma question peut paraître con mais je n'y connais pas grand chose en poo :)
Dans une fonction, tu dois uniquement lui transmettre des données, après pour ce qui concerne les vérifications et le traitement à faire sur ces données, tu les fais depuis l'intérieur de la fonction et non dans les paramêtres, car actuellement comme je te l'ai dit, tu ne lui transmets aucune donnée qui puisse être exploitatble dans ta fonction telle qu'elle est actuellement.
Autre chose aussi, ton système de fichier dans ton formulaire ne peux pas fonctionner actuellement, tu dois effectivement préciser que tu veux un input pour un fichier en définissant type="file"
, mais il te faut également préciser dans la création de ton formulaire, que celui-ci peut recevoir des données pour un fichier à soumettre via le formulaire, soit :
<form method="POST" action="" enctype="multipart/form-data">
Re dsl pour le retard, j'ai reglais le prôbléme a ce niveau mais je rencontre un notre petit prôblème qui est que lors de la publication des medias il m'affiche une erreur Notice: Undefined index: file_medias également quand je publie uniquement du text san publier de file il m'affiche aussi Notice: Undefined index: file_medias
lors de la publication des medias il m'affiche une erreur Notice: Undefined index: file_medias
Pour les input de type file
, ils sont accessibles via la variable $_FILES
et non via la variable $_POST
, il te faut donc faire $_FILES['file_medias']
pour pouvoir traiter les informations liées au fichier de l'input file
qui a comme name
file_medias
.
ohh lala comment j'ai fait pour oublier cela, merci d'avoir pris le temps de m'aider :)