Bonjour,
Voila je rencontre un petit problème avec mon code pour inserer mes messages.
J ai une arboresence classique :
3 dossiers -> modele - vue - controleur, dans chacun des dossiers un sous dossier minichat ,
avec un fichier index.php pour controleur
un fichier index.php pour vue
un fichier get_message pour afficher les messages et un fichier ajouter_message pour modele
un fichier connexion (connexion-sql) dans le dossier modele au meme niveau que le dossier minichat
et un fichier controleur-globale (minichat.php) à la racine de mon site
les fichiers :
Modele
<?php
function ajouter_message($pseudo, $contenu)
{
global $bdd;
$req = $bdd->prepare('INSERT INTO mini_chat (pseudo, message) VALUE(?,?)');
$req->execute(array($pseudo, $message));
}
Controleur
<?php
include_once('modele/minichat/get_messages.php');
include_once('modele/minichat/ajouter_message.php');
$sqlmessages = get_messages(0, 10);
if (isset($_POST['pseudo']) && isset($_POST['message']))
{
$pseudo = $_POST['pseudo'];
$message = $_POST['message'];
ajouter_message($pseudo, $message);
}
foreach($sqlmessages as $cle => $mes)
{
$sqlmessages[$cle]['pseudo'] = htmlspecialchars($mes['pseudo']);
$sqlmessages[$cle]['message'] = nl2br(htmlspecialchars($mes['message']));
}
include_once('vue/minichat/index.php');
Vue
<h1>Mon minichat !</h1>
<p>Derniers messages du chat :</p>
<form action="controleur/minichat/index.php" method="post">
<p>
<label for="pseudo">Pseudo</label> : <input type="text" name="pseudo" id="pseudo" /><br />
<label for="message">Message</label> : <input type="text" name="message" id="message" /><br />
<input type="submit" value="Envoyer" />
</p>
</form>
<?php
foreach($sqlmessages as $message)
{
?>
<div class="news">
<h3>
<?php echo $message['pseudo']; ?>
</h3>
<p>
<?php echo $message['message']; ?>
</p>
</div>
<?php
}
?>
Controleur global
<?php
include_once('modele/connexion_sql.php');
if (!isset($_GET['section']) OR $_GET['section'] == 'index')
{
include_once('controleur/minichat/index.php');
}
J'aurai voulu avoir des conseilles pour résoudre mon probléme svp
Une suite d'erreures :
Et je n'arrive pas a rediriger vers ma page "controleur globale" minichat.php
J'arrive sur cette page
http://localhost/PHP-mini-chtat/PHP-minichat-MVC-form/controleur/minichat/index.php
Warning: include_once(modele/minichat/get_messages.php): failed to open stream: No such file or directory in C:
Warning: include_once(): Failed opening 'modele/minichat/get_messages.php' for inclusion (include_path='.;C:\php\pear') in C:
Warning: include_once(modele/minichat/ajouter_message.php): failed to open stream: No such file or directory in C:
Warning: include_once(): Failed opening 'modele/minichat/ajouter_message.php' for inclusion (include_path='.;C:
Fatal error: Call to undefined function get_messages() in C:\wamp\www\PHP-mini-chtat\PHP-minichat-MVC-form\controleur\minichat\index.php on line 6
Merci a vous , si vous pouvez me donner des pistes
Salut,
essaies de mettre tes include_once en chemin absolu.
Dans mini-chat.php tu définie une variable globale
$root = "C:\wamp\www\PHP-mini-chtat\PHP-minichat-MVC-form\"
et tu rajoutes cette variable à tous tes include_once
include_once($root . 'modele/minichat/get_messages.php');
Rien à voir avec ton problème : mais J'ai vu que pour ton modèle, tu sembles faire un fichier par fonction :
include_once('modele/minichat/get_messages.php');
include_once('modele/minichat/ajouter_message.php');
En théorie tu mets toutes tes fonctions liées au modèle minichat, dans le même fichier.
include_once('modele/minichat/model.php');
// modele/minichat/model.php
function get_message()
{
...
}
function ajouter_message()
{
...
}
salut SLK , je crois avoir resolut mon probléme mais du coup j ai un affichage bizard
je m'explique :
Je rentre un message rien s'affiche, mais il s'insert ds ma bdd, et quand je rentre un autre message le premier message entrée apparait mais pas le second , mais les deux sont présent ds ma bdd et ainsi de suite
J'ai pas d'erreur qui apparait
mon code : fichier ajouter_message / minichat / modele
<?php
function ajouter_message($pseudo, $message)
{
global $bdd;
$req = $bdd->prepare('INSERT INTO mini_chat (pseudo, message) VALUE(?,?)');
$req->execute(array($pseudo, $message));
}
mon code : fichier index.php / minichat / controleur
<?php
include_once('modele/minichat/get_messages.php');
include_once('modele/minichat/ajouter_message.php');
$sqlmessages = get_messages(0, 10);
if (isset($_POST['pseudo']) && isset($_POST['message']))
{
$pseudo = $_POST['pseudo'];
$message = $_POST['message'];
ajouter_message($pseudo, $message);
}
foreach($sqlmessages as $cle => $mes)
{
$sqlmessages[$cle]['pseudo'] = htmlspecialchars($mes['pseudo']);
$sqlmessages[$cle]['message'] = nl2br(htmlspecialchars($mes['message']));
}
include_once('vue/minichat/index.php');
le formulaire: index.php/minichat/vue
<form action="minichat.php" method="post">
<p>
<label for="pseudo">Pseudo</label> : <input type="text" name="pseudo" id="pseudo" /><br />
<label for="message">Message</label> : <input type="text" name="message" id="message" /><br />
<input type="submit" value="Envoyer" />
</p><br></form>
Opérateur global à la racine du site :
<?php
include_once('modele/connexion_sql.php');
if (!isset($_GET['section']) OR $_GET['section'] == 'index')
{
include_once('controleur/minichat/index.php');
}
OK, du coup on dirait que c'est peut-être la fonction get_messages qui merdouille, montre nous son code.
Aussi, j'ai vu ça qui m'intrigue un peu :
foreach($sqlmessages as $cle => $mes)
{
$sqlmessages[$cle]['pseudo'] = htmlspecialchars($mes['pseudo']);
$sqlmessages[$cle]['message'] = nl2br(htmlspecialchars($mes['message']));
}
Est-ce qu'il ne faudrait pas plutôt faire un truc comme ça ?
foreach($sqlmessages as $entry)
{
$entry['pseudo'] = htmlspecialchars($entry['pseudo']);
$entry['message'] = nl2br(htmlspecialchars($entry['message']));
}