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 :

Text to Mysql (JSON)


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Août 2010
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 156
    Points : 61
    Points
    61
    Par défaut Text to Mysql (JSON)
    Bonjour les amis,
    J'ai passé la nuit complète à essayé de transformer ce shoutbox de texte vers mysql mais rien à faire, j'ai le résultat de la requète MYSQL qui me rêpete les mêmes résultats à chaque fois avec JSON.

    Voila le code source de shoutbox:
    index.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
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    <style type="text/css">
        #daddy-shoutbox {
          padding: 5px;
          color: white;
          width: 530px;
          font-family: Arial,Helvetica,sans-serif;
          font-size: 11px;
    	  overflow:auto;
        }
        .shoutbox-list {
          border-bottom: 1px solid #627C98;
     
          padding: 5px;
          display: none;
        }
        #daddy-shoutbox-list {
          text-align: left;
          margin: 0px auto;
    	  height: 300px;
    		overflow:auto;
        }
        #daddy-shoutbox-form {
          text-align: left;
     
        }
        .shoutbox-list-time {
          color: #8DA2B4;
        }
        .shoutbox-list-nick {
          margin-left: 5px;
          font-weight: bold;
        }
        .shoutbox-list-message {
          margin-left: 5px;
        }
     
      </style>
        <script type="text/javascript" src="js/jquery.js"></script>
     
      <script type="text/javascript" src="js/jquery.form.js"></script>
      <center>
      <div id="daddy-shoutbox">
        <div id="daddy-shoutbox-list"></div>
        <br />
    	<?php
    	if(!empty($_SESSION['pseudo']))
    	{
    	?>
    		<form id="daddy-shoutbox-form" action="demos/jquery-shoutbox/daddy-shoutbox.php?action=add" method="post">
    			<input type="hidden" name="nickname" value="<?php echo $_SESSION['pseudo'] ?>"/> Message : <input type="text" name="message" style="width:70%" autocomplete="off"/>
    			<input type="submit" value="chatter" />
    			<span id="daddy-shoutbox-response"></span>
    		</form>
    	<?php
    	}
    	else
    	{
    		?>
    		<form id="daddy-shoutbox-form" action="demos/jquery-shoutbox/daddy-shoutbox.php?action=add" method="post">
    			Pseudo:<input type="text" name="nickname"/> Message : <input type="text" name="message" autocomplete="off"/>
    			<input type="submit" value="chatter" />
    			<span id="daddy-shoutbox-response"></span>
    		</form>
    		<?php
    	}
    	?>
      </div>
      </center>
     
      <script type="text/javascript">
            var count = 0;
            var files = 'demos/jquery-shoutbox/';
            var lastTime = 0;
     
            function prepare(response) {
              var d = new Date();
              count++;
              d.setTime(response.time*1000);
              var mytime = d.getHours()+':'+d.getMinutes()+':'+d.getSeconds();
              var string = '<div class="shoutbox-list" id="list-'+count+'">'
                  + '<span class="shoutbox-list-time">'+mytime+'</span>'
                  + '<span class="shoutbox-list-nick">'+response.nickname+':</span>'
                  + '<span class="shoutbox-list-message">'+response.message+'</span>'
                  +'</div>';
     
              return string;
            }
     
            function success(response, status)  {
              if(status == 'success') {
                lastTime = response.time;
                $('#daddy-shoutbox-response').html('<img src="'+files+'images/accept.png" />');
                $('#daddy-shoutbox-list').append(prepare(response));
                $('input[@name=message]').attr('value', '').focus();
                $('#list-'+count).fadeIn('slow');
                timeoutID = setTimeout(refresh, 3000);
              }
            }
     
    		var x = true
     
            function validate(formData, jqForm, options) {
              for (var i=0; i < formData.length; i++) {
                  if (!formData[i].value) {
                      $('input[@name='+formData[i].name+']').css('background', 'red');
    				  x = false;
                      return false;
                  }
    			  if(!x)
    					$('input[@name='+formData[i].name+']').css('background', '#FFF');
              }
              $('#daddy-shoutbox-response').html('<img src="'+files+'images/loader.gif" />');
              clearTimeout(timeoutID);
            }
     
            function refresh() {
              $.getJSON(files+"daddy-shoutbox.php?action=view&time="+lastTime, function(json) {
                if(json.length) {
                  for(i=0; i < json.length; i++) {
                    $('#daddy-shoutbox-list').append(prepare(json[i]));
                    $('#list-' + count).fadeIn('slow');
                  }
                  var j = i-1;
                  lastTime = json[j].time;
                }
                //alert(lastTime);
              })
              timeoutID = setTimeout(refresh, 3000);
            }
     
    		function scroll()
    		{
    			var message = document.getElementById('daddy-shoutbox-list');
    			message.scrollTop = message.scrollHeight;
    		}
     
            // wait for the DOM to be loaded
            $(document).ready(function() {
                var options = {
                  dataType:       'json',
                  beforeSubmit:   validate,
                  success:        success
                };
                $('#daddy-shoutbox-form').ajaxForm(options);
                timeoutID = setTimeout(refresh, 100);
            });
     
    		setInterval(scroll, 1000);
      </script>
    daddy-shoutbox.php
    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
    <?php
      function replace(&$item, $key) {
        $item = str_replace('|', '-', $item);
      }
     
      if (!function_exists('file_put_contents')) {
    		function file_put_contents($fileName, $data) {
    			if (is_array($data)) {
    				$data = join('', $data);
    			}
    			$res = @fopen($fileName, 'w+b');
    			if ($res) {
    				$write = @fwrite($res, $data);
    				if($write === false) {
    					return false;
    				} else {
    					return $write;
    				}
    			}
    		}
    	}
     
      //file_put_contents('debug.txt', print_r($_GET, true));
      switch($_GET['action']) {
        case 'add':
          array_walk($_POST, 'replace');
          $arr = file('messages.txt');
     
          if(count($arr) > 10)
            array_shift($arr);
     
          $_POST['nickname'] = htmlspecialchars($_POST['nickname']);
          $_POST['message'] = htmlspecialchars($_POST['message']);
     
          $time = time();
          $arr[] = $time.'|'.$_POST['nickname'].'|'.$_POST['message'].'|'.$_SERVER['REMOTE_ADDR']."\n";
          file_put_contents('messages.txt', implode('', $arr));
     
          $data['response'] = 'Good work';
          $data['nickname'] = htmlspecialchars($_POST['nickname']);
          $data['message'] = htmlspecialchars($_POST['message']);
          $data['time'] = $time;
        break;
     
        case 'view':
          $data = array();
          $arr = file('messages.txt');
          if(!$_GET['time'])
            $_GET['time'] = 0;
          foreach($arr as $row) {
            $aTemp = null;
            list($aTemp['time'], $aTemp['nickname'], $aTemp['message']) = explode('|', $row); 
            if($aTemp['message'] AND $aTemp['time'] > $_GET['time'])
              $data[] = $aTemp;
          }
          //file_put_contents('debug.txt', print_r($data, true));
        break;
      }
     
      include('bbcode.php');
      require_once('JSON.php');
      $json = new Services_JSON();
      $out = $json->encode($data);
      print stripslashes(html_entity_decode($out));
    ?>
    Mon problème c'est de transformer cette partie de code afin qu'elel reçois les messages de la BDD et non de fichier texte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        case 'view':
          $data = array();
          $arr = file('messages.txt');
          if(!$_GET['time'])
            $_GET['time'] = 0;
          foreach($arr as $row) {
            $aTemp = null;
            list($aTemp['time'], $aTemp['nickname'], $aTemp['message']) = explode('|', $row); 
            if($aTemp['message'] AND $aTemp['time'] > $_GET['time'])
              $data[] = $aTemp;
          }
    Sachant que j'ai essayé un truc mais le shoutbox comme je l'es dit se repète (il affiche le texte complet chaque 2sec
    Merci beaucoup de m'aider SVP

  2. #2
    Membre du Club
    Inscrit en
    Août 2010
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 156
    Points : 61
    Points
    61
    Par défaut
    Aucune idée ?!

  3. #3
    Membre du Club
    Inscrit en
    Août 2010
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 156
    Points : 61
    Points
    61
    Par défaut
    Forme fichier texte (qui prend le rôle de la BDD):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    1239177958|Nick1|1|86.126.159.231
    1239177963|Nick2|2|86.126.159.231
    1239177966|Nick3|3|86.126.159.231

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    c'est du CSV, donc avec fgetcsv

  5. #5
    Membre du Club
    Inscrit en
    Août 2010
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 156
    Points : 61
    Points
    61
    Par défaut
    Non c'est pas de CSV mais un simple fichier texte, en plus c'est pas ma question, il marche bien avec comme BASE DE DONNEE -> un fichier texte

    Moi je veut transformé cette dernière en MYSQL.


  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par Stalk3R Voir le message
    Non c'est pas de CSV mais un simple fichier texte, en plus c'est pas ma question, il marche bien avec comme BASE DE DONNEE -> un fichier texte

    Moi je veut transformé cette dernière en MYSQL.


    Si c'est du CSV, et pour la base ça sera pareil, mais utilise json_encode, y'a beaucoup beaucoup de codes inutiles dans ton script

  7. #7
    Membre du Club
    Inscrit en
    Août 2010
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 156
    Points : 61
    Points
    61
    Par défaut
    Si j'avais sue comment prcéder je l'aurai fait depuis longtemps, c'est pour ça que j'ai posté mon problème ici

    json_encode comment l'utiliser dans mon cas, et pour la transformation en MYSQL comment faire ?

  8. #8
    Membre du Club
    Inscrit en
    Août 2010
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 156
    Points : 61
    Points
    61
    Par défaut
    J'ai chercher partout afin de trouver la réponse à ce problème mais aucune idée ... ça fait plus d'un mois maintenant :'(

    Je veut utiliser la BDD au lieu de fichier message.txt

    J'attend votre réponse s'il vous plait

Discussions similaires

  1. Importer directement des instructions MySQL en fichier texte dans MySQL
    Par lightstring4 dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 09/05/2007, 16h39
  2. [MySQL] Sauvegarder du texte (db mysql) CR, single-quote, double-quote, etc
    Par vandeyy dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 12/03/2007, 11h22
  3. Probleme d'espace dans un INPUT TEXT (php/mysql)
    Par Joe Le Mort dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 10/08/2006, 09h30
  4. probleme avec un import fichier texte dans mysql
    Par xodeax dans le forum Requêtes
    Réponses: 2
    Dernier message: 04/07/2006, 13h24
  5. afficher les informations texte depuis mysql
    Par arti2004 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 26/02/2006, 16h54

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