Avatar billede big_ossi Nybegynder
19. september 2005 - 18:34 Der er 23 kommentarer og
1 løsning

Opdatering af flere ens rækker i mysql

Hey.

Har denne her order.php som viser indholdet af nogle ting en bruger kan lagt i sin kurv..

Men jeg ved ikke helt hvordan jeg gør så de kan ændte antallet eller slette i en eller flere af de tilføjet vare ved at trykke på opdater

min kode som henter dataen ov viser det i en liste:

order.php

--kodestart--
<?
if($s_navn && $s_password) {
?><head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.style1 {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 9px;
}
-->
</style>
</head><form action="" method="post">
<table width="98%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr class="style1"><td align="left" class="style1"><strong>Din indkøbskurv</strong></td>
<td></td><td></td><td></td></tr>
  <?
include("acon.php");
    $query = mysql_query("SELECT * FROM `jpc_varekurv` WHERE (`bruger` =$s_navn ) AND (`bestilt` =0 ) ORDER BY `kurvid` ASC") or die (mysql_error ());
if(mysql_num_rows($query) == "0"){
echo "Ingen vare I kurven"; }
    $count = 0;
    while($row = mysql_fetch_array($query)) {
$count++;

if($count%2)
{
echo "<tr bgcolor=\"#ADB09D\"><td width=\"\" align=\"left\"><a href=\"?side=shop/visvid.php&id=$row[vid]\">$row[vn]</td><td>Antal: <input name=\"vantal\" type=\"text\" id=\"vantal4\" value=\"$row[vantal]\" size=\"3\"></td><td>Pris:<td/><td align=\"right\"><b> $row[varetotal] kr.</b></td></tr>";
}
else
{
echo "<tr><td width=\"\" align=\"left\"><a href=\"?side=shop/visvid.php&id=$row[vid]\">$row[vn]</td><td>Antal: <input name=\"vantal\" type=\"text\" id=\"vantal4\" value=\"$row[vantal]\" size=\"3\"></td><td>Pris:<td/><td align=\"right\"><b> $row[varetotal] kr.</b></td></tr>";
}

}
$sql = "SELECT SUM(varetotal) AS vsum FROM jpc_varekurv WHERE (bruger='$s_navn') AND (bestilt=0)";
        $query = mysql_query($sql) or die (mysql_error());
        $row = mysql_fetch_assoc($query);
echo "<tr><td></td><td></td><td>I alt<td/><td align=\"right\"><b>$row[vsum] kr.</b></td></tr>";

?>
<tr class="style1"><td align="left"><input name="opdate" type="submit" id="opdate" value="Opdater"></td>
  <td>&nbsp;</td>
  <td></td><td></td></tr>
</table>
</form>
<?
} else {
echo "Login er krævet";
}
?>
---kodeslut---
Avatar billede jakobdo Ekspert
19. september 2005 - 19:07 #1
Du kunne jo trække info ud i en form, og så submitte disse data på ny!
Hvis f.eks. f.eks. antal = 0, så slet data!
Er antal != gammelt_antal, så opdatere vi info, osv.
Kan du følge mig?
Avatar billede big_ossi Nybegynder
19. september 2005 - 19:10 #2
Kan godt følge dig. men kan ikke lige lure hvordan man koder det.
Avatar billede big_ossi Nybegynder
19. september 2005 - 19:16 #3
if POST = opdate

opdate jpc_varekurv set vantal = POST vantal WHERE vid=POST vid AND bruger=$s_navn

noget i den stil vil jeg gætte på men det må skulle køre en loop eller hvordan ?
Avatar billede jakobdo Ekspert
19. september 2005 - 19:17 #4
Du er på rette vej synes jeg det ser ud til!
Ret denne linie:
<form action="" method="post">
til:
<form action="debug.php" method="post">
(det er bare for at teste)

Ret din kode if($count%2)
til:

