【发布时间】:2014-01-17 10:48:42
【问题描述】:
我正在尝试从 MyBB 论坛的导出消息中获取一些文本。该文件是 CSV 文件。
if (($handle = fopen("test.csv", "r")) === FALSE) {
exit("Couldn't load CSV");
}
fgetcsv($handle);
$messages = array();
$i = 0;
while($data = fgetcsv($handle)){
if(count($data) == 7){
$messages[$i]['date'] = $data[0] + "," + $data[1];
$messages[$i]['folder'] = $data[2];
$messages[$i]['subject'] = $data[3];
$messages[$i]['receiver'] = $data[4];
$messages[$i]['sender'] = $data[5];
$messages[$i]['message'] = str_replace("\'", "'", $data[6]);
}else{
$messages[$i]['date'] = $data[0];
$messages[$i]['folder'] = $data[1];
$messages[$i]['subject'] = $data[2];
$messages[$i]['receiver'] = $data[3];
$messages[$i]['sender'] = $data[4];
$messages[$i]['message'] = str_replace("\'", "'", $data[5]);
}
$i++;
}
我给每个 tr 和 th 标签(th 包括发送者的名字,tr 包括消息)一个带有数字的类。第一条消息是 0,第二条是 1,第三条是 2,依此类推。我像这样在 PHP 中加载消息:
$messages[0]['message'])
其中 0 是第一条消息。我希望它就像我单击第一条消息时一样,它会加载第一条消息。当我单击第二个时,它会加载第二个消息。你明白了。
我的 jQuery 如下:
$("td, th").on("click", function() {
var message = $(this).attr("class");
$("#message").text("<?= preg_replace("/\r|\n/", "", $messages[0]['message']) ?>");
});
我使用 preg_replace 将所有内容放在一行中。
Foreach 循环
<table>
foreach($messages as $i => $message) {
echo <<<EOL
<tr>
<th class="$i"> {$message['sender']} </th>
</tr>
<tr>
<td class="$i"> {$message['message']} </td>
</tr>
EOL;
}
</table>
总结一下:我想在单击表格中的消息时显示该消息,但我不确定最好的方法是什么。
【问题讨论】:
-
您应该使用 AJAX 加载您的消息。看看吧:api.jquery.com/jquery.ajax
-
我知道如何发出 AJAX 请求,但正确设置它是我遇到的问题。
标签: javascript php jquery foreach