---
title: "fast ID i Poängliga"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/137880-fast-id-i-poängliga"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "richardjoha"
published: "2005-11-18T11:31:17.000Z"
updated: "2005-11-20T16:00:17.000Z"
replies: 4
views: 242
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/137880-fast-id-i-poängliga"
---

# fast ID i Poängliga

## #1 — richardjoha, 2005-11-18T11:31Z

Har ett problem med detta skript.. 

Jag har lagt in ex 10 spelare med olika namn och ska uppdatera spelare X´s statistik trycker jag på knappen "spara denna spelares poäng" och då ändras ALLA tidigare inlagda spelare till spelare X och hans statistik. Dvs. alla poster ser likadana ut.

Samma sak händer när jag ska radera en spelare. då försvinner allt.

Antar att jag måste sätta ett unikt id på varje ny spelare dom läggs till och någonslags ändra funktion kanske? 

tacksam för svar.   :) 

*DEN KORREKT KODEN:*

**addpoang.php**

```
<?php
include "anslut.php"; // Databasanslutningen
 
//Här uppdaterar poängen
IF($_GET['do']=='sparapoang' && $_POST['autoid']!=''){
   $autoid=$_POST['autoid'];
   $namn=$_POST['namn'];
   $matcher=$_POST['matcher'];
   $mal=$_POST['mal'];
   $assist=$_POST['assist'];
   $totalt=$_POST['mal']+$_POST['assist'];
   $uppdatera = "UPDATE pts SET namn = '{$namn}', matcher = '{$matcher}', mal = '{$mal}', assist = '{$assist}', totalt = '{$totalt}' WHERE autoid = '{$autoid}'";
   $res = mysql_query($uppdatera) or die("SQL: Gick ej att uppdatera informationen $uppdatera <br>".mysql_error());
}
 
//Här sparas nya poäng
ElseIF($_GET['do']=='nypoang'){
   $namn=$_POST['namn'];
   $matcher=$_POST['matcher'];
   $mal=$_POST['mal'];
   $assist=$_POST['assist'];
   $totalt=$_POST['mal']+$_POST['assist'];
   $laggtill = "INSERT INTO pts (namn, matcher, mal, assist, totalt) VALUES ('$namn', '$matcher', '$mal', '$assist', '$totalt')";
   echo $laggtill."<BR>";
   $res = mysql_query($laggtill) or die('SQL: Gick ej att lägga till informationen $laggtill <br>'.mysql_error()); 
}
 
//Här raderas spelaren
ElseIF($_GET['do']=='raderaspelare' && $_GET['autoid']!=''){
   $autoid=$_GET['autoid'];
   $radera = "DELETE FROM pts WHERE autoid = '$autoid'";
   mysql_query($radera) or die('SQL: Gick ej att radera informationen: $radera <br>'.mysql_error());
}
 
//Här visas alla poäng
$sql = "SELECT * FROM pts ORDER BY totalt DESC"; 
$resultat = mysql_query($sql);

echo "<table>\n";
   echo "   <tr>\n";
   echo "      <td>Namn</td>\n";
   echo "      <td>Matcher</td>\n";
   echo "      <td>Mål</td>\n";
   echo "      <td>Assist</td>\n";
   echo "      <td>Knapp för att spara</td>\n";
   echo "      <td>Länk för att ta bort</td>\n";
   echo "   </tr>\n";
   echo "   <tr><form method='POST' action='?do=nypoang'>\n";
   echo "      <td><input type='text' name='namn' size='40'></td>\n";
   echo "      <td><input type='text' name='matcher' size='40'></td>\n";
   echo "      <td><input type='text' name='mal' size='40'></td>\n";
   echo "      <td><input type='text' name='assist' size='40'></td>\n";
   echo "      <td><input type='submit' value='Spara nya spelaren & dennes poäng' name='submitny'></td>\n";
   echo "      <td>&nbsp;</td>\n";
   echo "   </form></tr>\n";
while($kolumn = mysql_fetch_array($resultat)){
   echo "   <tr><form method='POST' action='?do=sparapoang'>\n";
   echo "      <input type='hidden' name='autoid' value='{$kolumn['autoid']}'>\n";
   echo "      <td><input type='text' name='namn' size='40' value='{$kolumn['namn']}'></td>\n";
   echo "      <td><input type='text' name='matcher' size='40' value='{$kolumn['matcher']}'></td>\n";
   echo "      <td><input type='text' name='mal' size='40' value='{$kolumn['mal']}'></td>\n";
   echo "      <td><input type='text' name='assist' size='40' value='{$kolumn['assist']}'></td>\n";
   echo "      <td><input type='submit' value='Spara denna spelarens poäng' name='submit{$kolumn['autoid']}'></td>\n";
   echo "      <td><a href='?do=raderaspelare&autoid={$kolumn['autoid']}'>Radera</a></td>\n";
   echo "   </form></tr>\n";
}
echo "</table>\n";
?>
```

**visa poang.php**

```
<?php
include "anslut.php"; // Databasanslutningen
 
$sql = "SELECT * FROM pts ORDER BY totalt DESC"; 
$resultat = mysql_query($sql);

echo "<table>\n";
   echo "   <tr>\n";
   echo "      <td>Namn</td>\n";
   echo "      <td>Matcher</td>\n";
   echo "      <td>Mål</td>\n";
   echo "      <td>Assist</td>\n";
   echo "      <td>Poäng</td>\n";
   echo "   </tr>\n";
while($kolumn = mysql_fetch_array($resultat)){
   echo "   <tr>\n";
   echo "      <td>{$kolumn['namn']}</td>\n";
   echo "      <td>{$kolumn['matcher']}</td>\n";
   echo "      <td>{$kolumn['mal']}</td>\n";
   echo "      <td>{$kolumn['assist']}</td>\n";
   echo "      <td>{$kolumn['totalt']}</td>\n";
   echo "   </tr>\n";
}
echo "</table>\n";
?>
```

Permalänk: https://www.webforum.nu/p/137880

## #2 — Dies_Irae, 2005-11-18T13:07Z

Du måste lära dig att debugga dina skript och kolla så allt verkligen stämmer.
Kollar man i koden rakt av ser jag inget konstigt men lite sunt förnuft säger att eftersom när du uppdaterar eller tar bort spelare så uppdateras alla fällt. Och var i koden skilljer du på fälten? jo med autoid. Om autoid är unikt för varje fält ska dom bara inte uppdateras.

Va kan då vara fel? Jo kanske autoid inte har autoincrements så alla autoids kanske är likadana?  Då är de helt plötsligt inte så konstigt att alla uppdateras när du har autoid='x' om alla fält är x.

Permalänk: https://www.webforum.nu/p/1712320

## #3 — richardjoha, 2005-11-18T15:31Z

det tycks vara felet ja.. men jag kan inte ändra till auto_increments.. får felmedeleande #1067 - Invalid default value for 'autoid' ..?

<https://www.oldoakdesign.se/1234ANNAT/wf/autoid.jpg>

Permalänk: https://www.webforum.nu/p/1712390

## #4 — aasah, 2005-11-18T20:33Z

Enligt skärmdumpen i din första tråd, kan man se att autoid = 0 överallt.

Jag har själv aldrig använt phpmyadmin och vet därför inte hur du ändrar i den, men ditt id borde vara av typen:
ID INT auto_increment 

I så fall sker uppdatering av id med automatik vid varje insert.

\*\*\*
Men, du verkar ha andra skumheter i koden också. Såvida inte jag missförstår den, så klart. Men vad vill du egentligen ändra på när du uppdaterar poäng? Bara poängen väl? Som du gör nu sätter du ju om alla värden. Sätt bara om de värden du faktiskt vill ändra!

Sedan har du ingen felhantering i koden alls. Om du inte fyller i något fält i formuläret kan det få trista effekter. Finns tex fältet autoid i ditt formulär? Som hidden i så fall, hoppas jag? Du skriver:

```php
IF($_GET['do']=='sparapoang' && $_POST['autoid']!=''){
   $autoid=$_POST['autoid'];
   $namn=$_POST['namn'];
   $matcher=$_POST['matcher'];
   $mal=$_POST['mal'];
   $assist=$_POST['assist'];
   $totalt=$_POST['mal']+$_POST['assist'];
```

Om något av $\_POST-fälten inte fått ett värde så **ger** PHP "snällt" ett intetsägande värde åt dom. Så om du inte fyller i namnet tex, så skrivs namnet över med '' vid UPDATE:n. Det vore mycket säkrare att kolla om de är satta med 

```php
IF($_GET['do']=='sparapoang' && isSet($_POST['autoid']) && 
            isSet($_POST['namn']) && isSet($_POST['matcher']) && ....
            isSet($_POST['assist'])){
   $autoid=$_POST['autoid'];
   $namn=$_POST['namn'];
   $matcher=$_POST['matcher'];
   $mal=$_POST['mal'];
   $assist=$_POST['assist'];
   $totalt=$_POST['mal']+$_POST['assist'];
```

Permalänk: https://www.webforum.nu/p/1712496

## #5 — The_Hulk, 2005-11-20T16:00Z

testa att ändra de befintliga autoid så de får unika värden, kanske går att slå på auto_incement

Permalänk: https://www.webforum.nu/p/1713145

---

Tråden på webben: https://www.webforum.nu/amne/php/137880-fast-id-i-poängliga
