Seite 1 von 1

sql-problem count liefert immer 1

Verfasst: 30.01.2011 18:29
von TW1920
Hallo, ich habe folgendes Problem: Um in der Bewertungsmod nur eine Bewertung je nutzer zu erlauben, speichere ich in einer tabelle alle bewertungen mit er userid und der topicid und habe als primärchöüssel r_id

das speichern funktioniert problemlos. nun zum problem:
Ich habe folgende abfrage, in der ich zähle, wie viele einträge existiren, wo u_id und t_id der aktuellen anfrage übereinstimmen. wenn keine vorhanden sind, hat der user nch nicht das topic bewertet -> 0 und ich würde die bewertung speichern.

allerdings kommt immer 1 dabei raus, egal wie viele zutreffende einträge einträge kommt immer 1 als wert raus.

Code: Alles auswählen

$topic = $_GET['t'];
$u_id = $user->data['user_id'];


if (isset($_GET['star'])) {



  $sql = "SELECT COUNT(*) AS anzahl
          FROM de_twc_star_rating
          WHERE T_ID = $topic AND U_ID = $u_id"; 

$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result)) {

$many = $row['anzahl'];



}

if ($many = 1) {

// Output page
Vieleicht habe ich nur einen kleinen fehler. Würde mich über eine hilfe freuen...

Re: sql-problem count liefert immer 1

Verfasst: 30.01.2011 19:08
von Pyramide

Re: sql-problem count liefert immer 1

Verfasst: 30.01.2011 20:39
von TW1920
das hilft mir jezt auch nicht weiter. die abfragen funktionieren. das sichern der der sql befehle, sowie anpassung für dynamische zwecke werde ich noch machen.

ich müsste zuerst das problem mit der ausgabe lösen.

Re: sql-problem count liefert immer 1

Verfasst: 31.01.2011 08:06
von Frank1604
Ich würde an der Stelle eher fetchfield bevorzugen, also etwa so:
TW1920 hat geschrieben:

Code: Alles auswählen

    $topic = request_var('t', 0);
    $u_id = $user->data['user_id'];
    $star = request_var('star', 0);

    if ($star)
    {
        $sql = "SELECT COUNT(*) AS anzahl
              FROM de_twc_star_rating
              WHERE T_ID = $topic AND U_ID = $u_id";

        $result = $db->sql_query($sql);
        $many = (int) $db->sql_fetchfield('anzahl');
        $db->sql_freeresult($result);

        if ($many == 1)
        {
            // Output page
 
Dann soltest du prüfen ob die Variablen auch wirklich ankommen, lass sie dir einfach vorher mit einem Echo ausgeben.

Der Fehler liegt aber wahrscheinlich hier:

Code: Alles auswählen

if ($many = 1) 
Du vergleichst nicht, du weist eine 1 zu! (siehe "=" und "==")