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> </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";
?>
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.
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:
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