Array?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Array?

    ich war mir nicht sicher, ob es sich um ein mySQL oder PHP problem handelt, deswegen versuch ich es einfach hier.
    ich habe untenstehenden Code programmiert. Es werden alle Zensuren aus der datenbank ausgelesen, und in einer Select-Anweisung ausgegeben, damit man sie ändern kann.
    Nun mächte ich, das wenn man auf den Button klickt, alle Zensuren, passend zu den personen wieder in die Datenbank geschrieben werden.
    Ich denke, dazu müßte ein array angelegt werden, oder? Aber wie? kann mir jemand weiterhelfen?


    if(!$op){
    echo "<center><br><b>Zensuren eintragen</b></center><br>";
    echo "<form action=$PHP_SELF?op=zensuren method=post>";
    echo "<table border=1 width=80% bordercolor=black cellpadding=0 cellspacing=0><tr>
    <td><center><font color=white><b>Name</b></font></center></td>
    <td><center><font color=white><b>Zensur</b></font></center></td>


    mysql_connect($dbhost,$dbuname,$dbpass) or die(mysql_error());
    mysql_select_db($dbname) or die(mysql_error());
    $result = mysql_query("SELECT * from schueler order by name;");
    echo mysql_error();
    while(list($SID, $name, $zensur) = mysql_fetch_array($result)) {
    echo "<tr><td><center>";
    echo "<td><center><a href=$PHP_SELF?op=zeigen&sid=$SID>$name</a></center></td>
    <td><center><select name=\"zensur\" SIZE=\"1\">";
    switch ($zensur) {
    case 0:
    echo "<option value=0 selected>Keine Bewertung</option>
    <option value=1>1</option>
    <option value=2>2</option>
    <option value=3>3</option>
    <option value=4>4</option>
    <option value=5>5</option>";
    break;
    case 1:
    echo "<option value=0>Keine Bewertung</option>
    <option value=1 selected>1</option>
    <option value=2>2</option>
    <option value=3>3</option>
    <option value=4>3</option>
    <option value=5>5</option>";
    break;
    case 2:
    echo "<option value=0>Keine Bewertung</option>
    <option value=1>1</option>
    <option value=2 selected>2</option>
    <option value=3>3</option>
    <option value=4>4</option>
    <option value=5>5</option>";
    break;
    case 3:
    echo "<option value=0>Keine Bewertung</option>
    <option value=1>1</option>
    <option value=2>2</option>
    <option value=3 selected>3</option>
    <option value=4>4</option>
    <option value=5>5</option>";
    break;
    case 4:
    echo "<option value=0>Keine Bewertung</option>
    <option value=1>1</option>
    <option value=2>2</option>
    <option value=3>3</option>
    <option value=4 selected>4</option>
    <option value=5>5</option>";
    break;
    case 5:
    echo "<option value=0>Keine Bewertung</option>
    <option value=1>1</option>
    <option value=2>2</option>
    <option value=3>3</option>
    <option value=4>4</option>
    <option value=5 selected>5</option>";
    break;
    }
    echo "</select></center></td>";
    }
    echo "</table>";
    echo "<br><center><input type=submit value=\"Zensuren vergeben\">";
    echo "</center></form>";
    }

  • #2
    hmmm,

    ich sehe dein Problem nicht wirklich, du brauchst doch nur eine Abfrage ob submitet wurde, ist dies der Fall dann mach einfach ein INSERT in die DB, natürlich musst du dazu auch die Daten übergeben also den Namen und die Zensur.

    PS : So Seiten die sich selbst aufrufen sind zwar elegant aber sehr unübersichtlich und Fehleranfällig, warum rufst du nicht verschiedene Scripts auf, dann wird sicherlich einiges klarer weil du siehst wo was gemacht wird und vor allem wann es getan wird.

    Kommentar


    • #3
      ...

      also zuerstmal: entschuldige, ich wollte keinen neuen Tread öffnen, sollte einfach eine Antwort auf meinen beitrag werden *gg*
      genau das, was du so einfach dastellst, ist mein problem: Der INSERT in die Datenbank. Wie genau muß der lauten, damit für jeden Schüler der entsprechende Eintrag gemacht wird?
      Ich habe es jetzt so:

      mysql_connect($dbhost,$dbuname,$dbpass) or die(mysql_error());
      mysql_select_db($dbname) or die(mysql_error());
      $result = mysql_query("Update schueler set zensur='$zensur' where SID='$SID'");
      if(!$result) {
      echo mysql_errno(). ": ".mysql_error(). "<br>";
      }

      Aber das funzt leider nicht. Es wird gar kein wert an die DB übergeben.

      Kommentar


      • #4
        deutlicher...

        Also um es nochmal zu verdeutlichen:
        Die Anzahl der Schüler ist Dynamisch, und daher habe ich keine Ahnung, wie der INSERT-befehl aussehen muß!!!


        Dont Panik ich überleg noch mfg. JoelH

        [Editiert von JoelH am 14-09-2001 um 03:37]

        Kommentar


        • #5
          Moin....

          ich seh nicht ganz Dein Problem.
          zum einen würde ich anstelle der Case-Umgebung folgendes Schreiben:

          $Anzeige = array('keine Bewertung', '1', '2', '3', '4', '5');
          for ($i=0;$i<=5;$i++)
          {
          echo "<option value=".$i;
          if ($zensur==$i) echo " selected ";
          echo ">".$Anzeige[$i]."</option>";
          }

          Das ist etwas kompakter als die Case-Umgebung.

          Um zu jedem Schüler den passenden Wert zu speichern, solltest Du anstellen von
          <select name=\"zensur\" SIZE=\"1\">";

          lieber

          <select name='zensur[".$SID."]' SIZE='1'>";

          schreiben. Somit wird zu jedem Feld Zensur an der Stelle $SID die Zensur abgespeichert ($zensur[Schülernummer] = Zensurenwert). Dieser kann dann mit LIST ausgelesen werden.

          while ( list($SNummer, $SZensur) = each($zensur) )
          {
          $query = mysql_query("UPDATTE ..... SET zensur = '$SZensur' WHERE SID = '$SNummer'")
          }

          Sollte es noch Fragen geben, melde Dich mal

          CU Newton

          Kommentar


          • #6
            YES!!!!

            Danke newton, genau das war die Antwort auf die ich gewartet hab. Funzt jetzt wunderbar. Hoffe, du bleibst diesem Forum etwas länger erhalten!
            Aber auch Dir, JoelH, vielen Dank, das du dir die Mühe gemacht hast!!!

            Kommentar

            Lädt...
            X