2 pièce(s) jointe(s)
incrémenter une variable module de tchat
Hello du forum, je suis débutant en php et je cherche à me perfectionner sur de petites application.
actuellement je rencontre un problème avec un module de tchat qui est supposé enregistrer des messages avec id incrémentées.
je bloque sur la déclaration de la variable et surtout sur son incrémentation.
après maintes recherches je n'ai pas trouver de solution. je vous livre mon code ici, à savoir la page php et le fichier xml, puisque mon module fonctionne sans bdd. Merci d'avance pour toute suggestion et bon dimanche a tous :=>
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| <?php
// Afficher les erreurs à l'écran
ini_set('display_errors', 1);
// Enregistrer les erreurs dans un fichier de log
$msg_affiche=htmlspecialchars($_POST['msg']);
$msg_pseudo=htmlspecialchars($_POST['pseudo']);
//$msg_chat=htmlspecialchars($_POST['chat_screen']);
$envoi=$_POST['envoi'];
$effacer=$_POST['effacer'];
$root = simplexml_load_file("remchat.xml");
if (isset($envoi)){
// 2. modification
$account = $root->addChild("entry");
$account->addAttribute("id","1");
$account->addChild("pseudo",$msg_pseudo);
$account->addchild("msg",$msg_affiche);
// 3. Synchronisation
$root->asXml("remchat.xml");
}
$document = simplexml_load_file('remchat.xml');
echo "<div style='width:500px; height:500px;padding:15px;border:solid 1px #ccc;'>";
foreach ($document->entry as $entry)
//foreach ($data_chat->entry as $entry)
echo "{$entry->pseudo} : {$entry->msg} <br/>";
echo "</div>";
?>
<html>
<head></head>
<body>
<form id="form1" name="form1" method="post">
<p>
<label for="textarea">:</label>
</p>
<p>
votre message
<input name="msg" type="text" id="msg" size="80">
</p>
<p>
votre pseudo :
<input name="pseudo" type="text" id="pseudo" size="80">
</p>
<p>
<input type="submit" name="envoi" id="envoi" value="Envoyer">
<input type="hidden" name="effacer" id="effacer" value="1">
<input type="reset" name="reset" id="reset" value="Réinitialiser">
</p>
</form>
</body>
</html> |
Code:
1 2 3 4 5 6
|
<?xml version="1.0" encoding="ISO-8859-1"?>
<rem_chat><entry id=""><pseudo>bob</pseudo><msg>lorem ipsum dolor si amet</msg></entry>
<entry id=""><pseudo>bob</pseudo><msg>lorem ipsum dolor si amet</msg></entry>
<entry id="1"><pseudo>bob</pseudo><msg>lorem ipsum dolor si amet</msg></entry>
</rem_chat> |
nouvelle question a propos de xml et simplexml
bonjour, je revois mon code en ce moment car je veux limiter le nombre de message poster dans la page. Ceci étant je n'ai pas réussis à implémenter ma fonction unset via simplexml, pas plus qu'avec dom ou xpath. auriez vous une suggestion afin de fixer cette limite ?
je vous livre le code de la page php et le xml...
Pour note le tout fonctionne avec une page de log dont la variable est passé en session...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| <?php
// Afficher les erreurs à l'écran
ini_set('display_errors', 1);
// Enregistrer les erreurs dans un fichier de log
session_start();
if(isset ($_POST['log_rem'])){
setcookie('remchat',htmlspecialchars($_POST['log_rem']), time()+3600*24);
$log_rem=$_POST['log_rem'];
//$pass_rem=$_POST['pass_rem'];
$logger=$_POST['logger'];
//session_start();
header('location:chat.php');
}
?>
<html>
<head></head>
<body>
<form method="post">
<input type="text" name="log_rem" id="log_rem"/><br/>
<!-- <input type="text" name="pass_rem" id="pass_rem"/><br/> -->
<input type="submit" name="logger" value="connect"/>
</form>
</body>
</html> |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
| <?php
// Afficher les erreurs à l'écran
ini_set('display_errors', 1);
// Enregistrer les erreurs dans un fichier de log
session_start();
echo "bienvenue ".$_COOKIE['remchat'];;
if (isset($_POST['envoi'])){
$_SESSION['i']+=1;
$msg_affiche=htmlspecialchars($_POST['msg']);
$msg_pseudo=$_COOKIE['remchat'];
//$msg_chat=htmlspecialchars($_POST['chat_screen']);
$envoi=$_POST['envoi'];
//$effacer=$_POST['effacer'];
$root = simplexml_load_file("remchat.xml");
// 2. modification
$account = $root->addChild("entry");
$account->addAttribute("id",$_SESSION['i']);
$account->addChild("pseudo",$msg_pseudo);
$account->addchild("msg",$msg_affiche);
// 3. Synchronisation
$root->asXml("remchat.xml");
}
$document = simplexml_load_file('remchat.xml');
echo "<div style='width:500px; height:500px;padding:15px;border:solid 1px #ccc;overflow:auto;'>";
foreach ($document->entry as $entry)
//foreach ($data_chat->entry as $entry)
echo "{$entry->pseudo} : {$entry->msg} <br/>";
echo "</div>";
echo $_SESSION['i'];
if($_SESSION['i']==12){
$_SESSION['i']=0;
$w=0;
foreach($document->entry as $entry){
//$xml = simplexml_load_string($str);
/*unset($document->$entry[$w]);
$w+=1;
echo $w;*/
$xmlNode = $document->xpath('entry');
$nodeCount = count($xmlNode);
echo $nodeCount;
}
$document->asXml("remchat.xml");
}
?>
<html>
<head></head>
<body>
<form id="form1" name="form1" method="post">
<p>
votre message
<input name="msg" type="text" id="msg" size="80">
</p>
<p>
<!-- votre pseudo :
<input name="pseudo" type="text" id="pseudo" size="80"> -->
</p>
<p>
<input type="submit" name="envoi" id="envoi" value="Envoyer">
<input type="reset" name="reset" id="reset" value="Réinitialiser">
</p>
</form>
</body>
</html> |
Code:
1 2
| <?xml version="1.0" encoding="ISO-8859-1"?>
<rem_chat></rem_chat> |