if($count%2)
{
echo "<tr bgcolor=\"#ADB09D\">";
echo "<td width=\"\" align=\"left\">";
echo "<a href=\"?side=shop/visvid.php&id=$row[vid]\">$row[vn]</td>";
echo "<td>Antal: <input name=\"vantal[".$row[vid]."]\" type=\"text\" id=\"vantal4\" value=\"$row[vantal]\" size=\"3\"></td>";
echo "<td>Pris:<td/>";
echo "<td align=\"right\"><b> $row[varetotal] kr.</b></td></tr>";
}
else
{
echo "<tr><td width=\"\" align=\"left\">";
echo "<a href=\"?side=shop/visvid.php&id=$row[vid]\">$row[vn]</td>";
echo "<td>Antal: <input name=\"vantal[".$row[vid]."]\" type=\"text\" id=\"vantal4\" value=\"$row[vantal]\" size=\"3\"></td>";
echo "<td>Pris:<td/><td align=\"right\"><b> $row[varetotal] kr.</b></td></tr>";
}

og opret så filen debug.php med indholdet:

<?php
echo "<pre>";
print_r($_POST);
echo "</pre>";
?>

og se om du evt selv kan lure output ellers smid det herind.
Avatar billede jakobdo Ekspert
19. september 2005 - 19:19 #5
Dit indlæg fra: 19/09-2005 19:16:12
Du har fat i noget af det rigtige.
Den hedder dog UPDATE (og ikke opdate)
Loopet laver vi på arrayet: $_POST['vantal']
Avatar billede big_ossi Nybegynder
19. september 2005 - 19:34 #6
debug.php viser dette

Array
(
    [vantal] => Array
        (
            [35] => 100
            [55] => 1
            [120] => 1
            [22] => 5
            [95] => 55
        )

    [opdate] => Opdater
)
Avatar billede jakobdo Ekspert
19. september 2005 - 19:43 #7
Så kunne du lave en opdatering ala:

if(isset($_POST['opdate']))
{
    foreach($_POST['vantal'] as $id => $antal)
    {
        include("connect.php"); //forbind til DB, hvis ikke det allerede er gjort.
        mysql_query("UPDATE jpc_varekurv set vantal = ".$antal." WHERE vid=".$id." AND bruger=".$s_navn." LIMIT 1")
        if(mysql_affected_rows()==0)
        {
            echo "Fejl: " . mysql_error() . "<br>";
        }
    }
}
Avatar billede big_ossi Nybegynder
19. september 2005 - 20:10 #8
jes lur mig om det ikke giver fejl når jeg lægger den ind.

Kunne jeg få dig til at lægge den ind i denne kode: og lægge et svar.. eller under alle omstændigheder lægge et svar..

koden:

