Jump to content

Eiolon

Members
  • Posts

    358
  • Joined

  • Last visited

Posts posted by Eiolon

  1. Any data submitted through POST or GET should be considered possibly malicious and must be properly validated and sanitized. Just as a user can enter data on the URL they may also create their own forms to post data.

     

    Yes, this is what I was referring to.  Is there any information on how to "validate and sanitize" the data?

  2. Are there any tutorials on this?  Basically, I want to make it so people can't type in the URL to delete a record and whatnot.

     

    Also, what are your thoughts on using $_SESSION instead of $_GET to navigate records?  For example, use $_GET to set the session and use the session thereafter to do the queries.

  3. I have an error message that appears if the username or password field has not been filled out. The problem is it always appears in the upper left hand corner of the screen. How would I make it so I can control where in the layout the message appears?

     

    <?php // Verify that the username has been entered.
    if (empty($_POST['username'])) {
    $u = FALSE;
    echo 'You must enter a username.<br />';
    } else {
    $u = escape_data($_POST['username']);
    }
    
    // Verify that the password has been entered.
    if (empty($_POST['password'])) {
    $p = FALSE;
    echo 'You must enter a password.<br />';
    } else {
    $p = escape_data($_POST['password']);
    }
    
    ?>

     

    Thanks!

  4. Sorry, I am a novice.  When you mean variable interpolation, what do you mean?  Like this?

     

    // Query the database for topic and reply information.
    $query_topics = "SELECT t.*, r.*, DATE_FORMAT(t.topic_last_reply, '%c/%e/%Y %l:%i %p') AS convdate FROM topics t LEFT JOIN replies r ON (t.topic_id = r.reply_topic) WHERE t.topic_forum = ".$_GET['forum_id']." GROUP BY t.topic_subject ORDER BY t.topic_last_reply DESC";
    $topics = mysql_query($query_topics) OR die ('Cannot retrieve a list of topics.');
    $row_topics = mysql_fetch_array($topics);

  5. I made a forum and it works for the most part.  The problem I have is when I query for the list of topics in the forum, anything with 0 replies does not get shown.  Once I have a reply to that topic it gets shown.  Here is the query:

     

    SELECT t.*, r.*, DATE_FORMAT(t.topic_last_reply, '%c/%e/%Y %l:%i %p') AS convdate FROM topics t LEFT JOIN replies r ON (t.topic_id = r.reply_topic) WHERE t.topic_forum = ".$_GET['forum_id']." GROUP BY t.topic_subject HAVING t.topic_num_replies >= 0 ORDER BY t.topic_last_reply DESC

     

    Thanks!

  6. Hello,

     

    I am making a column called "Last Post" much like the one used on this forum.  It will display the date, time and user of the lastest reply to a thread.  The problem I am having is it's querying the very first reply.

     

    Query:

     

    // Query the database for topic and reply information.
    $query_topics = "SELECT t.*, r.* FROM topics t JOIN replies r ON (t.topic_id = r.reply_topic) WHERE topic_forum = ".$_GET['forum_id']." GROUP BY t.topic_subject ORDER BY t.topic_date DESC";
    $topics = mysql_query($query_topics) OR die ('Cannot retrieve a list of topics.');
    $row_topics = mysql_fetch_array($topics);

     

    PHP:

     

              <table width="100%" border="0" cellspacing="1" cellpadding="6" bgcolor="#CCCCCC">
                <tr bgcolor="#E5E5E5">
                  <td><strong>Topic</strong></td>
                  <td width="75"><div align="center"><strong>Replies</strong></div></td>
                  <td width="250"><div align="center"><strong>Author</strong></div></td>
                  <td width="250"><div align="center"><strong>Last Post</strong></div></td>
                </tr>
                <?php do { ?>
                <tr bgcolor="#FFFFFF">
                  <td><a href="topic.php?topic_id=<?php echo $row_topics['topic_id'] ?>"><?php echo $row_topics['topic_subject'] ?></a> </td>
                  <td width="75"><div align="center"><?php echo $row_topics['topic_num_replies'] ?></div></td>
                  <td width="250"><div align="center"><?php echo $row_topics['topic_author'] ?></div></td>
                  <td width="250"><div align="center"><?php echo $row_topics['reply_date'] ?> by <?php echo $row_topics['reply_author'] ?></div></td>
                </tr>
                <?php } while ($row_topics = mysql_fetch_array($topics)); ?>
              </table>

     

    Many thanks!

  7. When I created a table I accidentally forgot to make the id a primary key and auto_increment.  Can I go back and make it this way or do I need to recreate the table?

     

     

    WANTED

    reply_id int not null primary key auto_increment

     

    ENDED UP WITH

    reply_id int not null default '0'

     

    Thanks!

  8. The above query does get rid of the duplicate forum.  The problem that occurs with removing the topic_num_replies is I am doing math in the do-while statement to give me the total posts.  It adds forum_num_topics + topic_num_replies to get the total posts.

     

    So if I were to add another column, forum_num_posts, how would I modify my above insert query for adding a reply?  Currently I have it updating the topics table upon a successful insert.  Is it possible to update two tables upon successful insert?

     

    Thanks again for all your help on this!

  9. Looks to be the same output.

     

    mysql> SELECT DISTINCT f.forum_id, f.forum_name, f.forum_desc, f.forum_num_topics, t.topic_num_replies, t.topic_forum FROM forums f JOIN topics t ON (f.forum_id = t.topic_forum);
    +----------+--------------------+---------------------------------------------------+------------------+-------------------+-------------+
    | forum_id | forum_name         | forum_desc                                        | forum_num_topics | topic_num_replies | topic_forum |
    +----------+--------------------+---------------------------------------------------+------------------+-------------------+-------------+
    |        5 | The Lounge         | Chat about anything not related to the library.   |                2 |                11 |           5 |
    |        3 | General Discussion | Talk about general library business, issues, etc. |                1 |                 1 |           3 |
    |        4 | Library Expansion  | Discuss the library expansion project.            |                1 |                 1 |           4 |
    |        5 | The Lounge         | Chat about anything not related to the library.   |                2 |                 0 |           5 |
    +----------+--------------------+---------------------------------------------------+------------------+-------------------+-------------+
    4 rows in set (0.00 sec)
    

  10. Certainly, here you go:

     

    mysql> SELECT topic_subject,topic_forum from topics;
    +-----------------------------+-------------+
    | topic_subject               | topic_forum |
    +-----------------------------+-------------+
    | Welcome to the forums!      |           5 |
    | use of others library cards |           3 |
    | The new room                |           4 |
    | South Wing                  |           5 |
    +-----------------------------+-------------+
    4 rows in set (0.00 sec)
    
    

     

    mysql> SELECT forum_id,forum_desc,forum_num_topics from forums;
    +----------+---------------------------------------------------+------------------+
    | forum_id | forum_desc                                        | forum_num_topics |
    +----------+---------------------------------------------------+------------------+
    |        3 | Talk about general library business, issues, etc. |                1 |
    |        4 | Discuss the library expansion project.            |                1 |
    |        5 | Chat about anything not related to the library.   |                2 |
    +----------+---------------------------------------------------+------------------+
    3 rows in set (0.00 sec)
    

  11. Insert query for adding a topic:

     

    $insert = "INSERT INTO topics (topic_subject, topic_author, topic_body, topic_date, topic_forum) VALUES ('".$_POST['topic_subject']."','".$_POST['topic_author']."','".$_POST['topic_body']."',now(),'".$_GET['forum_id']."')";
    $result = mysql_query($insert) OR die ('Could not add topic to forum.');
    
    if ($insert) {
    $update = "UPDATE forums SET forum_num_topics = '$topics', forum_num_posts = '$posts' WHERE forum_id = ".$_GET['forum_id']."";
    $update_result = mysql_query($update) OR die ('Could not add to topic total.');
    header('Location: topic_added.php');
    exit; }	
    

     

     

    Insert query for adding a reply:

     

    $insert = "INSERT INTO replies (reply_author, reply_body, reply_date, reply_topic) VALUES ('".$_POST['reply_author']."','".$_POST['reply_body']."',now(),'".$_GET['topic_id']."')";
    $result = mysql_query($insert) OR die ('Could not add reply to topic.');
    
    if ($insert) {
    $update = "UPDATE topics SET topic_num_replies = '$replies' WHERE topic_id = ".$_GET['topic_id']."";
    $update_result = mysql_query($update) OR die ('Could not add to reply total.');
    header('Location: reply_added.php');
    exit; }	
    

     

    I just want to be clear that it's not actually inserting the duplicate forums into the database.  It appears that it's the join making the output duplicate, but I have tried every join that I could find and still no resolution.

  12. I created a small forum which seems to be working with one exception.  Whenever more than 1 topic is created in a forum it duplicates the forum on the main page and also gives the duplicate the wrong post count.

     

    Query:

     

    $query_both = "SELECT f.forum_id, f.forum_name, f.forum_desc, f.forum_num_topics, t.topic_num_replies, t.topic_forum FROM forums f JOIN topics t ON (f.forum_id = t.topic_forum)";
    $both = mysql_query($query_both) OR die ('Cannot retrieve forum information.');
    $row_both = mysql_fetch_array($both);
    

     

    Table:

     

              <table width="100%" border="0" cellspacing="1" cellpadding="6" bgcolor="#CCCCCC">
                <tr bgcolor="#E5E5E5">
                  <td><strong>Forum</strong></td>
                  <td width="75"><div align="center"><strong>Topics</strong></div></td>
                  <td width="75"><div align="center"><strong>Posts</strong></div></td>
                </tr>
                <?php do { 
    
    		$number1 = $row_both['forum_num_topics'];
    		$number2 = $row_both['topic_num_replies'];
    		$posts = $number1 + $number2;
    
    		?>
                <tr bgcolor="#FFFFFF">
                  <td><a href="forum.php?forum_id=<?php echo $row_both['forum_id'] ?>"><?php echo $row_both['forum_name'] ?></a> - <?php echo $row_both['forum_desc'] ?></td>
                  <td width="75"><div align="center"><?php echo $row_both['forum_num_topics'] ?></div></td>
                  <td width="75"><div align="center"><?php echo $posts ?></div></td>
                </tr>
                <?php } while ($row_both = mysql_fetch_array($both)); ?>
              </table>
    

     

    Result after more than 1 topic is created in the forum (duplicate in red square):

     

    php.gif

     

    Thanks for your help!

     

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.