[erledigt]Forum bewertungssystem funktioniert nicht

Bizz

Well-known member
ID: 290125
L
6 August 2007
135
7
So hallo,

Ich bastel mir gerade ein Internes Forum für meine Page...
und habe das Problem, dass das Bewertungssystem nicht Funktionieren will..

wäre nett wenn mir einer sagen könnte ob am folgenden Teil irgendetwas nicht funtionier kann, da der gesammte teil nicht wiedergegeben wird!





$data = mysql_query("select * from mt_vote where id='$id' AND user='$user");
while ($row=mysql_fetch_array($data)) {
$vote = $row[vote];


if ($vote == "") {
$abstimmung = "
<form method=\"POST\" action=\"./forum.php?sessionid=$sessionid&thread=$thread&seite=$seite\">
<input type=\"hidden\" value=\"$bewertet\" name=\"bewertet\">
<input type=\"hidden\" value=\"$user\" name=\"user\">
<input type=\"hidden\" value=\"$id\" name=\"id\">
<input type=\"hidden\" value=\"$vote\" name=\"vote\">
<input type=\"image\" src=\"/design/down.png\" type=\"submit\" value=\"down\" name=\"down\">
<input type=\"image\" src=\"/design/up.png\" type=\"submit\" value=\"up\" name=\"up\">
</form>
";}
else {
$abstimmung = "erstmal nix zum testen";
}
echo ("$abstimmung");
}



:ugly: Danke
 
Zuletzt bearbeitet:
Der Wert "Type" ist bei den Wertungsbutton doppelt vergeben, das geht natürlich nicht.

Und bei Datenbankabfragen bitte auf Sicherheit achten.

Gruß
Bayernfieber
 
Was hast du debuggt?

Code:
$row[vote]
macht keinen Sinn. Konstanten sollte man außerdem in Großbuchstaben schreiben.

id und user sind Strings in deiner Datenbank? SELECT * is böse.
 
..hilfe xD

@Bayernfieber

das mit dem input type hab ich gemacht um was zu testen, es geht auch wenn es 2 mal drin steht...:LOL:

@theHacker

vote id und user sind die 3 strings aus der mt_vote....


ich habe keine bücher gelesen und keine kurse belegt^^
bin einfach von html auf php umgestiegen, da ich mir vor nem halben jahr nen mailtauscher zugelegt habe, inzwischen verstehe ich so einiges, und das Forum steht im prinzip auch schon, nur dieses blöde bewertungssystem funktioniert nicht...

debuggt?
konstanten?

ich weiß das ist wie Klavierspielen ohne Noten zu lernen, aber bisher hat es ganz gut geklappt xD


was genau meintest du mit SELECT * ist böse?


Danke euch beiden!
 
Erstmal Abfrage hat einen Fehler, dort fehlt ein ' :

so sieht die Abfrage ein wenig besser aus:

$data = mysql_query("select vote from mt_vote where id='".addslashes($id)."' AND user='".addslashes($user)."');
 
hm..

was genau bedeutet denn dieses addslashes?

das brauchte ich doch sonnst auch nie im gesammten mailtauscher script...

das ' hab ich eingefügt, danke.. ich probiers mal eben

mfg
 
super

jehaaaa

dank deines strichelchens oben funktioniert immerhin die wiedergabe

erstmal nix zum testen


bei dem eintrag für den ich in der datenbank schon eine abstimmung festgelegt hatte...


und...

ich habe diesen teil mit folgendem ersetzt und es wird angezeigt, also ist soweit alles inordung, ich muss jetzt nurnoch genau hinbekommen wan was kommt...


thread hat sich damit erledigt, danke dass du mich auf das strichelchen aufmerksam gemacht hast xD - fiese fehler..

mfg Bizz
 
Zuletzt bearbeitet:
vote id und user sind die 3 strings aus der mt_vote....

du hast $row[vote] geschrieben, meinst aber sicherlich $row['vote']. nur weil php die unsaubere schreibweise ohne apostrophen zulässt, sollte man sie nicht verwenden. irgendwann fällts einem auf die füße (spätestens, wenn irgendwann wirklich mal eine konstante vote im script existiert).


das gleiche wie variablen, nur dass sie nach ihrer ersten wertzuweisung keinen anderen wert mehr annehmen können. siehe define().
 
Weitere hilfe gesucht!

ah okey halbwegs verstanden.... danke!


so nu kommt das nächste problem.. ich habe shcon alles mögliche ausprobiert...

hier die vereinfachte form...

$data = mysql_query("select * from mt_vote where id='$id' AND user='$user'");
while ($row=mysql_fetch_array($data)) {
$vote = $row['vote'];
$vuser = $row['user'];
if ($vote == 1){$voting = "gut ";}
elseif ($vote == 0) {$voting = "schlecht ";}


if ($user != $vuser) {$abstimmung = "Ihre Bewertung: $voting";
}
else {$abstimmung = "
<input type=\"image\" src=\"/design/down.png\" value=\"down\" name=\"down\">
<input type=\"image\" src=\"/design/up.png\" value=\"up\" name=\"up\">
";}
echo ("$abstimmung");
}




Es wird immer nur eines von beidem ausgegeben if oder else

if ($user == $vuser) {$abstimmung = "Ihre Bewertung: $voting";}
(hier der if-Teil)

if ($user != $vuser) {$abstimmung = "Ihre Bewertung: $voting";}
(hier der else-Teil)

nie werden beide da wiedergeben wo sie gebraucht werden wiedergegeben...


was ist zu tun??? danke!
 
Öhrm, wenn ich Dich grad richtig verstehe, hast Du da 'nen Denkfehler drin. In einem if/else-Block wird immer nur einer von beiden ausgegeben. Genau für den Fall ist das Konstrukt ja da.
 
da hast du schon recht!


nur bei einem beitrag wird mal nach dem if gefragt und beim anderen nach dem else!
verstanden wie ich meine?

nochmal für alle...

was ich will ist:

wenn einer den eintrag bewertet wird id user und abstimmung gespeichert, klappt soweit.. nur wer schon abgestimmt hat soll nicht nochmal voten können, dh ich schaue ob id und user schon in der zusammensetzung existieren, flas nicht soll man abstimmen können fals doch soll gezeit werden wie man abgestimmt hat...

aber momentan zeigt es nur bei denen was an die schon abgestimmt haben,
dort kann ich alles anzeigen, die abstimmung und die möglichkeit noch abzustimmen, aber bei den anderen wird gaaarnichts angezeigt...

HILFE xD
 
Zuletzt bearbeitet:
Was hast Du genau vor?
Verstehe es derzeit nicht!

Wofür ist dieser Teil notwendig?

if ($user != $vuser)

ersetze es mal mit:

if ($vote <= '0')

Das sollte eigentlich schon ausreichen!
 
Zuletzt bearbeitet:
okey hab mir das mal angesehn...
aber an einer zahl befindet sich doch kein ` ...

ich hab den eintrag 2 drüber geändert, hast dir den geänderten schon angesehn?
hab das ma genauer erklärt...
 
Ich glaube zu verstehen, was Du meinst. Dein Problem ist, dass Du die ganze Logik in die while-Schleife packst. Existiert kein Eintrag in der Datenbank, wird die Schleife nie durchlaufen und somit auf die Abfrage, die darin enthalten ist. Lies die Daten einfach innerhalb der Schleife aus (die Du im Endeffekt auch gar nicht brauchst, da Du ja nur einen Datensatz abfragst) und verarbeite sie dann danach, sprich: Die letzte if-Abfrage gehört ausserhalb der Schleife.
 
Ich glaube zu verstehen, was Du meinst. Dein Problem ist, dass Du die ganze Logik in die while-Schleife packst. Existiert kein Eintrag in der Datenbank, wird die Schleife nie durchlaufen und somit auf die Abfrage, die darin enthalten ist.

Genau!

while ($row=mysql_fetch_array($data)) {

Wofür wird an dieser Stelle eine Schleife eingebaut?
Folgendes müßte doch reichen:

$vote='';
$row=mysql_fetch_array($data);
 
Versuch mal folgende Kurzform:

$abstimmung = '<input type="image" src="/design/down.png" value="down" name="down">
<input type="image" src="/design/up.png" value="up" name="up">';


$data = mysql_query("select vote from mt_vote where id='".addslashes($id)."' AND user='".addslashes($user)."'");
while ($row=mysql_fetch_array($data)) {
$vote = $row['0'];
if ($vote == 1) $abstimmung = "Ihre Bewertung: gut "; elseif ($vote == 0) $abstimmung = "Ihre Bewertung: schlecht ";
}


echo ("$abstimmung");

Hier was zum Thema addslashes:
https://home.schule.at/teaching/lacheiner/n_sicherheit.php
 
Zuletzt bearbeitet:
so... also wenn ichs aus der while schleifen nehme,

wird bei allen unbewerteten einträgen, die abstimmung des letzten bewerteten beitrags angezeigt,

auch bei deinem script bayernfieber...trozdem danke für die mühe...

hm.. das is echt hart...
 
Hast Du mal einen Link?

Setze mal bitte folgendes am Ende dran:

echo ("$abstimmung");
$abstimmung = ''";
 
Zuletzt bearbeitet:
so endlich gibts mal gute neugkeiten...


also ich habe die andern beiden dinge einfliesen lassen...

ganz ohne while und if ($vote <= 0) [so wurde 0 nicht angezeigt, habe -1 genommen]

inzwischen wird if und else angezeigt... und zwar genau da wo es hingehört...




ihr seid die geilsten... danke!!!!!!!!
dafür bekommt ihr n paar grüne xD
danke euch allen!

hier das fertige kurzform-script


$data = mysql_query("select * from mt_vote where id='$id' AND user='$user'");
$row=mysql_fetch_array($data);
$vote = $row['vote'];
if ($vote == 1){$voting = "gut ";}
elseif ($vote == 0) {$voting = "schlecht ";}


if ($vote <= -1) {$abstimmung = "
<input type=\"image\" src=\"/design/down.png\" value=\"down\" name=\"down\">
<input type=\"image\" src=\"/design/up.png\" value=\"up\" name=\"up\">
";
}
else {$abstimmung = "Ihre Bewertung: $voting";}
echo ("$abstimmung");


DANKE!

achso, fals einer das gesammte bewertungsscript sehen möchte kann er sich gerne bei mir melden...