$select_sql = "SELECT * FROM `cb_galerie` WHERE `id` LIKE '".$id."'";
$select_res = mysql_query($select_sql) or die(mysql_error());
$select_row = mysql_fetch_assoc($select_res);
$vote = $select_row['votes'];
$votes = $vote++;
$sql = "UPDATE `cb_galerie` SET rating = '".$result."', votes = '".$votes."' WHERE `id` LIKE '".$id."'";
if(!$new = mysql_query($sql) or die(mysql_error())) {
echo 'Danke! Das Voting wurde erfolgreich gezählt!';
echo '<br><br> <a href="'.$_SERVER['HTTP_REFERER'].'"> Zurück </a>';
}
else {
echo 'Das Voting konnte nicht gewertet werden!';
echo '<br><br> <a href="'.$_SERVER['HTTP_REFERER'].'"> Zurück </a>';
}
}
?>
Des geht net der schreibt nix in db zeigt aber auch keinen Fehler an?
Woran liegt das?
Mal abgesehen davon, dass du nur das letzte Rating zählst, was wird denn ausgegeben?
Dass das Voting erfolgreich gezählt wurde?
Hast du dir mal die SQL-Befehle ausgeben lassen?
Bis wohin läuft das Script?
Ich bin zwar auch nur ein ziemlicher anfänger aber so ins Auge gestochen sind mir folgende Sachen:
<? error_reporting(E_ALL); <---- vielleicht kenn ich das nicht anders, aber musses nicht mit <?php anfangen??
$rating = $_POST['rating']; <----- ehm...ja...rating nehm ich doch mal an soll der durchschnitt sein, von allen leuten die gevotet haben der durchschnitt und nicht der POST von dem letzten User...dann ist der Lösungansatz doch schonma ganz falsch?!
$id = $_POST['id'];
if(!$rating == '' && $id == '') { <------ !$rating == '' ????? meiner Erfahung nach kannste nur einen Vergleich zur Zeit machen, also entweder !$rating (obs $rating gibt) oder $rating == '' mag aber sein, dass das auch nur wieder mein beschränktes Anfängerwissen diktiert^^
echo 'Das Voting konnte nicht gewertet werden!';
echo '<br><br> <a href="'.$_SERVER['HTTP_REFERER'].'"> Zurück </a>';
}
else {
if($rating == 1) {
$result = $rating - 2;
}
if($rating == 2) {
$result = $rating -1;
}
if($rating == 3) {
$result = $rating;
}
if($rating == 4) {
$result = $rating +1;
}
if($rating == 5) {
$result = $rating +2;
} <-------------------------------- wieder dasselbe, du willst doch nicht irgendwann 1002 oder so rausgebkommen, wenn alle +2 voten?! nen rating sollte doch schon der durchschnitt sein, bei dir z.B. bei ner Skala von 0 - 4 Punkten ( also 0 Punkte, 1 Punkt, 2, 3 oder 4, der der User votet...oder was immer auch gevotet wird )
$select_sql = "SELECT * FROM `cb_galerie` WHERE `id` LIKE '".$id."'"; <------ hab ich auch mal so gemacht...gab bei mir aber ab und zu ebenfalls Komplikationen, versuchs sonst mal mit der Syntax ( so mach ich's auch immer):
$select_sql = mysql_query(" SELECT * FROM cb_galerie WHERE id='$id' ");
$select_res = mysql_query($select_sql) or die(mysql_error());
$select_row = mysql_fetch_assoc($select_res);
$vote = $select_row['votes'];
$votes = $vote++;
$sql = "UPDATE `cb_galerie` SET rating = '".$result."', votes = '".$votes."' WHERE `id` LIKE '".$id."'"; <------ würd ich sonst auch mal so probieren wie ich's immer mache, weil es bei mir mit dem von dir oben auch hier ab und zu mal probs gab...seit dem mach ichs immer so:
$sql = mysql_query( "UPDATE `cb_galerie` SET `rating`='$result', `votes`='$votes' WHERE `cb_galerie`.`id`='$id' ");
so funzt es bei mir immer...
if(!$new = mysql_query($sql) or die(mysql_error())) {
echo 'Danke! Das Voting wurde erfolgreich gezählt!';
echo '<br><br> <a href="'.$_SERVER['HTTP_REFERER'].'"> Zurück </a>';
}
else {
echo 'Das Voting konnte nicht gewertet werden!';
echo '<br><br> <a href="'.$_SERVER['HTTP_REFERER'].'"> Zurück </a>';
}
}
?>
das wäre so was mir daran auffällt....aber wie gesagt, mag sein das mein Anfängerwissen dafür einfach noch zu klein ist und ich einiges korrigiert hab, was richtig ist / war...aber vielleicht hilft dir das ja auch....
<------ !$rating == '' ????? meiner Erfahung nach kannste nur einen Vergleich zur Zeit machen, also entweder !$rating (obs $rating gibt) oder $rating == '' mag aber sein, dass das auch nur wieder mein beschränktes Anfängerwissen diktiert^^
<------ hab ich auch mal so gemacht...gab bei mir aber ab und zu ebenfalls Komplikationen, versuchs sonst mal mit der Syntax ( so mach ich's auch immer):
$select_sql = mysql_query(" SELECT * FROM cb_galerie WHERE id='$id' ");
Prächtig.. Stringverkettung bringt weniger Probleme mit sich als die Variablenersetzung, mysql_query ist an der Stelle falsch und die Backticks (`) sind auch besser wenn sie da sind. http://www.mysql.org/doc/refman/5.1/de/legal-names.html
Zitat:
<-------------------------------- wieder dasselbe, du willst doch nicht irgendwann 1002 oder so rausgebkommen, wenn alle +2 voten?! nen rating sollte doch schon der durchschnitt sein, bei dir z.B. bei ner Skala von 0 - 4 Punkten ( also 0 Punkte, 1 Punkt, 2, 3 oder 4, der der User votet...oder was immer auch gevotet wird )
$result wird nirgends vorher definiert, demnach hat es einen Wertebereich von -1 bis +7, was auch immer das für einen Sinn hat, das die Logik kaputt ist hab ich ja schon angemerkt..
BenniG. nichts gegen dich oder so, aber so wie du gegen die Punkte von ascer sprichst hört sich das irgendwie angreifend an... er hat selbst dazu geschrieben das er noch ein anfänger ist, da kannst du auch sagen "nein dies geht auch so, blabla" aber nicht "prächtig...."
sollte jetzt kein angriff auf dich sein, nur ein hinweis
if(!$rating == '' && $id == '') {
ich weiß jetzt nicht genau wie dein script funktionieren soll aber müssen nicht $rating UND $id ausgefüllt sein? falls ja mach lieber dies abfrage:
if(!$rating == '' || $id == '') {
außerdem bei dieser zeile:
if(!$new = mysql_query($sql) or die(mysql_error())) {
wo steht was $new ist und für was steht das "!"?
Sorry, aber ich halte es da mit Dieter Nuhr, welches Zitat ich konkret meine sag ich mal nicht *g*
Was Swoosh hier erreichen will hat er mit keinem Wort erwähnt, inzwischen übrigens immernochnicht.. Von daher ist alles reine Spekulation.. Die wahllos verstreuten ! sind mir auch aufgefallen, aber scheinbar stehen einige Leute aufs negieren ;)
1. $_POST['rating'], ist wieviel Punkte die Leute Vergeben!
Und das wird difiniert im Form Feld.
Das Problem muss hier liegen!
PHP-Code:
$select_sql = "SELECT * FROM `cb_galerie` WHERE `id` LIKE '".$id."'";
$select_res = mysql_query($select_sql) or die(mysql_error());
$select_row = mysql_fetch_assoc($select_res);
$vote = $select_row['votes'];
$votes = $vote++;
Den er gibt mir auch bei $votes nicht aus?
Das ist ja das was ich nicht versteh und einen fehler gibt er mir auch nicht aus mit mysql_error();
Es kommt nur ein weisser Bildschrim das ist alles.
$new_sql = "UPDATE `cb_galerie` SET `rating` = '".$result."', `votes` = '".$nzc."' WHERE `cb_galerie`.`id` = $id"; $new_res = mysql_query($new_sql);
if($new_res == true) { echo 'Danke! Das Voting wurde erfolgreich gezählt!'; echo '<br><br> <a href="'.$_SERVER['HTTP_REFERER'].'"> Zurück </a>'; } else { echo 'Das Voting konnte nicht gewertet werden!'; echo '<br><br> <a href="'.$_SERVER['HTTP_REFERER'].'"> Zurück </a>'; }
} ?>
Danke, an alle!
MfG, Swoosh
edit:
So hat mir jemand ein tipp wie ich eine IP Speere einbauen kann?
Vielleicht auch einen Vorschlage code?
Also er soll nur das Voting für eine bereits gestimmte ip die ip sperren, also so das ich noch bei anderen Videos abstimmen kann!
Danke, Swoosh
Geändert von Swoosh (05.12.2006 um 22:44:45 Uhr)
Grund: Text hinzugefügt