Bewertung in PHP und MySQL geschlossen 

Status
Für weitere Antworten geschlossen.

Taxel

Registered +
Registriert
Jan. 2009
Beiträge
78
Hallo liebe Community,

ich will auf meiner zukünftigen Website für Far Cry 2 Maps die Möglichkeit bieten, die Maps zu bewerten.

ich meinte, das mit folgendem Script tun zu können
(unwichtiges entfernt):
PHP:
 if (isset($_GET['ID'])) {
$id = $_GET['ID'];
} else {
echo "Sie werden weitergeleitet zur Uebersicht";
Header("Location: maps.php");
}



$db = @new mysqli('localhost', 'user', 'pw', 'db');
if (mysqli_connect_errno()) {
die ('Konnte keine Verbindung zur Datenbank aufbauen: '.mysqli_connect_error().'('.mysqli_connect_errno().')');
}
$sql = "SELECT
ID,
name,
uploader,
path,
comment,
rating,
multiplier,
date
FROM
maps
WHERE
ID = $id";
$result = $db->query($sql);
if (!$result) {
die ('Etwas stimmte mit dem Query nicht: '.$db->error);
}
$row = $result->fetch_assoc();
?>
//viel dazwischen

if (!empty($name)) { 
$rate3 = $row['rating'];
$multi2 = $row['multiplier']+ 1; 
$eintrag = "INSERT INTO maps
(rating, multiplier)
VALUES
($rate3, $multi2)"; 
echo "Vielen Dank für ihre Bewertung"; 

} 
else 
{ 
?>

Map bewerten: 





++


+



0



-



--

die db heißt maps, die bewertung wird durch rating/multiplier berechnet.
wenn man aber auf "Bewerten!" drückt, ist man am oberen Ende der Seite.
Sonst nichts.

Was mach ich falsch?
 
Zuletzt bearbeitet von einem Moderator:
Hi,
wird denn geladen oder einfach nur zum Anfang gesprungen? (Letzteres könnte man höchstens mit dem nicht geschlossenem form-Tag erklären)
Was mir so auffällt, wie soll dein Script wissen, welche ID du bewertest? da fehlt ganz eindeutig ein hidden input-Tag. Sonst fällt mir auf, dass dein Script nie etwas anderes macht, wenn man die Form bestätigt. Was soll denn dann passieren? Sehe ja nirgends ein isset($_POST['Bewerten!']) (Wobei ich bezweifel, dass Ausrufezeichen als index benutzt werden dürfen.)

Joa, außerdem wird deine Headerweiterleitung nicht funktionieren. Header kommt als erstes bei einer Webseite. Echo (oder Leerzeichen/Zeilenumbrüche) dürfen nicht davor kommen, sonst kommt ein Fehler. Ebenso ist zu empfehlen, nach einer Weiterleitung das Script mittels die oder exit zu beenden, weil, auch wenn du weiter geleitest wirst, das Script weiter läuft.
Am Wichtigsten ist, dass du die ID mittels intval in eine Zahl zwingst, da man sonst deine SQL-Abfrage beeinflussen kann (Stichwort: SQL injection - Wikipedia, the free encyclopedia)

Gruß
Broken Sword
 
danke erstmal für die schnelle Antwort.
also:
die ID wird übergeben, wenn man von der mapübersicht maps.php kommt.
die in ne int zu zwingen mach ich.
die header weiterleitung geht eigentlich, aber ich werd sie anpassen.
 
Hi,

auf den ersten Blick erscheint mir das hier etwas seltsam


Dadurch, dass das action leer ist passiert wahrscheinlich gar nichts oder findet ein Reload statt ?

Probiers mal entweder $_SERVER[´PHP_SELF´] oder mit dem namen der deines php files.

Dann sollte zumindest was passieren.

Und wie broken_sword schon geschrieben hat, musst du nach dem Absenden mit einem $_POST['fieldname'] auf deine Variablen zugreifen.

Gruß

Fehlerzeile
 
hab die Bewertung jetzt in ne extra Datei verschoben, geht wunderbar.

--> closed
 
Status
Für weitere Antworten geschlossen.

Ähnliche Themen

E
Antworten
2
Aufrufe
5K
E
T
Antworten
10
Aufrufe
4K
turbo11at
T
Antworten
2
Aufrufe
1K
Zurück
Oben Unten