<?
if($s_navn && $s_password) {
?><head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.style1 {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 9px;
}
-->
</style>
</head><form action="" method="post">
<table width="98%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr class="style1"><td align="left" class="style1"><strong>Din indkøbskurv</strong></td>
<td></td><td></td><td></td></tr>
  <?
include("acon.php");
    $query = mysql_query("SELECT * FROM `jpc_varekurv` WHERE (`bruger` =$s_navn ) AND (`bestilt` =0 ) ORDER BY `kurvid` ASC") or die (mysql_error ());
if(mysql_num_rows($query) == "0"){
echo "Ingen vare I kurven"; }
    $count = 0;
    while($row = mysql_fetch_array($query)) {
$count++;

if($count%2)
{
echo "<tr bgcolor=\"#ADB09D\">";
echo "<td width=\"\" align=\"left\">";
echo "<a href=\"?side=shop/visvid.php&id=$row[vid]\">$row[vn]</td>";
echo "<td>Antal: <input name=\"vantal[".$row[vid]."]\" type=\"text\" id=\"vantal4\" value=\"$row[vantal]\" size=\"3\"></td>";
echo "<td>Pris:<td/>";
echo "<td align=\"right\"><b> $row[varetotal] kr.</b></td></tr>";
}
else
{
echo "<tr><td width=\"\" align=\"left\">";
echo "<a href=\"?side=shop/visvid.php&id=$row[vid]\">$row[vn]</td>";
echo "<td>Antal: <input name=\"vantal[".$row[vid]."]\" type=\"text\" id=\"vantal4\" value=\"$row[vantal]\" size=\"3\"></td>";
echo "<td>Pris:<td/><td align=\"right\"><b> $row[varetotal] kr.</b></td></tr>";
}
}
$sql = "SELECT SUM(varetotal) AS vsum FROM jpc_varekurv WHERE (bruger='$s_navn') AND (bestilt=0)";
        $query = mysql_query($sql) or die (mysql_error());
        $row = mysql_fetch_assoc($query);
echo "<tr><td></td><td></td><td>I alt<td/><td align=\"right\"><b>$row[vsum] kr.</b></td></tr>";

?>
<tr class="style1"><td align="left"><input name="opdate" type="submit" id="opdate" value="Opdater"></td>
  <td>&nbsp;</td>
  <td></td><td></td></tr>
</table>
</form>
<?
} else {
echo "Login er krævet";
}
?>
Avatar billede jakobdo Ekspert
19. september 2005 - 20:21 #9
<?
session_start();
if($s_navn && $s_password)
{
if(isset($_POST['opdate']))
{
    foreach($_POST['vantal'] as $id => $antal)
    {
        include("connect.php"); //forbind til DB, hvis ikke det allerede er gjort.
        mysql_query("UPDATE jpc_varekurv set vantal = ".$antal." WHERE vid=".$id." AND bruger=".$s_navn." LIMIT 1")
        if(mysql_affected_rows()==0)
        {
            echo "Fejl: " . mysql_error() . "<br>";
        }
    }
    header("localtion: " . $_SERVER['PHP_SELF'])
}
?><head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.style1 {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 9px;
}
-->
</style>
</head><form action="" method="post">
<table width="98%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr class="style1"><td align="left" class="style1"><strong>Din indkøbskurv</strong></td>
<td></td><td></td><td></td></tr>
  <?
include("acon.php");
    $query = mysql_query("SELECT * FROM `jpc_varekurv` WHERE (`bruger` =$s_navn ) AND (`bestilt` =0 ) ORDER BY `kurvid` ASC") or die (mysql_error ());
if(mysql_num_rows($query) == "0")
{
    echo "Ingen vare I kurven";
}
else
{
    $count = 0;
  while($row = mysql_fetch_array($query))
  {
        $count++;
        if($count%2)
        {
            echo "<tr bgcolor=\"#ADB09D\">";
            echo "<td width=\"\" align=\"left\">";
            echo "<a href=\"?side=shop/visvid.php&id=$row[vid]\">$row[vn]</td>";
            echo "<td>Antal: <input name=\"vantal[".$row[vid]."]\" type=\"text\" id=\"vantal4\" value=\"$row[vantal]\" size=\"3\"></td>";
            echo "<td>Pris:<td/>";
            echo "<td align=\"right\"><b> $row[varetotal] kr.</b></td></tr>";
        }
        else
        {
            echo "<tr><td width=\"\" align=\"left\">";
            echo "<a href=\"?side=shop/visvid.php&id=$row[vid]\">$row[vn]</td>";
            echo "<td>Antal: <input name=\"vantal[".$row[vid]."]\" type=\"text\" id=\"vantal4\" value=\"$row[vantal]\" size=\"3\"></td>";
            echo "<td>Pris:<td/><td align=\"right\"><b> $row[varetotal] kr.</b></td></tr>";
        }
    }
    $sql = "SELECT SUM(varetotal) AS vsum FROM jpc_varekurv WHERE (bruger='$s_navn') AND (bestilt=0)";
    $query = mysql_query($sql) or die (mysql_error());
    $row = mysql_fetch_assoc($query);
    echo "<tr><td></td><td></td><td>I alt<td/><td align=\"right\"><b>$row[vsum] kr.</b></td></tr>";

    ?>
    <tr class="style1"><td align="left"><input name="opdate" type="submit" id="opdate" value="Opdater"></td>
  <td>&nbsp;</td>
  <td></td><td></td></tr>
<?
}
?>
</table>
</form>
<?
}
else
{
    echo "Login er krævet";
}
?>
Avatar billede jakobdo Ekspert
19. september 2005 - 20:21 #10
svar
Avatar billede big_ossi Nybegynder
19. september 2005 - 22:15 #11
Takker mange gange for din hjælp.
Avatar billede jakobdo Ekspert
19. september 2005 - 22:15 #12
Jeg takker for point!
Avatar billede jakobdo Ekspert
19. september 2005 - 22:16 #13
Og håber du lærte lidt!
Nogle gange er det svært at forklare ting og kode det samtidig!
(og det er også svært at gennemskue kode man ikke selv har lavet og sidder foran)
Avatar billede big_ossi Nybegynder
19. september 2005 - 22:21 #14
Det gjorde jeg... har længe tænkt det sikkert burde laves som loop men det har jeg aldrig rigtig fattet, men når man ser det som kode og kan se det virker er det nemmer ihvertfald for mig at se logiken i det..
Avatar billede big_ossi Nybegynder
19. september 2005 - 22:28 #15
*S* ja burde lige have tjekket men den siger godt nok sammen fejl som da jeg havde sat det sammen.

