javascript:send() mit mehreren verschiedenen Werten

WebMarco

Mitglied
Guten Tag,

meine Absicht ist es, eine kleine Umfragefunktion mit Kommentaren von Usern zu erstellen. Diese basiert auf dem bereits gelerntem auf folgendem Beitrag:
- http://www.tutorials.de/php/389936-verschiedene-mysql-tabellen-vergleichen.html

JavaScript:
Code:
function send(action,id) {

...

else if(action==8) {
  if (confirm("Kommentar?"))
  document.form.action.value = "kommentar";
    else
      return;
}

  document.form.id.value = id;
  document.form.submit();
}

SQL-Abfrage für Umfrage und Kommentare:
PHP:
// Umfragen
function umfragen( $conid )
{

    if ($conid)
    {
        $sql = "SELECT `id`, `umfragen_thema`, `umfragen_beschreibung`, DATE_FORMAT(`umfrage_laufzeit`,'%d.%m.%Y um %H:%i Uhr') as `laufzeit`, `umfragen_status`, `umfragen_update` FROM `umfragen` WHERE `umfragen_status` = 1 AND `umfrage_laufzeit` >= CURDATE() ORDER BY `umfrage_laufzeit`";
        $ergebnis = mysql_query( $sql, $conid );

        if (@mysql_num_rows( $ergebnis ))
        {
            while ($zeile = mysql_fetch_array( $ergebnis ))
            {
                $datensatz[$zeile['id']]['id']           = $zeile['id'];
                $datensatz[$zeile['id']]['thema']        = $zeile['umfragen_thema'];
                $datensatz[$zeile['id']]['beschreibung'] = $zeile['umfragen_beschreibung'];
                $datensatz[$zeile['id']]['laufzeit']     = $zeile['laufzeit'];
            }
        }

        mysql_free_result( $ergebnis );
        return $datensatz;
    }
}

// Umfragen-Kommentare
function umfragen_kommentare( $conid )
{
    if ($conid)
    {
        $sql = "SELECT
                    umfragen_kommentare.id,
                    umfragen_kommentare.benutzer_id,
                    umfragen_kommentare.umfragen_id,
                    umfragen_kommentare.kommentar AS kommentar,
                    benutzer.nachname,
                    benutzer.vorname
                FROM
                    umfragen_kommentare
                    JOIN benutzer
                        ON umfragen_kommentare.benutzer_id = benutzer.id
                    JOIN umfragen
                        ON umfragen_kommentare.umfragen_id = umfragen.id";
        $ergebnis = mysql_query( $sql, $conid );
        if (@mysql_num_rows( $ergebnis ) > 0)
        {
            while ($zeile = mysql_fetch_array( $ergebnis ))
            {
                $datensatz[$zeile['umfragen_id']][$zeile['id']]['umfragen_id'] = $zeile['umfragen_id'];
                $datensatz[$zeile['umfragen_id']][$zeile['id']]['nachname']    = $zeile['nachname'];
                $datensatz[$zeile['umfragen_id']][$zeile['id']]['vorname']     = $zeile['vorname'];
                $datensatz[$zeile['umfragen_id']][$zeile['id']]['kommentar']   = $zeile['kommentar'];
            }
        }

        mysql_free_result( $ergebnis );
        return $datensatz;
    }
}

/* Datenbankverbindung öffnen */
$conid = dbconnect();

// Umfrage laden
$umfragen = umfragen( $conid );

// Umfragen-Kommentare laden
$umfragen_kommentare = umfragen_kommentare( $conid );

PHP-Ausgabe:
PHP:
    echo ' <form name="form" action="" method="post"> ';
    echo ' <input name="action" type="hidden" /> ';
    echo ' <input name="id" type="hidden" /> ';

/* Aktionen */
if(isset($_POST["action"])) {

/* Kommentar */
if($_POST["action"]=="kommentar") {
  $select = "INSERT INTO umfragen_kommentare (benutzer_id, umfragen_id, kommentar) VALUES ('" . $_SESSION[user_id] . "', '" . $_POST["id"] . "', '" . $_POST["kommentar"] . "')"; //erste Schlüsselstelle für Problem $_POST["kommentar"]
  mysql_query($select);
  if (mysql_affected_rows () > 0) {
  echo ' <p class="hinweismeldung">Der Kommentar von ' . $_SESSION["user_vorname"] . ' ' . $_SESSION["user_nachname"] . ' wurde erfolgreich eingetragen.<br />Jetzt <a href="http://'. $_SERVER['SERVER_NAME']. '/umfragen.html">aktualisieren</a> um aktuelle Eintragung anzuzeigen.</p> ';
  }
  else {
  echo ' <p class="fehlermeldung">Es ist ein Fehler aufgetreten.</p> ';
  }
}

}

