How do I only select the last 5 rows of a table in a database?

IonCannon218

New Member
Messages
177
Reaction score
2
Points
0
I'm playing with a Program E for ALICE, I want the PHP script to display the last 5 lines in the conversation.

MySQL info: The database is 'alice', the table i want to get rows from is 'conversationlogs'. the columns to display are 'input', 'response' and 'uid'. I want the script to only display the log from the user id.
The script works completely fine, but I don't want the script to show the complete logs from everyone.

The particular code i'm asking for help is:
PHP:
// Print the last 5 lines in the conversation
 $query="SELECT * FROM conversationlog";
 $result = mysql_query($query);
 while($row = mysql_fetch_array($result))
 {
  echo '<b>You: </b>' . $row['input'] . '<br>';
  echo '<b>IonBot: </b>' . $row['response'] . '<br>';
 }
 echo '<b>You: </b>' . $HTTP_POST_VARS['input'] . '<br>';

The full script: (talk.php)
PHP:
<?php
/*
    Program E
 Copyright 2002, Paul Rydell
 This file is part of Program E.
 
 Program E is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.
    Program E is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
    You should have received a copy of the GNU General Public License
    along with Program E; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/
/**
 * HTML chat interface
 * 
 * Contains the script that outputs the HTML interface for chatting
 * @author Paul Rydell
 * @copyright 2002
 * @version 0.0.8
 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
 * @package Interpreter
 * @subpackage Responder
 */
 
/**
* Include the guts of the program.
*/
include "respond.php";
if (isset($HTTP_POST_VARS['input'])){
 $numselects=0;
 // Start the session or get the existing session.
 session_start();
 $myuniqueid=session_id();
 // Print the last 5 lines in the conversation
 $query="SELECT * FROM conversationlog";
 $result = mysql_query($query);
 while($row = mysql_fetch_array($result))
 {
  echo '<b>You: </b>' . $row['input'] . '<br>';
  echo '<b>IonBot: </b>' . $row['response'] . '<br>';
 }
 echo '<b>You: </b>' . $HTTP_POST_VARS['input'] . '<br>';
 
 // Here is where we get the reply.
 $botresponse=replybotname($HTTP_POST_VARS['input'],$myuniqueid,$HTTP_POST_VARS['botname']);
 // Print the results.
 print "<br>";
 print "<B>IonBot: " . $botresponse->response . "<BR></b><br>";
 //print "<BR><BR>execution time: " . $botresponse->timer;
 //print "<BR>numselects= $numselects";
 //print_r($botresponse->inputs);
 //print_r($botresponse->patternsmatched);
 // Include a form so they can say more. Note the hidden part for people that do not have trans sid on but want non-cookie users to be able to use the system.
 
 
 ?>
 <html>
 <head>
 <title>Chat with IonBot</title>
 </head>
 <body>
 <form name="form1" method="post" action="talk.php">
 <input type="hidden" name="<?=session_name()?>" value="<?=$uid?>">
 <input type="hidden" name="botname" value="<?=$HTTP_POST_VARS['botname']?>">
   Say: <input type="text" name="input" size="55">
   <input type="submit" name="Submit" value="Submit">
 </form>
 </body>
 </html>
<?
}
else {
 $availbots=array();
 // Get all the names of our bots.
 $query="select botname from bots";
    $selectcode = mysql_query($query);
    if ($selectcode){
        if(!mysql_numrows($selectcode)){
        }
        else{
            while ($q = mysql_fetch_array($selectcode)){
                $availbots[]=$q[0];
            }
        }
    }
 ?>
 <html>
 <head>
 <title>Chat with IonBot</title>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </head>
 <body bgcolor="#FFFFFF" text="#000000">
 <form name="form1" method="post" action="talk.php">
 Talk to: <select name="botname">
 <? 
 foreach ($availbots as $onebot){
  print "<option value=\"$onebot\">$onebot</option>";
 }
 ?>
 </select><BR>
   Input: <input type="text" name="input" size="55">
   <input type="submit" name="Submit" value="Submit">
 </form>
 
 </body>
 </html>
 <?
}
?>
 

akkudreamz

New Member
Messages
183
Reaction score
0
Points
0
ya
and use ORDER BY to order according to the time the chats were sent and put a limit of 5
 

garrettroyce

Community Support
Community Support
Messages
5,611
Reaction score
249
Points
63
if you only want three columns, you can specify that too:

SELECT input, response, uid
FROM conversationlogs
ORDER BY time DESC
LIMIT 5
 

IonCannon218

New Member
Messages
177
Reaction score
2
Points
0
Thanks, how do I do the uid checking in php code?

I only want the rows that match the uid of the client.
 

garrettroyce

Community Support
Community Support
Messages
5,611
Reaction score
249
Points
63
"SELECT input, response, uid
FROM conversationlogs
WHERE uid = $uid
ORDER BY time DESC
LIMIT 5"

you can call $uid whatever you want, just make sure it contains a valid uid :)
 

xav0989

Community Public Relation
Community Support
Messages
4,467
Reaction score
95
Points
0
You can remove the uid field from the query, as you already have it's value.
 
Top