"Jennifer Downey" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]...

> I have no takers on this one?

You would have more help if you didn't glumph
a whole whack of code in... it takes five minutes
just to sort out what's what.


>  if I have on item it is fine. If I have two items it
> won't update the first items price but will the
> second. if I try to enter a price in the first items
> textbox it doesn't update and then deletes the
> second item's price.

It sounds like you are trying to return multiple
values to a single variable - ie, you need to
return an array, then iterate through the array
to process it.


>    $uid = $row['uid'];
>    $id = $row['id'];
>    $name = $row['name'];
>    $image = $row['image'];
>    $iquantity = $row['quantity'];
>    $itype = $row['type'];
>    $iprice = $row['price'];

Look up the documentation on extract()


> if($update)
> {
>      $eprice = '$price[]';
>          $query = "UPDATE {$config["prefix"]}_shop SET price = '$eprice'
> where uid = {$session["uid"]} AND id = '$id'";
>          $ret = mysql_query($query) or die(mysql_error());

if(isset($update) and is_array($price))
    foreach($price as $id => $newval)
        if ($newval != "") {
            $query =
                "UPDATE {$config['prefix']}_shop "
                ."SET price='$newval' "
                ."WHERE uid='{$session['uid']}' AND id='$id' ";
            mysql_query($query) or die(mysql_error());
        }



>              echo "<TABLE BORDER='0' WIDTH='95%' CELLPADDING='0'
> CELLSPACING='0'><TR>";
>              echo "<TD width=20%><img src='$image'></TD>";
>              echo "<TD width=30%><font size=2>$name</font></TD>";
>              echo "<TD width=20%><font
> size=2><CENTER>$iquantity</CENTER></font></TD>";
>              echo "<TD width=30%><font size=2><CENTER><a
> href='$PHP_SELF?id=$id&remove=yes'>X</a></CENTER></font></TD>";
>              echo "<TD width=30%><font size=2><CENTER><input type=\"text\"
> value=\"\" name=\"price[]\" size='8'
> MAXLENGTH='8'><BR></a></CENTER></font></TD>";
>              echo "</TD></TR></TABLE>";
>        echo "<input=\"hidden\" name=\"remove\" value=\"yes\">";
> }

(grin)  you realize your column widths add to 130% ?

This is not necessarily a problem; rather, I point it out as
a symptom of poorly formatted and hard-to-follow code.

I often find it useful to write simple table-making functions
just so it's easier to follow what's going on... something
like


// adjustable indentation for prettyprinting
define("BEGINTABLE", "\n\t");
define("ENDTABLE", "\n\t");
define("BEGINROW", "\n\t\t");
define("ENDROW", "\n\t\t");
define("BEGINCELL", "\n\t\t\t");
define("ENDCELL", "");
define("BEGINCONTENTS", "");

function makeTable($content, $width="", $border=0) {
    return
        BEGINTABLE."<table"
        .( $width != "" ? " width='$width'" : "")
        ." border='$border' cellspacing='0' cellpadding='0'>"
        .$content
        .ENDTABLE."<\table>";
}

function makeRow($content) {
    return
        BEGINROW."<tr>"
        .$content
        .ENDROW."<\tr>";
}

function makeCell($content="", $width="") {
    return
        BEGINCELL."<td".($width != "" ? " width='$width'" : "").">"
        .($content != "" ? $content : "&nbsp;")
        .ENDCELL."</td>";
}


Then your code turns into

// separate out the recurrent formatting
$s = "<div style='font-size: larger; align=center;'>";
$e = "</div>";

$content = makeRow(
     makeCell($s."Image".$e,                "20%")
    .makeCell($s."Name".$e,                "30%")
    .makeCell($s."Quantity".$e,            "20%")
    .makeCell($s."Remove Item".$e,     "30%")
    .makeCell($s."Price".$e,                 "30%")
);
// Wow, the odd total here is a lot more obvious!

$query =
    "SELECT uid, id, name, image, type, quantity "
    ."FROM {$config["prefix"]}_shop "
    ."WHERE uid = {$session["uid"]}";
$res = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_array($res)) {
    extract($row);
    $content .= makeRow(
         makeCell("<img src='$image'>")
        .makeCell($s.$name.$e)
        .makeCell($s.$quantity.$e)
        .makeCell($s."<input type='checkbox' "
                ."name='rem[$id]' value='true'>".$e)
        .makeCell($s."<input type='text' value='' "
                ."name='price[$id]' size='8' maxlength='8'>".$e)
    );
}

echo
    "\n<form>"
        .makeTable($content, "95%")
        .$s
            ."<input type='reset' value='Clear form'>"
            ."<input type='submit' name='update' "
                    ."value='Update And Remove'>"
        .$e
    ."\n</form>";



... I have changed a few things; for one, instead
of removing items singly, I have refit a set of
checkboxes, returning an array of selected items
for removal.

Also, note my use of single-quotes inside the double-quoted
strings... I find this much easier to follow, instead of umpteen
dozen escaped double-slashes.

I hope this is of some use to you.
  Hugh.



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to