IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

incrémenter une variable module de tchat


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 5
    Points : 2
    Points
    2
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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>
    Fichiers attachés Fichiers attachés

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    j'ai finalement trouvé une solution avec les variables de session. je vous livre le code dans l'état, pour ceux qui voudraient s'y essayer. Bonne soirée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php
    // Afficher les erreurs à l'écran
    ini_set('display_errors', 1);
    // Enregistrer les erreurs dans un fichier de log
    session_start();
    $i;
    $_SESSION['i']+=1;
     
     
     
    $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",$_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'];
    	?>
     
    <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>

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 5
    Points : 2
    Points
    2
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <rem_chat></rem_chat>

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    je ne pense pas que cela soit une bonne idée de sauvegarder dans ton xml une valeur échappée par PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $msg_affiche=htmlspecialchars($_POST['msg']);
    // puis tu fais
    $account->addchild("msg",$msg_affiche);
    Tu devrais sauvegarder la données brute et l'échapper au moment du rendu.

    Pour factoriser tu peux te faire une fonction de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php 
    $hsc1 = function($p) { echo htmlspecialchars($p, ENT_QUOTES); };
    $hsc2 = function($p) { return htmlspecialchars($p, ENT_QUOTES); };
     
    // et à l'affichage :
    ?>
     
    <?php $hsc1($variable) ?>
    <?php echo $hsc2($variable) ?>
    Enfin pour limiter le nombre de messages sur ta pages :
    tu incrémentes un compteur et dès qu'il atteint le maximum, tu fais un break; dans le foreach () { ... }

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/12/2008, 22h33
  2. incrémenter une variable à chaque clique sur un lien
    Par Piccolo_son dans le forum Langage
    Réponses: 7
    Dernier message: 17/12/2007, 21h56
  3. Incrémenter une variable en CR9
    Par nanouille56 dans le forum SAP Crystal Reports
    Réponses: 9
    Dernier message: 13/02/2007, 15h59
  4. [XSLT] incrémenter une variable
    Par nemya dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 26/09/2005, 17h12
  5. [débutant][xsl]incrémenter une variable
    Par guitalca dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 01/04/2003, 15h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo