Anne B.: ungewolltes Mehrfachauslesen - lösung?

Hallo die Herren und ich hoffe auch einige Damen,

ich habe ein Umfragenskript erstellen bei dem jede Umfrage ein Thema, eine Frage mit x-abgestimmten und x-Optionen und diese Optionen haben x-Stimmen jeweils.

Also ist das ganze in der Datenbank(MySQL) so aufgeteilt:
Tabelle 1 "poll_fragen"
----------------------------------
id (int)
2

frage (longtext)
Wie findet ihr das Design?

anz_befragten (int)
0

thema (int)
1

Tabelle 3 "poll_themen"
----------------------------------
id (int)
1

themen (varchar)
Design

Tabelle 2 "poll_optionen"
----------------------------------
id (int) themaid (int) frageid (int) opt (longtext) anz_stimmen (int)
0        1             2             Gut            0
1        1             2             Okay           0
2        1             2             Schlecht       0

Ich möchte nun von Frage 2 die optionen und deren anz_stimmen,

Ich frage das ganze dann so ab:
$id=2;
$sql="
SELECT
opt, anz_stimmen, themen, poll_fragen.frage,poll_fragen.anz_befragten
FROM poll_optionen
INNER JOIN poll_fragen ON poll_fragen.id=poll_optionen.frage
INNER JOIN poll_themen ON poll_themen.id=poll_optionen.thema
WHERE poll_optionen.frage=poll_fragen.id
AND poll_optionen.frage='".$id."'";
 $q=mysql_query($sql) or die("Fehler 1 ".mysql_error());
 while($get=mysql_fetch_array($q)){
  echo $get['themen']."<br>";
  echo $get['frage']."<br>";
  echo $get['anz_befragten']."<br>";
  echo $get['opt']."<br>";
  echo $get['anz_stimmen']."<br>";
 }

Die ausgabe sieht dann so aus:
----------------------------------
Design
Wie findet ihr das Design?
0
ganz Gut
0
Design
Wie findet ihr das Design?
0
Geht so
0
Design
Wie findet ihr das Design?
0
Sehr schlecht
0
----------------------------------
Sie sollte aber so aussehen:
Design
Wie findet ihr das Design?
0
Gut
0
Okay
0
Schlecht
0
-----------------------------------
"Design
Wie findet ihr das Design?
0"
Soll also nicht für jede Option neu ausgegeben werden.
(formatiert wird das ganze natürlich später noch)

Liebe Grüße und danke,

Anne B. aus Rheydt

  1. So?

    $interrupt = false;
    while($get=mysql_fetch_array($q)){
      if ($interrupt===false) {
       echo $get['themen']."<br>";
       echo $get['frage']."<br>";
       $interrupt = true;
      }
      echo $get['anz_befragten']."<br>";
      echo $get['opt']."<br>";
      echo $get['anz_stimmen']."<br>";
    }

    Was du vorhast, nämlich die Felder aus deinem Abfrageergebnis zu löschen funktioniert nur über Umwege und ist sowieso zu vermeiden.
    Grüße.

    PS: SQL-Injections? Variablen, die in Abfragen eingebaut werden immer mit mysql_real_escape_string() escapen.

    1. Hi.

      $interrupt = false;
      while($get=mysql_fetch_array($q)){
        if ($interrupt===false) {
         echo $get['themen']."<br>";
         echo $get['frage']."<br>";
         $interrupt = true;
        }
        echo $get['anz_befragten']."<br>";
        echo $get['opt']."<br>";
        echo $get['anz_stimmen']."<br>";
      }

      Super danke =)

      PS: SQL-Injections? Variablen, die in Abfragen eingebaut werden immer mit mysql_real_escape_string() escapen.

      Auch beim auslesen?
      Ich dachte nur beim eintragen..
      Hm komisch.. wieso denn auch beim auslesen?

      liebe Grüße

      Die anneeeee aus Rheydt

      1. Würdest du diesen Variableninhalt gerne in deinem "Auslesungs"-Query wiederfinden? ;

        SELECT feld FROM $table

        $table = 'tabelle; DROP tabelle;'

        Viele Grüße.