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
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
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>
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
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)); ?>
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
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; }
Merci beaucoup de m'aider SVP
Partager