By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
426,011 Members | 1,000 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 426,011 IT Pros & Developers. It's quick & easy.

Transferring $_GET variable to $_POST

P: 23
I have a script that recieves an id number via the address bar when a link is clicked.

ie . index.php?id=1 if the link was for the story whose ID is 1.

My script checks if a user is logged in, if not they are redirected to the login page.

If logged in they may edit the story.

I assign $_GET['id'] to $id.

So I check if the form is submitted, if submitted, handle the data, output a success message(for now).

$_GET['id'] is ok up to this point, the correct id is outputted when checked with a simple echo $_GET['id']; and with an echo $id'

If the form has not been submitted then the user will type their data into the input form and then submit it.

The problem is that when the form is submitted the $_GET['id'] is not passed.

Meaning that when the form goes through the If (isset($_POST['submitted'] {
the query SELECT * FROM table WHERE id = $ID fails because there is no id as the $_GET['id'] was never passed on when the form was submitted.

So, I know why the query is failing, ie. $id doesn't get a variable from $_GET['id'] when the form is submitted.

I just don't know who I would pass the ID from $_GET['id'] before the form has been submitted to $_GET['id'] after the page has been submitted.

Any help would be greatly appreciated.

Thankyou in advance.


Here is my code:

Expand|Select|Wrap|Line Numbers
  1. <?php 
  2. # Filename - edit_story.php
  3. # Date - 9th August 2007
  4. # Author - Stephen Hoult
  5. # Author Email - stephen@hoult.org.uk
  6.  
  7. // This file allows logged in users to edit a story.
  8.  
  9. // Include config file for error management and such
  10. include('./includes/config.inc.php');
  11.  
  12. // Set page title and include HTML header
  13. $page_title = 'Edit a Story';
  14. include('./includes/header.html');
  15.  
  16.  
  17. // If no first_name variable exists, redirect the user.
  18. if (!isset($_SESSION['first_name'])) {
  19.  
  20.     // Start defining the URL.
  21.     $url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']);
  22.     // Check for a trailing slash.
  23.     if ((substr($url, -1) == '/') OR (substr($url, -1) == '\\') ) {
  24.         $url = substr ($url, 0, -1); // Chop off the slash.
  25.     }
  26.  
  27.     // Add the page.
  28.     $url .= '/login.php';
  29.  
  30.     ob_end_clean(); // Delete the buffer.
  31.     header("Location: $url");
  32.     exit(); // Quit the script.
  33.  
  34. } else { // First name variable exists - user is logged in
  35.  
  36.  
  37.         // Connect to the Database
  38.         require_once('../mysql_connect_ur.php');
  39.  
  40.  
  41.     if (isset($_POST['submitted'])) { // if the form has beeen submitted
  42.  
  43.         echo' The form has been submitted.';
  44.  
  45.         // Handle the form
  46.         // Get story ID
  47.             if (isset($_GET['id'])) {
  48.                 $id = escape_data($_GET['id']);
  49.                 echo '<p>The story ID is: ' . $id . '.</p>';
  50.             } else {
  51.                 $id = FALSE;
  52.                 echo '<p><font color="red" size="+1">No ID has been selected.</font></p>';
  53.             }
  54.  
  55.         // Validate title
  56.         if(!empty($_POST['title'])) {
  57.             $t = escape_data($_POST['title']);
  58.         } else {
  59.             echo '<p><font color="red" size="+1">Please enter a title.</font></p>';
  60.         }
  61.  
  62.         // Validate main text
  63.         if(!empty($_POST['main_text'])) {
  64.             $mt = escape_data($_POST['main_text']);
  65.         } else {
  66.             echo '<p><font color="red" size="+1">Please enter the main text.</font></p>';
  67.         }
  68.  
  69.  
  70.                 // Check that the ID exists in the database.
  71.                 // Build query
  72.                 $query = "SELECT id, title, main_text FROM content WHERE id =$id";
  73.                 $result = mysql_query($query);
  74.  
  75.                 echo '<p>Query: ' . $query .'</p>';
  76.  
  77.                     if (mysql_num_rows($result == 1)) { // If a row was found by the query - ie the story id exists in the table.
  78.  
  79.                         echo '<p>Success a row for this ID exists.</p>';
  80.  
  81.  
  82.                     } else {        
  83.                         echo '<p><font color="red" size="+1">The selected ID does not exist in the database. Please try again.</font></p>';
  84.                     } // End mysql_num_rows($result) to see if id exists in the table.
  85.  
  86.  
  87.         } else { // The form has not yet been submitted - Display the form    
  88.         echo' The form hasn\'t been submitted.';
  89.         // Get story ID
  90.             if (isset($_GET['id'])) {
  91.                 $id = escape_data($_GET['id']);
  92.                 echo '<p>The story ID is: ' . $id . '.</p>';
  93.             } else {
  94.                 $id = FALSE;
  95.                 echo '<p><font color="red" size="+1">No ID has been selected.</font></p>';
  96.             }
  97.  
  98. ?>
  99.  
  100.  
  101. <fieldset><legend>Edit a story</legend>
  102.  
  103. <form action="edit_story.php" method="post" >
  104.  
  105.     <p>Title: <input type="text" name="title" size="30" maxlength="50" value="<?php if (isset($_POST['title'])) echo $_POST['title']; ?>" /></p>
  106.  
  107.     <p>Main Text<textarea name="main_text" cols="40" rows="5"/><?php if (isset($_POST['main_text'])) echo $_POST['main_text']; ?></textarea></p>
  108.  
  109.     <p><input type="submit" name="submit" value="Submit" /></p>
  110.     <input type="hidden" name="submitted" value="TRUE" />    
  111.  
  112.  
  113. </form>
  114.  
  115. </fieldset>
  116.  
  117. <?php
  118. }// End of if is submitted                    
  119.  
  120. } // End of is logged in
  121.  
  122. include('./includes/footer.html'); // Include HTML footer
  123. ?>
  124.  
Aug 10 '07 #1
Share this Question
Share on Google+
2 Replies


P: 23
I figured out a fix for this.

To solve the problem I created a hidden text box and used it to assign $id to $_POST['id']

Allowing me to pull the id from $_POST['id'] when the form had been submitted.

Here is the fixed script.

[php]
<?php
# Filename - edit_story.php
# Date - 9th August 2007
# Author - Stephen Hoult
# Author Email - stephen@hoult.org.uk

// This file allows logged in users to edit a story.

// Include config file for error management and such
include('./includes/config.inc.php');

// Set page title and include HTML header
$page_title = 'Edit a Story';
include('./includes/header.html');


// If no first_name variable exists, redirect the user.
if (!isset($_SESSION['first_name'])) {

// Start defining the URL.
$url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']);
// Check for a trailing slash.
if ((substr($url, -1) == '/') OR (substr($url, -1) == '\\') ) {
$url = substr ($url, 0, -1); // Chop off the slash.
}

// Add the page.
$url .= '/login.php';

ob_end_clean(); // Delete the buffer.
header("Location: $url");
exit(); // Quit the script.

} else { // First name variable exists - user is logged in


// Connect to the Database
require_once('../mysql_connect_ur.php');


if (isset($_POST['submitted'])) { // if the form has beeen submitted

echo' The form has been submitted.';

// Get story ID
if (isset($_POST['id'])) {
$id = escape_data($_POST['id']);
echo '<p>The story ID is: ' . $id . '.</p>';
} else {
$id = FALSE;
echo '<p><font color="red" size="+1">No ID has been selected.</font></p>';
}

// Handle the form

// Validate title
if(!empty($_POST['title'])) {
$t = escape_data($_POST['title']);
} else {
echo '<p><font color="red" size="+1">Please enter a title.</font></p>';
}

// Validate main text
if(!empty($_POST['main_text'])) {
$mt = escape_data($_POST['main_text']);
} else {
echo '<p><font color="red" size="+1">Please enter the main text.</font></p>';
}


// Check that the ID exists in the database.
// Build query
$query = "SELECT id, title, main_text FROM content WHERE id = $id";
$result = mysql_query($query);
$num = mysql_num_rows($result);



if ($num == 1) { // If a row was found by the query - ie the story id exists in the table.

echo '<p>Success a row for this ID exists.</p>';

// Update the database
$query = "UPDATE content SET title='$t', main_text='$mt' WHERE id = $id";
$result = mysql_query($query);

echo $query ;

// Check to see if update was successful
if (mysql_affected_rows() == 1) { // If 1 row was affected by the update
echo '<p>The story has been edited.</p>';

} else {
echo '<p><font color="red" size="+1">The story could not be updated. Please try again</font></p>';
}// End If update was successful


} else {
echo '<p><font color="red" size="+1">The selected ID does not exist in the database. Please try again.</font></p>';
} // End mysql_num_rows() to see if id exists in the table.


} else { // The form has not yet been submitted - Display the form
echo' The form hasn\'t been submitted.';

// Get story ID
if (isset($_GET['id'])) {
$id = escape_data($_GET['id']);
echo '<p>The story ID is: ' . $id . '.</p>';
} else {
$id = FALSE;
echo '<p><font color="red" size="+1">No ID has been selected.</font></p>';
}

?>


<fieldset><legend>Edit a story</legend>

<form action="edit_story.php" method="post" >

<p>Title: <input type="text" name="title" size="30" maxlength="50" value="<?php if (isset($_POST['title'])) echo $_POST['title']; ?>" /></p>

<p>Main Text<textarea name="main_text" cols="40" rows="5"/><?php if (isset($_POST['main_text'])) echo $_POST['main_text']; ?></textarea></p>

<p><input type="submit" name="submit" value="Submit" /></p>
<input type="hidden" name="submitted" value="TRUE" />
<input type="text" name="id" value="<?php $_POST['id'] = $id; echo $_POST['id'] ;?>">


</form>

</fieldset>

<?php
}// End of if is submitted

} // End of is logged in

include('./includes/footer.html'); // Include HTML footer
?>
[/php]
Aug 10 '07 #2

pbmods
Expert 5K+
P: 5,821
Changed thread title to better describe a problem (threads tend to get more responses when the title contains nouns *and* verbs, with emphasis on plural).

Heya, Keeps.

Thanks for posting your solution.

Glad to hear you got it working! Good luck with your project, and if you ever need anything, post back anytime :)
Aug 13 '07 #3

Post your reply

Sign in to post your reply or Sign up for a free account.