fejl: Parse error: parse error, unexpected T_IF in /hsphere/local/home/ossipoff/ossipoff.net/demo/jpc/sider/shop/order.php on line 11
Avatar billede jakobdo Ekspert
19. september 2005 - 22:33 #16
Der mangler en ; på linie 10!
Efter: AND bruger=".$s_navn." LIMIT 1")
Avatar billede big_ossi Nybegynder
19. september 2005 - 22:38 #17
ja det har du da ret i. men nu laver den så fejl:

Parse error: parse error, unexpected '}' in /hsphere/local/home/ossipoff/ossipoff.net/demo/jpc/sider/shop/order.php on line 17

Fjerner jeg den siger den fejl:
Parse error: parse error, unexpected $ in /hsphere/local/home/ossipoff/ossipoff.net/demo/jpc/sider/shop/order.php on line 82
Avatar billede jakobdo Ekspert
19. september 2005 - 22:39 #18
Der mangler også en ; på linie 16, efter: header("localtion: " . $_SERVER['PHP_SELF'])
Avatar billede big_ossi Nybegynder
19. september 2005 - 22:45 #19
Takker, det burde man jo have set selv.. er godt nok lidt træt meen..

Du skal i hvert fald have tak igen. nu spiller det..
Avatar billede jakobdo Ekspert
19. september 2005 - 22:46 #20
Supert!
Jeg er også træt, så håber du klare den selv til i morgen!
Avatar billede big_ossi Nybegynder
25. september 2005 - 19:48 #21
Hey. jeg vil lige høre om du kunne hjælpe igen.
Den opdater ikke rigtig total prisen rigtig.. for at sige det bliver noget rigtig rod.

vil godt lave en nyt spørgsmål med 100 points til opgaven hvis det er.

koden ser sådan her ud nu:

<?
session_start();
if($s_navn && $s_password)
{
    if(isset($_POST['opdate']))
    {
        foreach($_POST['vantal'] as $id => $antal)
        {
            $stkpris = $_POST[sp];
            $vareantal = $antal;
            $vtotal = $stkpris * $vareantal;
            include("acon.php"); //forbind til DB, hvis ikke det allerede er gjort.
            mysql_query("UPDATE jpc_varekurv set vantal = ".$antal.", varetotal = ".$vtotal." WHERE vid=".$id." AND bruger=".$s_navn." LIMIT 1");
            if(mysql_affected_rows()==0)
            {
            }
    }
    header("localtion: " . $_SERVER['PHP_SELF']);
  }
    if(isset($_POST['send']))
        {
            $query = mysql_query("SELECT * FROM `jpc_varekurv` WHERE (`bruger` =$s_navn ) AND (`bestilt` =0 ) ORDER BY `kurvid` ASC") or die (mysql_error ());
            if(mysql_num_rows($query) != 0)
            {
                $message = "Vare bestilt af kunde nr: $s_navn\n";
                $subject = "Bestilling fra JPC WebShop";
                $emailTo = "jpc@jpcpartners.dk";
                $emailFrom = "salg@{$_SERVER['SERVER_NAME']}";
             
                while($row = mysql_fetch_assoc($query))
                {
                    $message .= $row[vn] . " - Antal " . $row[vantal] ."\n";
                }
             
                mail($emailTo, $subject, $message,
                    "From: ".$emailFrom."\r\n" .
                    "Reply-To: ".$emailFrom."\r\n" .
                    "X-Mailer: PHP/" . phpversion());

                $query = mysql_query("UPDATE `jpc_varekurv` SET bestilt=1 WHERE (`bruger` =$s_navn ) AND (`bestilt` =0 )") or die (mysql_error ());
            }

              echo"Din bestilling er sendt og modtaget af JPCpartners.";
        header("localtion: " . $_SERVER['PHP_SELF']);
              }       
?><head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
.style1 {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 9px;
}
-->
</style>
</head>
<form action="" method="post">
<table width="98%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr class="style1"><td align="left" class="style1"><strong>Din indkøbskurv</strong></td>
<td></td><td></td><td></td></tr>
  <?
include("acon.php");
    $query = mysql_query("SELECT * FROM `jpc_varekurv` WHERE (`bruger` =$s_navn ) AND (`bestilt` =0 ) ORDER BY `kurvid` ASC") or die (mysql_error ());
if(mysql_num_rows($query) == "0")
{
    echo "Ingen vare I kurven";
}
else
{
    $count = 0;
  while($row = mysql_fetch_array($query))
  {
        $count++;
        if($count%2)
        {
            echo "<tr bgcolor=\"#ADB09D\">";
            echo "<td width=\"\" align=\"left\"><input name=\"sp\" type=\"hidden\" id=\"vp4\" value=\"$row[vp]\" size=\"3\">";
            echo "<a href=\"?side=shop/visvid.php&id=$row[vid]\">$row[vn]</td>";
            echo "<td>Antal: <input name=\"vantal[".$row[vid]."]\" type=\"text\" id=\"vantal4\" value=\"$row[vantal]\" size=\"3\"></td>";
            echo "<td>Pris:<td/>";
            echo "<td align=\"right\"><b> $row[varetotal] kr.</b></td></tr>";
        }
        else
        {
            echo "<tr><td width=\"\" align=\"left\"><input name=\"sp\" type=\"hidden\" id=\"vp4\" value=\"$row[vp]\" size=\"3\">";
            echo "<a href=\"?side=shop/visvid.php&id=$row[vid]\">$row[vn]</td>";
            echo "<td>Antal: <input name=\"vantal[".$row[vid]."]\" type=\"text\" id=\"vantal4\" value=\"$row[vantal]\" size=\"3\"></td>";
            echo "<td>Pris:<td/><td align=\"right\"><b> $row[varetotal] kr.</b></td></tr>";
        }
    }
    $sql = "SELECT SUM(varetotal) AS vsum FROM jpc_varekurv WHERE (bruger='$s_navn') AND (bestilt=0)";
    $query = mysql_query($sql) or die (mysql_error());
    $row = mysql_fetch_assoc($query);
    echo "<tr><td></td><td></td><td>I alt<td/><td align=\"right\"><b>$row[vsum] kr.</b></td></tr>";

    ?>
    <tr class="style1"><td align="left"><input name="opdate" type="submit" id="opdate" value="Opdater">
    eller
        <input name="send" type="submit" id="send" value="Send bestilling"></td>
      <td>&nbsp;</td>
  <td></td><td></td></tr>
<?
}
?>
</table>
</form>
<?
}
else
{
    echo "Login er krævet";
}
?>
Avatar billede jakobdo Ekspert
25. september 2005 - 19:49 #22
Hvad er der galt med totalprisen?
Avatar billede big_ossi Nybegynder
25. september 2005 - 19:55 #23
her er et før og efter opdate billede
www.dff.nu/exp/fejl.php
Avatar billede jakobdo Ekspert
25. september 2005 - 20:01 #24
Prøv at kontakt mig på MSN: jakobdo (at) hotmail (dot) com
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester