PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Nur der erste Eintrag wird gemacht o.O



adrian2005
01.06.2009, 14:20
Hi, ich habe folgendes Problem, in einer PHP datei soll etwas in meine MySQL Tabelle geschriben werden, der erste eintrag funktioniert die restlichen nicht mehr, woran liegt das?
MySQL Tabelle:
http://dzcp.habbo-version.de/habbo-version/v1_reloaded/cms/sql.bmp

PHP-code:

<?php
$seite = $_SERVER["REQUEST_URI"];
$name = $_POST["name"];
if($_SESSION[user_id] != '')
{
echo '
<form action="'.$seite.'" method="post" enctype="multipart/form-data">
Datei:<input type="file" name="datei"><br>
Name des Bildes<input type="text" name="name"><br>
<input type="submit" value="Hochladen">
</form>';
if($name != '')
{
move_uploaded_file($_FILES['datei']['tmp_name'], "upload/".$_FILES['datei']['name']."");
$abfrage = "SELECT COUNT(id) FROM ".$prefix."bildupload";
$ergebnis = mysql_query($abfrage);
$menge = mysql_fetch_row($ergebnis);
$menge = $menge[0];
$id++;
$pfad = "upload/".$_FILES['datei']['name']."";
$eintrag = "INSERT INTO ".$prefix."bildupload
(id, pfad, name, author)
VALUES
('$id', '$pfad', '$name', '$userdata['name']')";
$eintragen = mysql_query($eintrag);
if($eintragen == true)
{
echo "Bild wurde erfolgreich hochgeladen!";
}
else
{
echo "Fehler beim Speichern";
}
}
}
else
{
echo 'Du musst eingeloggt sein!';
}
?>


für alle die mir sagen wollen das der Bildupload unsicher ist da die datei typen nicht gefilter werden, das weiß ich, filterung kommt später.

-=Player=-
01.06.2009, 15:19
ich glaube es liegt daran, dass du die id in sql auf auto_increment eingestellt hast, aber du in deinen Script eine feste ID bestimmst.
Wenn du eine eigene ID eintragen willst, darf die id in sql nicht auto_increment seid.
Wenn du die id vortlaufend haben willst, darfst du in deinen INSERT query keine ID bestimmen.

IRET
01.06.2009, 15:22
Hier ist ein Fehler


('$id', '$pfad', '$name', '$userdata['name']')";
$userdata['name'] musst du vorher deklarieren.
Wegen den '
Also $userdata=$userdata['name'];

adrian2005
01.06.2009, 16:38
aber beim ersten mal funktioniert ja alles einwandfrei

IRET
01.06.2009, 16:47
Du verstehst mich anscheinend nicht ganz.
Hier mal der code der Funktionieren sollte.

<?php
//Hier die Fehlerbehebung.
$userdata = $userdata['name'];
//ende
$seite = $_SERVER["REQUEST_URI"];
$name = $_POST["name"];
if($_SESSION[user_id] != '')
{
echo '
<form action="'.$seite.'" method="post" enctype="multipart/form-data">
Datei:<input type="file" name="datei"><br>
Name des Bildes<input type="text" name="name"><br>
<input type="submit" value="Hochladen">
</form>';
if($name != '')
{
move_uploaded_file($_FILES['datei']['tmp_name'], "upload/".$_FILES['datei']['name']."");
$abfrage = "SELECT COUNT(id) FROM ".$prefix."bildupload";
$ergebnis = mysql_query($abfrage);
$menge = mysql_fetch_row($ergebnis);
$menge = $menge[0];
$id++;
$pfad = "upload/".$_FILES['datei']['name']."";
//hier habe ich $userdata['name'] mit $userdata welche am Anfang deklariert wurde ersetzt.
$eintrag = "INSERT INTO ".$prefix."bildupload
(id, pfad, name, author)
VALUES
('$id', '$pfad', '$name', '$userdata')";
$eintragen = mysql_query($eintrag);
if($eintragen == true)
{
echo "Bild wurde erfolgreich hochgeladen!";
}
else
{
echo "Fehler beim Speichern";
}
}
}
else
{
echo 'Du musst eingeloggt sein!';
}
?>

Hab dir auch dazu geschrieben was ich gemacht hab.

adrian2005
01.06.2009, 17:27
aber beim ersten mal funktioniert es ja

Edit: dein code fu nktioniert auch nicht

-=Player=-
01.06.2009, 17:31
hast du mal das mit dem auto_increment ausprobiert?

adrian2005
01.06.2009, 17:39
Ja hab ich. Ich hab mal mysql_error() eingebaut, folgender fehler wird angezeigt:
Duplicate entry '1' for key 1

VeN0m
01.06.2009, 17:47
Rate mal, woran das liegt... Hast Du mal Players Beiträge gelesen? Wenn die ID auf auto_increment (Automatischer Eintrag) steht wird für jeden Eintrag eine neue ID generiert. Sofern Du dann die ID angibst gibt es einen Fehler (diesen, da die ID wohl schon existiert).



$eintrag = "INSERT INTO ".$prefix."bildupload
(id, pfad, name, author)
VALUES
('$id', '$pfad', '$name', '$userdata['name']')";


Muss so aussehen:



$eintrag = "INSERT INTO ".$prefix."bildupload
(id, pfad, name, author)
VALUES
('', '$pfad', '$name', '$userdata['name']')";


Heißt: "id" wird entfernt aus den VALUES. Das heißt, dass die ID per auto_increment generiert wird. Du kannst aber die ID eigentlich komplett weglassen.

adrian2005
01.06.2009, 17:50
Es hat sich erledigt @ power-sven hab deine antwort nicht mehr gelesen. trotzdem danke

kann geschlossen werden.