Avatar billede jokeren25 Nybegynder
21. august 2006 - 09:24 Der er 3 kommentarer og
1 løsning

Dublicate entry

Hej experter,

jeg har lavet et en side til mit fodboldhold hvor man kan opdatere statestik for hver kamp. Problemet er når jeg vil opdatere statestikken får jeg fejlmeddelesen;

"Duplicate entry '35' for key 1".

Nogen der kan hjælpe mig med at rette denne fejl?


Min kode ser således ud:

<?php

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

//connect til databaseb

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

mysql_select_db($cfg['mysql']['database']);

//Opretter en form med indenholden tidligere statestik.

echo '<form method="post" action="stats.edit.php"><input type="hidden" name="referer" value="edit_stats">';

$query = mysql_query("SELECT * FROM stats ORDER BY nummer") or die(mysql_error());

$count = 0;

while ($row = mysql_fetch_assoc($query)) {

   
    echo '<input type="hidden" name="id' . $count . '" value="'.$row['id'].'" style="width: 45px">';

    echo '<input type="hidden" name="navn' . $count . '" value="'.$row['navn'].'" style="width: 45px">';

    echo '<input type="hidden" name="nummer' . $count . '" value="'.$row['nummer'].'" style="width: 45px">';

    echo '<table width="150" border="0" cellspacing="0" cellpadding="0"><tr><th scope="col"><strong>'.$row['nummer'].'&nbsp;'.$row['navn'].'</strong></th></tr></table>';
   
    echo 'Kampe&nbsp;<input type="text" name="kampe' . $count . '" value="'.$row['kampe'].'" style="width: 25px">&nbsp;';

    echo '&nbsp;Mål&nbsp;<input type="text" name="maal' . $count . '" value="'.$row['maal'].'" style="width: 25px">&nbsp;';

    echo '&nbsp;Assist&nbsp;<input type="text" name="assist' . $count . '" value="'.$row['assist'].'" style="width: 25px">&nbsp;';

    echo '&nbsp;Gulekort&nbsp;<input type="text" name="gulkort' . $count . '" value="'.$row['gulkort'].'" style="width: 25px">&nbsp;';

    echo '&nbsp;Rødekort&nbsp;<input type="text" name="rodkort' . $count . '" value="'.$row['rodkort'].'" style="width: 25px">&nbsp;';

    echo '&nbsp;MoM&nbsp;<input type="text" name="mom' . $count . '" value="'.$row['mom'].'" style="width: 25px">&nbsp;';

    echo '<br><br>';

    $count++;

}


echo '<input type="submit" value="Opdater stats"></form>';

?>



<?php

//sætter opdateret statestik ind i tabellen (tror det er her et sted det fejler?)

if ($_POST['referer'] == 'edit_stats') {

    $iter = 0;

    while ($iter < $count ) {
   
    mysql_query("UPDATE stats SET
    id='".$_POST['id' . $iter]."',
    navn='".$_POST['navn' . $iter]."',
    kampe='".$_POST['kampe' . $iter]."',
    maal='".$_POST['maal' . $iter]."',
    assist='".$_POST['assist' . $iter]."',
    gulkort='".$_POST['gulkort' . $iter]."',
    rodkort='".$_POST['rodkort' . $iter]."',
    mom='".$_POST['mom' . $iter]."'
    WHERE nummer = '".$_POST['nummer' . $iter]."' ")or die(mysql_error());
       
    $iter++;
    }

echo '<br><br>'.'statestik er nu opdateret!'.'&nbsp;<strong><a href="stats.edit.php">Refresh for at se resultat</a></strong><br><br>';
}


?>


Min tabel ser således ud:

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 AUTO_INCREMENT=37 ;
Avatar billede nielle Nybegynder
21. august 2006 - 09:35 #1
Du må ikke forsøge at opdatere id'et i din UPDATE-sætning.

Jeg tror at det virker bedre med dette:

    mysql_query("UPDATE stats SET
    navn='".$_POST['navn' . $iter]."',
    kampe='".$_POST['kampe' . $iter]."',
    maal='".$_POST['maal' . $iter]."',
    assist='".$_POST['assist' . $iter]."',
    gulkort='".$_POST['gulkort' . $iter]."',
    rodkort='".$_POST['rodkort' . $iter]."',
    mom='".$_POST['mom' . $iter]."'
    WHERE nummer = '".$_POST['nummer' . $iter]."' ") or die(mysql_error());
Avatar billede nielle Nybegynder
21. august 2006 - 09:36 #2
Normalt plejer man at lave sin UPDATE efter denne opskrift:

$sql = "UPDATE stats SET xx1=yy1, xx2=yy2 ... WHERE id = " . $_POST['id' . $iter];
Avatar billede jokeren25 Nybegynder
21. august 2006 - 10:08 #3
Det virker! Mange tak for hjælpen. Svar, så er der point.
Avatar billede nielle Nybegynder
21. august 2006 - 10:20 #4
Svar :^)
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