Webstatt.org - Community seit 2006 - 2012 (2024?)

Duplicate entry '0' for key 1 Fehler? was kann falsch sein

user-139
03.04.2006 17:27

als ich heut mal in meinem news scrpt die news editieren wollte(testhalber) viel mir auf das ich beim abspeichern immer einen
Duplicate entry '0' for key 1
bekomme
und nur eine leere zeilemit der ID 0 eingetragen wird, jedoch komm ich zum verrecken nich auf den fehler, und was es überhaupt sein könnte,.

OS: Windows XP CPU: AMD Athlon XP 3200+ RAM: 512MB DDR PC3200 (Dual Channel) Mainboard: MSI K7n2 Delta-L HDD: 80GB WD Graka:Radeon 9600 Pro =>Alekeijer Straussbuwe
Avatar user-253
03.04.2006 17:38

Die Fehlermeldung heisst, dass du einen neuen Datensatz mit dem gleichen Key (hier 0) in der Datenbank speichern wolltest =)

Du könntest den Key als auto_increment definieren und nie explizit setzen oder anstelle eines INSERTs UPDATE benutzen. Nur zwei von vielen Möglichkeiten.

Michael

user-139
03.04.2006 17:39

ich benutze schon update, und auto increment is auch eingestellt traurig

ich hab gedacht das ich irgendwo der ID 0 zuweisen würde und so den fehler selbst verschuldet hab , finde es aber nicht!

OS: Windows XP CPU: AMD Athlon XP 3200+ RAM: 512MB DDR PC3200 (Dual Channel) Mainboard: MSI K7n2 Delta-L HDD: 80GB WD Graka:Radeon 9600 Pro =>Alekeijer Straussbuwe
Avatar user-253
03.04.2006 17:49

Wenn du UPDATE benutzt und nicht den Key veränderst sollte kein Fehler kommen.
Vielleicht postest du den entsprechenden Teil des Codes und/oder zumindest das Tabellendesign

user-139
03.04.2006 17:57

