Jump to content

Update form/function not working. Can't figure out why


Recommended Posts

I've tried a few different methods, but I can't get this damn function to work. Can someone show me where I've gone wrong?

 

Here's my code & form. I'm still baffled why it doesn't work! :lol:

 

url is update-content.php?id=12

 

<?php
    include("../include/session.php");
      
      if(!$session->logged_in)
      {   
          header('Location: ../login.php');
          die; 
      } 
    require_once('../include/functions.php');
    


    function content($id)
    {    
        $id = $_GET['id'];
        $connection = db_connect();            
        $query = sprintf("select * from content where id = '$id'",                                     
                                     mysql_real_escape_string($id)                                
                                     ); 
            
            $result = mysql_query($query);                
            $number_of_posts = mysql_num_rows($result);
            if ($number_of_posts == 0) 
            {
              return false;    
            }            
            $row = mysql_fetch_array($result);            
            return $row;            
    }

function update($param)
{
     // Get the content id from url to output into the editor    
     $id = $_GET['id'];
     $connect = db_connect();
    
            $page = mysql_real_escape_string($_POST['page']);
            $page_id = mysql_real_escape_string($_POST['page_id']);
            $title = mysql_real_escape_string($_POST['title']);
            $text = mysql_real_escape_string($_POST['text']);   
                    
            $query = ("UPDATE content SET
                                                page = '$page'
                                                page_id = '$page_id'
                                                title = '$title'
                                                text = '$text'
                                             WHERE id = '$id'
                                             ");
             $result = mysql_query($query); 
    
            if (!$result) {
                return false;
            } else {
                return true;
            }                           
}  

?>

<?php
        // Send form data to mysql    
        if(isset($_POST['text']))
        {
            $result = update($_POST);
            if($result === true)
            {
                echo 'Success!';
                die();
            }
        }
        
?> 

 

 

And the form..

<form form name="editor" id="editor" method="post"  action="update-content.php">
  <p><br />
        <b>Assign to page</b><br />
          <input name="page" id="page" size="60" maxlength="500" value="<?php $page = content($id);  echo stripslashes($page['page']); ?>" />
    
          <br />
          <br />
          <b>Page id</b>
          <input  name="page_id" id="page_id" size="4" maxlength="4" value="<?php $page_id = content($id); echo stripslashes($page_id['page_id']); ?>" />
          <br />
          <br />                                                
    
    <b>Title</b>
           <span class="smalltext">(Just a short name this piece of content)</span><br />
          <input name="title" id="title" size="60" maxlength="200" value="<?php $title = content($id);  echo stripslashes($title['title']); ?>" />
          <br />
          <br />
          <br />
      <strong>Content</strong> <span class="smalltext">(paste html in here)</span><br />
      <textarea name="text" id="text" cols="75" rows="15"><?php $text = content($id); echo stripslashes($text['text']); ?></textarea>
      <?php //turn the text area into CK Editor  echo $ckeditor_ini; ?>
          <br />
          <input type="image" src="../images/button_submit.gif" alt="submit" name="submit" value="submit" />
   <a href="index.php"><img src="../images/button_cancel.gif" alt="Cancel" width="120" height="26" border="0" />   
    </form> 

 

 

Are you getting any errors?

 

1 - Here you define the function and require that $id be passed in as a parameter, then you immediately overwrite $id with whatever value $_GET['id'] holds. Why?

  function content($id)
    {    
        $id = $_GET['id'];

 

 

2 - In the second function, you require the parameter $param, then never use its value.

 

3 - I don't see where you ever actually call either of the functions anywhere . . .

Thanks pikachu

 

the $id in function content ($id) is just holding $id as an array that I can use to fetch data from the row and echo it into the form values. That part is working fine.

 

Its the update() function that I am having trouble with. I am calling it in this line (well I think that's what it should be doing anyway) maybe this is the bit I've got wwrong:

if(isset($_POST['text'])) { 
$id =  $_GET['id'];
$result = update($id);
}

If you don't need to actually pass a parameter to the function, you can simply omit it from the definition. Then you call the function with empty parentheses: $result = update();

 

Since the success or failure of the function depends on $_GET['id'] having a value, you should also check for that in the function.

 

function update() {
// Get the content id from url to output into the editor
if( !empty($_GET['id']) ) {
	$id = $_GET['id'];
	$connect = db_connect();

	$page = mysql_real_escape_string($_POST['page']);
	$page_id = mysql_real_escape_string($_POST['page_id']);
	$title = mysql_real_escape_string($_POST['title']);
	$text = mysql_real_escape_string($_POST['text']);

	$query = ("UPDATE content SET
                                                page = '$page'
                                                page_id = '$page_id'
                                                title = '$title'
                                                text = '$text'
                                             WHERE id = '$id'
                                             ");
	$result = mysql_query($query);

	if (!$result) {
		return false;
	} else {
		return true;
	}
} else {
	return FALSE;
}
}

Thanks, I did try without a parameter and just setting the WHERE clause to $id (the value of $_GET ['id']) but it still doesn't update the database. Thanks for the tip about checking $_GET ['id'] :)

 

I'm wondering if its something to do with this line:

if(isset($_POST['text'])) { 
$result = update();
}

It works ok for insert, but for some baffling reason, I can't make this update work.

You could always add an else{} clause, something to the effect of this:

 

if(isset($_POST['text'])) { 
     $result = update();
} else {
     echo 'Function can\'t run because $_POST[\'text\'] isn\'t set.';
}

Hmm great, getting somewhere now thanks.

 

The Function can't run because $_POST['text'] isn't set. message appears as soon as the page is loaded now, before I even submit the form. However, the <textarea name="text" id= "text"> is set, it has text in it. Now I'm baffled by that instead lol  :P

You might test it with <input type="submit" instead of <input type="image" and see what happens. IIRC, quite a few browsers have trouble with images as submit buttons.

WOOOHOOO!!! I solved it, only taken me a whole day to figure it out lol

 

function update($params)
{ 
      $id = $_POST['id'];  // this is the bit that made it work..
  $connection = db_connect();		
  $query = sprintf("update content set page = '%s',
                                                page_id = '%s',
                                                title = '%s',
                                                text = '%s'
									where id = '$id'", 
						mysql_real_escape_string($params['page']),
                            mysql_real_escape_string($params['page_id']),
                            mysql_real_escape_string($params['title']),
						mysql_real_escape_string($params['text'])
                            );		
  $result = mysql_query($query);
	if (!$result)
	{
	  return false;
	}
	else
	{
	  return true;
	}		
}

Then I just added this to the form. It may not be ideal, but the damn thing works at last :)

<input type="hidden" name="id" id="id" size="4" maxlength="4" value="<?php $id = content($id); echo stripslashes($id['id']); ?>" />

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.