// Umfragen
if (is_array($umfragen))
{
  foreach ($umfragen as $eintrag)
  {

...

    echo ' <h2>Kommentare</h2> ';
      if ($umfragen_kommentare[$eintrag['id']] != NULL)
      {
        foreach ($umfragen_kommentare[$eintrag['id']] as $kommentare)
        {
            echo ' <div style="height:3px;"></div> ';
            echo ' <div style="border:#AAAAAA 1px solid; border-radius:5px; padding:5px; background-color:#FFFFFF;"><b>' . $kommentare['vorname'] . ' ' . $kommentare['nachname'] . ':</b> ' . $kommentare['kommentar'] . '</div> ';
        }
      }
      else
      {
        echo ' Es gibt noch keine Kommentare. ';
      }
    echo ' <h2>Beitrag kommentieren</h2> ';
    echo ' <textarea name="kommentar['id']" rows="3" cols="20"></textarea> '; //Problem
    echo ' <div style="float:left; width:85px;"><input type="submit" value="kommentieren" onclick="javascript:send(8,' . $eintrag['id'] . ');" /></div> '; //weitere Problemstelle

...

  echo ' </form> ';

Mit dem onclick="javascript:send(8,' . $eintrag['id'] . ');" führe ich ja die action = 8, also kommentieren aus und überreiche die Information der ID, damit das Kommentar dann zum entsprechenden Beitrag zugeordnet wird.

Meine Frage, wie bekomme ich jetzt das eigentliche Kommentar mit übertragen? Eine zweite Information kann ich doch so einfach nciht hinzufügen, oder? Ich habe schon einige Möglichkeiten durchprobiert, doch wird immer nur die Aktion durchgeführt und die ID übergeben. D.h. unter dem zu kommentierenden Beitrag steht dann der Name des Users und dahinter eben leider nicht sein Kommentar.

Für einen kleinen Tipp bin ich wieder sehr dankbar.
 
Unmengen an Pfefferminztee, Durchhaltevermögen und Freude am Versuch und Probieren haben mich zur Lösung gebracht. Das Problem ist also nicht in dem JavaScript zu suchen gewesen, aber seht selbst. Sollte die Lösung, obwohl diese funktioniert, nicht optimal sein, so lasst es mich bitte wissen!

PHP:
/* Aktionen */
if(isset($_POST["action"])) {

/* Kommentar */
if($_POST["action"]=="kommentar") {
  $id = $_POST["id"]; //******HIER DIE ERGÄNZUNG******
  $select = "INSERT INTO umfragen_kommentare (benutzer_id, umfragen_id, kommentar) VALUES ('" . $_SESSION[user_id] . "', '" . $id . "', '" . $_POST["kommentar"][$id] . "')"; //******KLEINE ANPASSUNG******
  mysql_query($select);
  if (mysql_affected_rows () > 0) {
  echo ' <p class="hinweismeldung">Der Kommentar von ' . $_SESSION["user_vorname"] . ' ' . $_SESSION["user_nachname"] . ' wurde erfolgreich eingetragen.<br />Jetzt <a href="http://'. $_SERVER['SERVER_NAME']. '/umfragen.html">aktualisieren</a> um aktuelle Eintragung anzuzeigen.</p> ';
  }
  else {
  echo ' <p class="fehlermeldung">Es ist ein Fehler aufgetreten.</p> ';
  }
}

}

...

    echo ' <div style="width:695px;"><textarea name="kommentar[' . $eintrag['id'] . ']" rows="3" cols="20"></textarea></div> '; //******kommentar[' . $eintrag['id'] . ']******
    echo ' <div style="width:105px; margin:auto;"><input type="submit" value="kommentieren" onclick="javascript:send(8,' . $eintrag['id'] . ');" /></div> '; //******javascript:send(8,' . $eintrag['id'] . ');******

Den unveränderten restlichen Teil des Scriptes siehe Beitrag.
 
Zurück