so
CREATE TABLE news (
ID SMALLINT AUTO_INCREMENT PRIMARY KEY,
Kategorie VARCHAR(20),
Autor VARCHAR(20),
Titel VARCHAR(100),
Inhalt TEXT,
Datum VARCHAR(11)
);
und hier noch das nächste
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body><div align="center">
<div align="center"><a href="news_add.php"><font size="1"face="Verdana">News Schreiben</font></a>
• <a href="index.php?page=news&pn=edit"><font size="1"face="Verdana">User
Verwaltung</font></a> • <a href="index.php?page=news"><font size="1"face="Verdana">Daten
Editieren</font></a> </div>
<div align="center"> <center> </div>
<br>
<?PHP
$mysql = mysql_connect('localhost', 'root', ''zwinkern or die(mysql_error());
mysql_select_db('projects', $mysql) or die(mysql_error());

if (array_key_exists('delete',$_GET)) {
$deleteid = (int) $_GET['delete'];
$sql = "DELETE FROM news WHERE ID = '".$_GET['delete']."'";
$query = mysql_query($sql) OR die(mysql_error());
echo 'Ihr Datensatz wurde erfolgreich gelöscht.';
exit;
}

if (isset($_GET['edit']) && !empty($_GET['edit']) && is_numeric($_GET['edit'])){
$sql = "SELECT * FROM news WHERE ID = '".$_GET['edit']."'";
$query = mysql_query($sql) OR die(mysql_error());
$ds = mysql_fetch_object($query);
?>
<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<table width="500" border="0" cellpadding="3" cellspacing="1" bgcolor="#000">
<tr>
<td colspan="2" bgcolor="#AAA" align="center"><font color="#FFFFFF"><b>News
Bearbeiten </b></font></td>
</tr>
<tr>
<td colspan="2" bgcolor="#CCC"><font color="#FFFFFF">von <?echo($ds->Autor);?></font></td>
</tr>
<tr>
<td width="287" bgcolor="#CCC"><font color="#FFFFFF">Titel</font></td>
<td width="198" bgcolor="#C0C0C0"><font color="#FFFFFF">
<input name="email" type="text" style="font-family: Verdana; font-size: 11px;" value="<?echo($ds->Titel);?>" size="33" />
</font></td>
</tr>
<tr>
<td bgcolor="#CCC"><font color="#FFFFFF">News</font></td>
<td bgcolor="#C0C0C0"><font color="#FFFFFF">
<input name="Passwort" type="text" style="font-family: Verdana; font-size: 11px;" value="<?echo($ds->Inhalt);?>" size="33" />
</font></td>
</tr>
<tr>
<td bgcolor="#CCC"><font color="#FFFFFF">Kategorie</font></td>
<td bgcolor="#C0C0C0"><font color="#FFFFFF">
<input name="links2" type="text" style="font-family: Verdana; font-size: 11px;" value="<?echo($ds->kat);?>" size="33" />
</font></td>
</tr>
<tr>
<td bgcolor="#CCC"><font color="#FFFFFF">Links</font></td>
<td bgcolor="#C0C0C0"><font color="#FFFFFF">
<input name="links" type="text" style="font-family: Verdana; font-size: 11px;" value="<?echo($ds->links);?>" size="33" />
</font></td>
</tr>
<tr>
<td height="49" colspan="2" valign="top" bgcolor="#CCC"> <font color="#FFFFFF">&nbsp;
</font>
<div align="center"><font color="#FFFFFF">
<input name="speichern" type="submit" value="Speichern">
<input type="hidden" name="id" value="<? echo ($ds->ID); ?>">
</font> </div>
</td>
</tr>
</table>
<?
exit;
}

if (isset($_POST['speichern'])){
$sql = "UPDATE `news` SET `ID` = '',
`Kategorie` = '".addslashes($_POST['kat'])."',
`Autor` = '".addslashes($_POST['name'])."',
`Titel` = '".addslashes($_POST['titel'])."',
`Inhalt` = '".addslashes($_POST['news'])."',
`Datum` = '".time()."'
";
$query = mysql_query($sql) OR die(mysql_error());
echo 'Ihr Datensatz wurde erfolgreich gespeichert.';
exit;
}

$sql = 'SELECT * FROM news ORDER BY `ID` DESC ';
$query = mysql_query($sql) OR die(mysql_error());

if (!mysql_num_rows($query) > 0){
echo 'Keine Eintr&auml;ge vorhanden.';
exit;
} else {
echo '<table border="1" bordercolor="#000000" style="border-collapse: collapse">';
$cntquery = mysql_query('SELECT COUNT(*) cnt FROM news'zwinkern;
$row = mysql_fetch_assoc($cntquery);
$count = $row['cnt']+1;
?>
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="90%" id="AutoNumber1">
<tr bgcolor="#E1F0F4">
<td colspan="3"><font size="2"face="Verdana"><b>News Titel</b></font></td>
<td width="50%"><font size="2">&nbsp;</font></td>
<td width="13%"><font size="2"face="Verdana">&nbsp;</font></td>
<td width="9%"> <center>
<font size="2" face="Verdana"><b> Bearbeiten </b></font></center></td>
<td width="6%"> <center>
<font size="2" face="Verdana"><b> Löschen </b></font></center></td>
<td width="14%"> <center>
<font size="2" face="Verdana"><b> Feedback </b></font></center></td>
</tr>
<?php
while ($ds = mysql_fetch_object($query)){
--$count;
$timestamp = $ds->Datum;
$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i",$timestamp);
?>

<tr bgcolor="#FFFFFF">
<td width="3%"><b><font color="#000000" size="2">Nr<em><?php echo($count);?></em></font></b></td>
<td width="1%"><em><?php echo($ds->Autor);?></em></td>
<td width="4%"><b><font color="#000000" size="2"><em><?php echo(substr($ds->Titel, 0, 50))?></em></font></b></td>
<td width="50%"><b><em><?php echo(substr($ds->Inhalt, 0, 50))?>...</em></b></td>
<td><font color="#000000" size="2"><b>vom <?php echo $datum,"-",$uhrzeit,"Uhr"; ?>
</b></font></td>
<td width="9%"> <center>
<font color="#000000" size="2" face="Verdana"><a href="?edit=<? echo $ds->ID; ?>">X</a>
</font>
</center></td>
<td width="6%"> <center>
<font color="#000000" size="2"><a href="?delete=<? echo $ds->ID; ?>">X</a>
</font>
</center></td>
<td width="14%"> <center>
<font color="#000000" size="2"><?php
echo"<a href=\"kommentar.php?edit=$ds->ID\">Kommentare bearbeiten</a>";
?>
</td>
</tr>

<?
}
echo '</table>';
}
?>
ich hoffe damit kannste was anfangen Fettes Grinsen

OS: Windows XP CPU: AMD Athlon XP 3200+ RAM: 512MB DDR PC3200 (Dual Channel) Mainboard: MSI K7n2 Delta-L HDD: 80GB WD Graka:Radeon 9600 Pro =>Alekeijer Straussbuwe
Avatar user-255
03.04.2006 18:39

SET `ID` = ''

Weg damit!

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
user-139
03.04.2006 18:58

mhh das funktionierte aber die ganze zeit so X(

habs jetzt weggemacht , jedoch funzt jetzt auch ned, bzw es zeigt mir zwar an datensatz erfolgreich gespeichert, aber es wird kein datensatz in die db geschrieben !

EDIt Fettes Grinsen mh kannsein das es daran lag , ich idiot hatte natürlich , vergessen die namen vom input feld zu ändern ()scheiss copy and paste),.
jetzt gehts aber mal ne frage nebenbei, wie muss ich das machen , wenn ich die news lösche , und auch noch die kommentare aus der news_comments tabelle löschen wil? (die dazugehörigen , in der die newsid = dere ID von den news is),.

OS: Windows XP CPU: AMD Athlon XP 3200+ RAM: 512MB DDR PC3200 (Dual Channel) Mainboard: MSI K7n2 Delta-L HDD: 80GB WD Graka:Radeon 9600 Pro =>Alekeijer Straussbuwe
Avatar user-255
03.04.2006 19:19

Original von user-139
wie muss ich das machen , wenn ich die news lösche , und auch noch die kommentare aus der news_comments tabelle löschen wil?

Steht zwar alles im manual, aber ich kaue es dir gerne vor:
delete from artikel, kommentare where artikel.id = $ID and kommentare.artikel = $ID

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
user-139
03.04.2006 19:47

mhh dachte so?
        $sql = "DELETE FROM news WHERE ID = '".$_GET['delete']."'";
$sql2 = "DELETE FROM news_comments WHERE NewsID = '".$_GET['delete']."'";
$query = mysql_query($sql) OR die(mysql_error());
$query2 = mysql_query($sql2) OR die(mysql_error());

OS: Windows XP CPU: AMD Athlon XP 3200+ RAM: 512MB DDR PC3200 (Dual Channel) Mainboard: MSI K7n2 Delta-L HDD: 80GB WD Graka:Radeon 9600 Pro =>Alekeijer Straussbuwe
Avatar user-255
03.04.2006 20:59

Ist langsamer als beides in einer Anfrage zu erledigen.

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
Avatar user-253
04.04.2006 09:00

Obwohl user-255 natürlich vollkommen Recht hat - eine Abfrage ist sicherlich schneller - sei dennoch angemerkt, dass es meiner Meinung nach die Übersichtlichkeit steigert, aus zwei Tabellen in zwei Abfragen zu löschen.
Die beiden Abfragen sind relativ gesehen natürlich langsamer, absolut gesehen ist das aber unmerkbar, zumal du ja nicht sooft News und deren Kommentare löschst (und wenn dann macht das ein Admin).

Michael

P.S.: Ist euch schon einmal aufgefallen, dass MySQL in ein ENUM Feld (trotz NOT NULL) nichts speichert, wenn versucht wird einen ungültigen Wert einzufügen? So einen Schmarrn habe ich lange nicht gesehen...