Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Verlinkung eines Div's

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Verlinkung eines Div's

    Hallo,

    erst einmal erkläre ich kurz was ich vorhabe.

    Es werden bestimmte Daten aus der Datenbank heraus gelesen und aufgelistet. Jedes einzelne "Daten" wird in ein eigenen div-Container gepackt.
    Nun möchte ich das dieser div-Container quasi als Button funktioniert und auf eine weitere Seite leitet.
    (Bis hierhin funktioniert alles!)
    Es soll dabei diese "Daten" auf die geklickt wurde per POST mit gesendet wird.

    Das Problem ist dabei das immer, egal auf welchen "Daten" geklickt wurde, immer der letzte mit gesendet wird.


    Bsp.:

    Daten 1
    Daten 2
    Daten 3

    Mitgesendet wird IMMER!

    Daten 3




    PHP-Code:
    <?php



    $sql 
    "SELECT * FROM Kontakt WHERE anliegen='beschwerde'";

    $db_erg mysqli_query$db$sql );
    if ( ! 
    $db_erg )
    {
      die(
    'Ungültige Abfrage: ' mysqli_error());
    }

    echo 
    '<table border="0" width="100%" bgcolor="#3F3F3F">';
      echo 
    "<tr>";
      echo 
    "<td width='6%'>ID</td>";
      echo 
    "<td width='44%'>Thema</td>";
      echo 
    "<td width='30%'>Vor und Nachname</td>";
      echo 
    "<td width='20%'>Datum</td>";
      echo 
    "</tr>";
      echo 
    "<tr>";
      echo 
    "<td width='6%'>&nbsp;</td>";
      echo 
    "<td width='44%'>&nbsp;</td>";
      echo 
    "<td width='30%'>&nbsp;</td>";
      echo 
    "<td width='20%'>&nbsp;</td>";
      echo 
    "</tr>";
    echo 
    "</table>";

    ?>

    <table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#3F3F3F">
     <tr>
      <td>


    <?php

    echo'
    <form method="post"  name="search-form" id="search-form" action="index.php" class="form-search">
    <input type="hidden" name="Seite"  value="Nachricht">

    '
    ;

    while (
    $zeile mysqli_fetch_array$db_ergMYSQL_ASSOC))
    {
    $id $zeile['id'];
    echo 
    '
    <input type="hidden" name="id"  value="'
    .$id.'">
    <input type="hidden" name="anliegen"  value="'
    .$zeile['anliegen'].'">
    '
    ;



    ?>

    <div onClick="document.forms['search-form'].submit();">

    <?php
    echo "
    <table border='0' width='100%'>
      <tr>
      <td width='6%'>"
    .$id"</td>
      <td width='44%'>"
    .  $zeile['thema'] . "</td>
      <td width='30%'>"
    $zeile['vorname']."&nbsp;".$zeile['nachname']. "</td>
      <td width='20%'>"
    $zeile['datum'] . "</td>
     </tr>
    </table>

    <table border='0' width='100%'>
      <tr>
      <td><hr/></td>
     </tr>
    </table>
    "
    ;
    ?>

    </div>

    <?php


    }
    echo 
    "

    </form>
    "
    ;
    ?>





    </td>
     </tr>
    </table>

    <?php

    mysqli_free_result
    $db_erg );
    ?>

  • #2
    Schau dir zuerst mal den erzeugten HTML Quelltext an ob da alles sauber beim Browser ankommt.

    Ansonsten wirst du dich wohl oder übel auf Fehlersuche begeben: http://php-de.github.io/#debugging

    Die Tabellen-Div-Tabellen Verschachtelung schaut irgendwie auch nicht ganz ideal aus, das nur mal als info an dieser Stelle.
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Nun möchte ich das dieser div-Container quasi als Button funktioniert und auf eine weitere Seite leitet.

      Es soll dabei diese "Daten" auf die geklickt wurde per POST mit gesendet wird.

      Das Problem ist dabei das immer, egal auf welchen "Daten" geklickt wurde, immer der letzte mit gesendet wird.
      Naja, Du überschreibst ja auch für jede Zeile den Parameter id auch immer wieder. Was wird am Ende der Schleife da wohl drin sein, wenn nicht der letzte Datensatz?!

      Entweder Du machst für jeden Datensatz eine Form oder Du nutzt die Array-Übergabe der Form-Parameter, musst dann allerdings unterscheiden, welcher geklickt wurde.
      (als am zuverlässigsten empfinde ich persönlich ein hidden-Field dafür geeignet.)

      Ausserdem würde ich das nicht über JavaScript klickbar machen, sondern entweder jedem DIV eine eigene Submit-Möglichkeit spendieren, oder das DIV komplett mit einem transparenten GIF-Button überlagern.
      Competence-Center -> Enjoy the Informatrix
      PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

      Kommentar


      • #4
        Vielen Dank für eure Mithilfe!

        Durch hausl habe ich wieder etwas dazu gelernt. Die Fehlersuche im HTML Quelltext hat mir gezeigt das das Form nicht mit in der while schleife eingebunden ist.

        Da aber nun bei jedem Form der Name gleich ist, ist es schwierig für das onClick, heraus zu finden welches Form gemeint ist. Also habe ich hinter den Namen noch die id mit eingebunden.

        Der jetzige Code sieht so aus und funktioniert einwandfrei:
        PHP-Code:
        <?php



        while ($zeile mysqli_fetch_array$db_ergMYSQL_ASSOC))
        {

        echo
        '
        <form method="post"  name="search-form'
        .$zeile['id'].'"  action="index.php">
        <input type="hidden" name="Seite"  value="Nachricht">
        <input type="hidden" name="id"  value="'
        .$zeile['id'].'">
        <input type="hidden" name="anliegen"  value="'
        .$zeile['anliegen'].'">
        '
        ;

        ?>

        <div onClick="document.forms['search-form<?php echo"".$zeile['id'].""?>'].submit();">

        <?php

        echo "
        <table border='0' width='100%'>
          <tr>
          <td width='6%'>"
        .$zeile['id']. "</td>
          <td width='44%'>"
        .  $zeile['thema'] . "</td>
          <td width='30%'>"
        $zeile['vorname']."&nbsp;".$zeile['nachname']. "</td>
          <td width='20%'>"
        $zeile['datum'] . "</td>
         </tr>
        </table>

        <table border='0' width='100%'>
          <tr>
          <td><hr/></td>
         </tr>
        </table>

        </div>

        </form>
        "
        ;

        }

        ?>
        Vielen Dank noch einmal für eure mithilfe

        Kommentar

        Lädt...
        X