1. Advertising
    y u no do it?

    Advertising (learn more)

    Advertise virtually anything here, with CPM banner ads, CPM email ads and CPC contextual links. You can target relevant areas of the site and show ads based on geographical location of the user if you wish.

    Starts at just $1 per CPM or $0.10 per CPC.

POST into Array problem

Discussion in 'PHP' started by koolsamule, Nov 30, 2009.

  1. #1
    Hi Chaps,

    I have a repeat region, displaying rows of data: jobid, fromtable, translatorcharge
    In each row there is an input field to enter a cost for each job 'charge'.
    //INPUT - TRANSLATOR CHARGE
    <input type="text" name="translatorcharge" id="count" class="price" value="<?php echo $row_rsInvPending['jobtranslatorcharge']; ?>"/>
    HTML:
    I have a hidden input that collects the information for each row, before sending all the information to a script page:
    //HIDDEN INPUT - INFO COLLECTOR
    
    $table_name = $row_rsInvPending['fromtable'];
    $item_id = $row_rsInvPending['jobid'];
    ?>
    <input type="hidden" name="jobinvsent[]" value="<?php echo $table_name; ?>:<?php echo $item_id; ?>:<?php $_POST['translatorcharge'] ?>" />
    PHP:
    The script page then updates the translatorcharge column in the relevant table:
    //SCRIPT - TO UPDATE DATABASE
    $allowed_tables = Array('tbl_jobs','tbl_jobtransline','tbl_jobxml'); // to prevent SQL injection
    foreach($_POST['jobinvsent'] as $var) {
        $arr = explode(':', $var);
        if(in_array($arr[0], $allowed_tables)) {
            $table = $arr[0];
            $rowid = $arr[1];
            $transcharge = $_POST['translatorcharge'];
            if(is_numeric($rowid)) {
                // run your SQL query here to update $table where row matches $rowid
                $mess = $ref = $_SERVER['HTTP_REFERER']; header( 'refresh: 0; url='.$ref);
                $query = sprintf("UPDATE $table SET jobtranslatorcharge='$transcharge' WHERE jobid=$rowid");
                $result = mysql_query($query, $conndb2) or die(mysql_error());
            }
        else {
      $mess = "<p>There was a problem</p>";
    }
        }
    }
    PHP:
    The problem is, although I'm entering different values for each row, only the last entered value is being passed to the array and therefore updating all rows with the same value.
    My questions is, how can I 'individualise' each input, relating to each row?
     
    koolsamule, Nov 30, 2009 IP
  2. JAY6390

    JAY6390 Peon

    Messages:
    918
    Likes Received:
    31
    Best Answers:
    0
    Trophy Points:
    0
    #2
    Put a unique id inbetween the [] for jobinvsent[]
    change it to
    jobinvsent[<?php echo $i++; ?>]
    if each row already has some kind of id you can identify it by, put that there instead of the $i++
     
    JAY6390, Nov 30, 2009 IP
  3. koolsamule

    koolsamule Peon

    Messages:
    101
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #3
    Hi thanks for the advice.
    I can get a unique jobinvsent[] array, that's not the problem, it's the unique $_POST['translatorcharge'] that I'm having issues with...
     
    koolsamule, Nov 30, 2009 IP