lost $id variable in $_POST statement

Discussion in 'PHP' started by gregorious, Jul 31, 2007.

  1. #1
    I am trying to get some radio buttons to work, but before I even got into the logic of radio buttons I ran into a snag with my $id variable not being avaiable for the whole page [speifically - the top $_POST portion of the page].

    Below is a condensed version of my page code. There is are two variables passed to this page from the previous page: $id and $imageid

    
    
    <html> 
    
    <head> 
            <title>Untitled 3</title> 
    </head> 
    <body> 
    
    <?php 
    if (isset($_POST['editimage'])): 
            $imageresorder = $_POST['imageresorder']; 
            $imagerescaption = $_POST['imagerescaption']; 
            $imageid = $_POST['imageid']; 
                       
                       
            $sqlupdate = "UPDATE image_res SET      
            image_res_order='$imageresorder', 
            image_res_caption='$imagerescaption' 
            WHERE image_id='$imageid'"; 
                                                               
    if (@mysql_query($sqlupdate)) {         
                                                               
              echo "Residential IMAGE updated!"; 
              
      } else { 
    
              echo "Error UPDATING database " . mysql_error() . "Call webmaster"; 
                      } 
                       
    
    // $setfeaturepic = "UPDATE residential SET 
    //  res_feature_pic='$imageid', 
    //  res_id='$id'                           
    //  WHERE res_id='$id'"; 
    
    // if (!mysql_query($setfeaturepic)) { 
    //   echo ("<p>Error UPDATING Feature Picture!" 
    //        . $imageid . "Call webmaster"); 
    //                    } 
                               
    ?> 
    
    
    <?php 
    
    else: 
                    
         $id = $_GET['id']; 
           $imageget = @mysql_query("SELECT 
            image_id, 
            image_res_id,                         
             image_res_order, 
            image_res_caption 
            FROM image_res, residential 
            WHERE image_res_id='$id' AND image_id='$imageid'"); 
                                       
            if (!$imageget) { 
            echo("Error SELECTING data from database!" . mysql_error() . "Call webmaster"); 
            exit(); 
            } 
            while ($imgarray = mysql_fetch_array($imageget)) { 
                    $imageid = htmlspecialchars($imgarray["image_id"]);              
                    $imageresorder = htmlspecialchars($imgarray["image_res_order"]); 
                    $imagerescaption = htmlspecialchars($imgarray["image_res_caption"]); 
                            }               
    ?> 
    
                    
    <?php endif; ?>          
            
    <form action='<?php echo $_SERVER[PHP_SELF];?>' method='post'> 
    
    <table width='300' border='0' cellspacing='0' cellpadding='0'> 
    <tr> 
    <td width='150' align='left' valign='top'> 
    <span class='caption_cap'>Display Order</span><br>            
    <input name='imageresorder' class='body01' size='3' maxlength='3' value='<?php echo $imageresorder;?>'><br> 
    </td> 
                         
    <td width='150' align='left' valign='top'><span class='caption_cap'>Feature Picture</span><br> 
    <input name='featurepic' type='radio' value='<?php $image_res_id;?>' ><span class='caption_cap'>yes</span> 
    <input name='featurepic' type='radio' value='' checked='' ><span class='caption_cap'>no</span> 
    </td>            
    </tr> 
    </table> 
                       
    <input name='imageid' type='hidden' value='<?php echo $imageid;?>' >  
                                 
    <span class='caption_cap'>Picture Caption</span><br> 
    <input name='imagerescaption' class='body01' size='36' maxlength='64' value='<?php echo $imagerescaption;?>'> 
                       
    <br> 
    <div align='center'><input type='submit' name='editimage' class='body01' value=' SAVE '></div> 
    </form>          
    
    
    <?php 
    $resselect = @mysql_query("SELECT 
            res_street01, 
            res_city, 
            FROM residential WHERE res_id='$id'"); 
                                   
                if (!$resselect) { 
                echo("Error selecting RESIDENTIAL data from database!" . mysql_error() . "Call webmaster"); 
                exit(); 
                } 
    
                while ($resarray = mysql_fetch_array($resselect)) {  
                    
                    $resstreet01 = htmlspecialchars($resarray["res_street01"]); 
                    $rescity = htmlspecialchars($resarray["res_city"]);                  
            } 
                                    
    ?>  
            
    <div align="center"><span class="caption_cap">Record Id&nbsp;&nbsp; <?php echo $id; ?></span></div> 
    <hr align='center' width='450' size='1' noshade> 
               
    <table width="400" border="0" align="center" cellpadding="0" cellspacing="0"> 
    <tr><td align="left" width="200"valign="top"> 
    <span class="listing01"> 
    <strong><?php echo $restype ;?></strong><br> 
    <?php echo $resstreet01 ;?><br> 
    <?php echo $rescity ;?></span>     
    </td> 
    </tr> 
    </table><br>     
            
    <?php 
    
           $imgselect = @mysql_query("SELECT 
            image_id, 
            image_res_order, 
            image_res_caption,                          
            FROM image_res 
            WHERE image_res_id='$id' ORDER by image_res_order"); 
            if (!$imgselect) { 
            echo    ("Error SELECTING data from database!" . mysql_error() . "Call webmaster");                   
            exit(); 
            } 
             while ($imgarray = mysql_fetch_array($imgselect)) { 
                    $imageresorder = htmlspecialchars($imgarray["image_res_order"]); 
                    $imagerescaption = htmlspecialchars($imgarray["image_res_caption"]);     
            
            
     echo      "<table width='340'  align='center' border='0' cellspacing='0' cellpadding='0'> 
                <tr> 
            <td width='170'><span class='body01'><strong>$imageresorder </strong></span> 
            <span class='caption_cap'>Display Order</span></td> 
                            
            <td width='170' align='left'><br><span class='caption_cap'>Picture Caption</span><br> 
                <span class='body01'><strong>$imagerescaption</strong></span></td> 
            </tr> 
            </table>"; 
            } 
    
    ?> 
            
            
           <?php @require_once('../includes/copyright.php'); ?>     
            
    <?php mysql_close() ?> 
    </body> 
    </html>
    
    PHP:
    The commented portion is my radio button code, that is where I need the $id variable - in the WHERE mysql statement.

    The $id tag seems to work everywhere else. What am I missing? Is there an "eregi (left-brain && hip-check)" function I need to study?

    I tried the placing the $id = (int)$_GET['id']; as shown below, but the $id variable is dead after the if (isset($_POST['editimage'])): statement and begins to return the value again after else: staement (see full code above)

    
    <?php 
    
       $id = (int)$_GET['id']; 
    echo $id;        <-----------works! 
       if (isset($_POST['editimage'])): 
              $imageresorder = $_POST['imageresorder']; 
              $imagerescaption = $_POST['imagerescaption']; 
              $imageid = $_POST['imageid']; 
    
       $sqlupdate = "UPDATE image_res SET 
              image_res_order='$imageresorder', 
              image_res_caption='$imagerescaption' 
              WHERE image_id='$imageid'"; 
    
             if (@mysql_query($sqlupdate)) { 
    
            echo "Residential IMAGE updated! $id "; <-----does not work! 
    PHP:
     
    gregorious, Jul 31, 2007 IP
  2. gregorious

    gregorious Peon

    Messages:
    18
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #2
    I may not be the sharpest tool in the shed; but my testing
    makes mesuspect these two colons. Outside of the colons
    the $id variable works.


    <?php
    if (isset($_POST['editimage'])):

    <?php
    else:

    Code from orignial message in this tread. Anyone got a clue?
     
    gregorious, Jul 31, 2007 IP
  3. ecentricNick

    ecentricNick Peon

    Messages:
    351
    Likes Received:
    13
    Best Answers:
    0
    Trophy Points:
    0
    #3
    Your form is being posted, but you're using $_GET['id'] rather than $_POST['id']?

    Plus you're logic doesn't look right, you possibly only store $id if there is no editimage? Is that correct? But, to be honest, I can't work out your if blocks using that : format (as Gregorious pointed out) - particularly as you've mixed formats - sometimes :, sometimes braces.

    Can you change it all to braces and re-post?
     
    ecentricNick, Aug 1, 2007 IP
  4. nagasharmi

    nagasharmi Peon

    Messages:
    28
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #4
    <?php

    $id = (int)$_GET['id'];
    echo $id;
    if (isset($_POST['editimage']))
    {
    $imageresorder = $_POST['imageresorder'];
    $imagerescaption = $_POST['imagerescaption'];
    $imageid = $_POST['imageid'];
    $sqlupdate = "UPDATE image_res SET image_res_order='$imageresorder', image_res_caption='$imagerescaption' WHERE image_id='$imageid'";
    if (@mysql_query($sqlupdate))
    {

    echo "Residential IMAGE updated! $_POST['id']";
    }
    }

    <form action="thsform.php" method="post">
    <input type="hidden" id="id" name="id" value="<? echo $_GET['id'] ?>" />
    </form>

    BZ what is the problem.

    if (isset) function will work whenever form will submit but in this submit how can it get $_GET method.
    so first $id willstroe into temp textbox and move from form into your process.

    is it clear
     
    nagasharmi, Aug 1, 2007 IP
  5. gregorious

    gregorious Peon

    Messages:
    18
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #5
    I have added a jpg to this thread to help clarify the page design.

    http://www.forthosewhowait.com/images/cms-editpage02.jpg

    The POST / ELSE removes the form and reports a successful upload when the user submits.

    I have tried POST and GET to bring the $id variable into the POST / ELSE but nothing seems to bring the value into that dead zone.
     
    gregorious, Aug 1, 2007 IP
  6. gregorious

    gregorious Peon

    Messages:
    18
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #6
    This is the URL being passed from the previous page.

    http://localhost/admin/edit_res_image.php?id=136&imageid=236
    Code (markup):
    I find it intersesting that the $imageid is being passed through out the page, but not the $id
     
    gregorious, Aug 1, 2007 IP
  7. Brewster

    Brewster Active Member

    Messages:
    489
    Likes Received:
    13
    Best Answers:
    0
    Trophy Points:
    60
    #7
    $imageid is being posted. Here is where in your script:

    
    <input name='imageid' type='hidden' value='<?php echo $imageid;?>' > 
    PHP:
    Brew
     
    Brewster, Aug 1, 2007 IP
  8. gregorious

    gregorious Peon

    Messages:
    18
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #8
    Your are a genius!!

    This is the second time a hidden value in the form has cost me hours on this project. I am going to learn from this one.

    SOLUTION! - to pass FORM variables back up to the POST they must be declared in the FORM.
    <input name='id' type='hidden' value='<?php echo $id;?>' >

    Only one question left... is there a willing hair donor out there?

    .
     
    gregorious, Aug 1, 2007 IP