Avatar billede jokeren25 Nybegynder
11. februar 2006 - 14:20 Der er 19 kommentarer og
2 løsninger

Update flere rækker samtidigt

Hej experter,

jeg vil gerne updatere flere række i min database på en gang. Scriptet skal opdatere et fodboldholds statestik.

Koden ser således ud:

edit:

<form method="post" action="form.handle.php">
<input type="hidden" name="referer" value="edit_stats">

  <?php
include_once('../inc.config.php');

mysql_connect($cfg['mysql']['host'],$cfg['mysql']['username'],$cfg['mysql']['password']);
mysql_select_db($cfg['mysql']['database']);


if (isset($_GET['deleteID'])) {
    mysql_query("DELETE FROM stats WHERE id=".$_GET['deleteID']."") or die(mysql_error());
}
$query = mysql_query("SELECT * FROM stats ORDER BY id ASC LIMIT ".$offset.",".$cfg['limit']."") or die(mysql_error());

while ($row = mysql_fetch_assoc($query)) {
    echo 'Navn<input type="text" name="navn" value="'.$row['navn'].'" style="width: 45px">';
    echo 'Nr.<input type="text" name="nummer" value="'.$row['nummer'].'" style="width: 15px">';
    echo 'Kampe<input type="text" name="kampe" value="'.$row['kampe'].'" style="width: 15px">';
    echo 'Mål<input type="text" name="maal" value="'.$row['maal'].'" style="width: 15px">';
    echo 'Assist<input type="text" name="assist" value="'.$row['assist'].'" style="width: 15px">';
    echo 'Gulekort<input type="text" name="gulkort" value="'.$row['gulkort'].'" style="width: 15px">';
    echo 'Rødekort<input type="text" name="rodkort" value="'.$row['rodkort'].'" style="width: 15px">';
    echo 'MoM<input type="text" name="mom" value="'.$row['mom'].'" style="width: 15px">';
    echo '<br><br>';
}

?>

og en form handler der ser således ud:

if ($_POST['referer'] == 'edit_stats') {
    mysql_query("UPDATE stats SET navn='".$_POST['navn']."', nummer='".$_POST['nummer']."', kampe='".$_POST['kampe']."', maal='".$_POST['maal']."', assist='".$_POST['assist']."', gulkort='".$_POST['gulkort']."', rodkort='".$_POST['rodkort']."', mom='".$_POST['mom']."' ") or die(mysql_error());
    header("Location: news.updated.php?offset=".$_POST['offset']);
}

og tabellen:

CREATE TABLE `stats` (
  `id` int(11) NOT NULL auto_increment,
  `navn` varchar(60) NOT NULL default '',
  `nummer` int(11) NOT NULL default '0',
  `kampe` int(11) NOT NULL default '0',
  `maal` int(11) NOT NULL default '0',
  `assist` int(11) NOT NULL default '0',
  `gulkort` int(11) NOT NULL default '0',
  `rodkort` int(11) NOT NULL default '0',
  `mom` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM


Problemet er at kun en række bliver udateret. Tror man skal bruge foreach men kan ikke få det til at virke ordentligthåber der er nogen der kan hjælpe mig videre. På forhånd tak.
Avatar billede horsmark Nybegynder
11. februar 2006 - 14:58 #1
update flere rækker så det smame indhold smides i hver række eller hyr?
Avatar billede jokeren25 Nybegynder
11. februar 2006 - 15:04 #2
Der skal nyt indhold i hver række med de forskellige spillers statestik. Jeg ville gerne kunne gøre således at man kunne update flere spilleres statestik samtidigt i stedet for at skulle updatere en enkelt spiller af gangen.
Avatar billede jokeren25 Nybegynder
11. februar 2006 - 16:25 #3
Prøver med følgende script i form handleren, men det virker ikke:

if ($_POST['referer'] == 'edit_stats') {
foreach($_GET['id']){   
mysql_query("UPDATE stats SET navn='".$_POST['navn']."', nummer='".$_POST['nummer']."', kampe='".$_POST['kampe']."', maal='".$_POST['maal']."', assist='".$_POST['assist']."', gulkort='".$_POST['gulkort']."', rodkort='".$_POST['rodkort']."', mom='".$_POST['mom']."' ") or die(mysql_error());
    header("Location: news.updated.php?offset=".$_POST['offset']);
}
}

Nogen forslag til hvordan jeg kommer videre herfra??
Avatar billede horsmark Nybegynder
11. februar 2006 - 16:34 #4
hvilket array ligger i $_GET['id']
Avatar billede jokeren25 Nybegynder
11. februar 2006 - 16:39 #5
if ($_POST['referer'] == 'edit_stats') {
foreach ($_GET['id']{
$update = "UPDATE stats SET navn='".$_POST['navn']."', nummer='".$_POST['nummer']."', kampe='".$_POST['kampe']."', maal='".$_POST['maal']."', assist='".$_POST['assist']."', gulkort='".$_POST['gulkort']."', rodkort='".$_POST['rodkort']."', mom='".$_POST['mom']."' "
/* linie 90 */ mysql_query($update) or die(mysql_error());
}
}

Får denne fejl når jeg kører scriptet ;Parse error: parse error, unexpected T_STRING on line 90
Avatar billede jokeren25 Nybegynder
11. februar 2006 - 16:41 #6
hmmm det er nok problemet at jeg ikke lavet et array med hele rækkens data.
Avatar billede horsmark Nybegynder
11. februar 2006 - 16:42 #7
det er fordi du i linien før mangler en  ;
Avatar billede horsmark Nybegynder
11. februar 2006 - 16:43 #8
hvad ligger der gemt i $_GET['id'] ?
Avatar billede horsmark Nybegynder
11. februar 2006 - 16:44 #9
lav lige en var_dump($_GET['id'])
Avatar billede jokeren25 Nybegynder
11. februar 2006 - 16:47 #10
var_dump($_GET['id']) hvor?
Avatar billede horsmark Nybegynder
11. februar 2006 - 16:54 #11
if ($_POST['referer'] == 'edit_stats') {
var_dump($_GET['id']);
exit;
...din kode...
Avatar billede horsmark Nybegynder
11. februar 2006 - 17:00 #12
well du skal nok frem imod noget at dette så...

UPDATE min_tabel SET kollonne = "nisse" WHERE id IN (8,12,2)
Avatar billede horsmark Nybegynder
11. februar 2006 - 17:00 #13
den opdatere som du spørger om ... flere rækker :-)
Avatar billede jokeren25 Nybegynder
11. februar 2006 - 17:02 #14
den giver en NULL --> hvilke vil sige at jeg slet ikke får noget array loadet ind ikk?
Avatar billede horsmark Nybegynder
11. februar 2006 - 17:06 #15
yes
Avatar billede jokeren25 Nybegynder
11. februar 2006 - 17:07 #16
IN(8,12,2) hvad referer det til?
Avatar billede jokeren25 Nybegynder
11. februar 2006 - 17:08 #17
meget tæt på nu....
Avatar billede horsmark Nybegynder
11. februar 2006 - 17:15 #18
unikke id´er :-) altså det fortløbne tal i db´en
Avatar billede jokeren25 Nybegynder
11. februar 2006 - 17:16 #19
Tak for din tid og hjælpen ;)
Avatar billede jokeren25 Nybegynder
11. februar 2006 - 17:17 #20
Svar så er der point
Avatar billede horsmark Nybegynder
11. februar 2006 - 17:18 #21
allrighty toplækkert :-) god weekend
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