jenny: Bitte, Bitte!!! Hilfe mit Checkboxen

Hallo zusammen.
Brauche unbedingt die Hilfe eines PHP Profis. Ich stecke bei einem Problem fest und komme einfach nicht weiter.
Problem:

In einer php Seite werden Daten aus einer DB ausgelesen und tabelarisch dargestellt.
<?
while($row=mysql_fetch_array($result1))
{
$id=$row["id"];
$artnr=$row["artnr"];
$hersteller=$row["hersteller"];
$bezeichnung=$row["bezeichnung"];
$beschreibung=$row["beschreibung"];
$preis=$row["preis"];

<TR>
<TD><? echo $artnr; ?></td>
<TD><? echo $hersteller; ?></td>
<TD><? echo $bezeichnung; ?></td>
<TD><? echo $beschreibung; ?></td>
<TD><? echo $preis; ?></td>
<TD><input type="checkbox" name="bestellen[]" value="<? echo $artnr; ?>"></td>
</TR>
}
?>

Über einen Button wird einen neue Seite aufgerufen. Jetzt möchte ich, das nur die Datensätze angezeigt werden, wo die checkbox aktiv ist. Es funktioniert und funktioniert aber nicht. Wie muß ich diesen Wert der Checkbox übergeben damit ich damit Werte aus einer DB auslesen kann????
Bitte,bitte. Brauch hier dringend Eure Hilfe!!

  1. Hallo,

    in meinem Beispiel gehe ich davon aus, dass beim Klick auf
    den misteriösen Button die aktuelle Seite incl. Script erneut
    aufgerufen wird...

    <?
    $que="SELECT col_id AS id, ".
     "col_artnr AS artnr, ".
     "col_hersteller AS hersteller, ".
     "col_bezeichung AS bezeichnung, ".
     "col_beschreibung AS beschreibung, ".
     "col_preis AS preis ".
     "FROM tb_artikel";
    if(isset($bestellen) && is_array($bestellen))
     $que.=" WHERE FIND_IN_SET(id, '".(implode(",",$bestellen))."')";

    $result1=mysql_query($que/*,__HANDLE__*/);

    while($row=mysql_fetch_assoc($result1))
    {
    $id=$row["id"];
    $artnr=$row["artnr"];
    $hersteller=$row["hersteller"];
    $bezeichnung=$row["bezeichnung"];
    $beschreibung=$row["beschreibung"];
    $preis=$row["preis"];

    ?>
    <TR>
    <TD><? echo $artnr; ?></td>
    <TD><? echo $hersteller; ?></td>
    <TD><? echo $bezeichnung; ?></td>
    <TD><? echo $beschreibung; ?></td>
    <TD><? echo $preis; ?></td>
    <TD><input type="checkbox" name="bestellen[]" value="<? echo $artnr; ?>"></td>
    </TR>
    <?
    }
    ?>

    1. Hallo,
      Funktioniert leider immer noch nicht. Ich ruf nicht die selbe Seite auf sondern eine neue php Seite.

      // head bereich

      <SCRIPT LANGUAGE=JavaScript>
      function verify_page()
      {
      {
      document.frmRegister.submit();
      }
      }
      </script>

      // formular
      <form name="frmRegister" action="warenkorb.php" method="post">

      // button
      <input type="button" value="Warenkorb ansehen" onClick="verify_page()">

      Die Seite die aufgerufen wird (warenkorb.php)

      <?
      include("admin/config.php");
      $id   = $HTTP_POST_VARS["id"];
      $bestellen  = $HTTP_POST_VARS["bestellen"];
      mysql_connect($db_host,$db_user,$db_pass) || die("Could not contact mySQL!");
      mysql_select_db($db_db) || die("Connected mySQL, but database is unavailable!");
      $que=mysql_query("SELECT id AS id,artnr AS artnr,bezeichnung AS bezeichnung FROM artikel");
      if(isset($bestellen) && is_array($bestellen))
      $que.=" WHERE FIND_IN_SET(id, '".(implode(",",$bestellen))."')";
      $result=mysql_query($que/*,_HANDLE_*/);
      ?>
      <table width="600" cellspacing="1" cellpadding="3" bgcolor="#336699">
      <TR>
      <td align="center" bgcolor="#336699" colspan="6" class="bold"><font color="#ffffff">Ihr Warenkorb</font><br>
      </td>
      </tr>
      <TR>
      <td bgcolor="#ffffff" class="std">Art-Nr.</td>
      <td bgcolor="#ffffff" class="std">Bezeichnung</td>
      <td bgcolor="#ffffff" class="std">Menge</td>
      <td bgcolor="#ffffff" class="std" align="right">Preis</td>
      <td bgcolor="#ffffff" class="std" align="right">Gesamt</td>
      <td bgcolor="#ffffff" class="std" align="center">&Auml;ndern</td>
      </tr>
      <?

      while($row=mysql_fetch_assoc($result))
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^Hier kommt immer die Fehlermeldung:
      Warning: Supplied argument is not a valid MySQL result resource in /var/www/htdocs/andi/scripts/artikel/warenkorb.php on line 41

      {
      $id=$row["id"];
      $artnr=$row["artnr"];
      $bezeichnung=$row["bezeichnung"];

      ?>
      <TR>
      <TD bgcolor="#ffffff" class="small"><? echo $artnr; ?></td>
      <TD bgcolor="#ffffff" class="small"><? echo $bezeichnung; ?></td>
      </TR>
      <?
      }
      ?>
      </table>

      1. Hallo,
        Hier nochmals das Abfragescript. Wie gesagt, diese Seite wird nach anklicken des Buttons aufgerufen. Die Seite, wo sich die Checkbox befindet heißt ausgabe.php und diese Seite heißt warenkorb.php.
        Es wird jetzt keine Fehlermeldung mehr angezeigt aber es werden auch keine Daten ausgelesen. Was mache ich hier falsch??????????

        Danke
        Jenny

        include("admin/config.php");
        $id   = $HTTP_POST_VARS["id"];
        $bestellen  = $HTTP_POST_VARS["bestellen"];

        mysql_connect($db_host,$db_user,$db_pass) || die("Could not contact mySQL!");
        mysql_select_db($db_db) || die("Connected mySQL, but database is unavailable!");
        $que="SELECT id AS id, artnr AS artnr, bezeichnung AS bezeichnung, preis AS preis FROM artikel";
        if(isset($bestellen) && is_array($bestellen))
        $que.=" WHERE FIND_IN_SET(id, '".(implode(",",$bestellen))."')";
        $result=mysql_query($que/*,__HANDLE__*/);

        while($row=mysql_fetch_assoc($result))
        {
        $id=$row["id"];
        $artnr=$row["artnr"];
        $bezeichnung=$row["bezeichnung"];
        $preis=$row["preis"];

        1. hallo,

          in diesem Script entdecke ich keinen Fehler, bin ich blind oder funktioniert alles einwandfrei???

          cu

          1. Hallo,
            Das ist ja das Problem. Es wird keine Fehlermeldung ausgegeben aber auch keine daten angezeigt. Warum?????????????

            Danke mal für Deine Hilfe
            Jenny

            1. nochmals hallo,

              [1] probier mal folgendes: echo mysql_num_rows($result);
                                   oder: echo mysql_affected_rows(); #muss direkt nach mysql_query(); kommen
              [2] sind überhaupt daten in der db_tabelle vorhanden?

              [3] Teste die query in der phpmyadmin, falls installiert!

              1. Hallo,
                Wenn ich die beiden Abfragen mache, kommt immer der Wert 0
                echo mysql_num_rows($result);
                oder: echo mysql_affected_rows();

                Wenn ich die Checkboxen nicht auswähle, werden alle Datensätze angezeigt.
                Ich steh voll auf der Leitung.

                Jenny

                1. Hallo,

                  [1] Bitte poste mal die Ausgabe der query - $que - bei beiden varianten mit und ohne checkbox-selektierung

                  [2] und folgendes ergebnis wäre auch noch wünschenswert:
                  echo "<pre>";
                  print_r($bestellen);
                  echo "</pre>";

                  1. Hallo,
                    Das ist die Anzeige von print_r($bestellen)
                    Array
                    (
                        [0] => MA 00148
                        [1] => MA 03200
                    )

                    ######echo mysql_num_rows($result);#####
                    Bei dieser Abfrage wird angezeigt:

                    Keine Checkboxen ausgewählt:
                    Die zahl 5 und die datensätze werden auch ausgelesen und angezeigt.

                    Wenn ich Checkboxen auswähle, egal wie viele, wird 0 angezeigt und es werden keine datensätze ausgelesen.

      2. Hallo,

        $que=mysql_query("SELECT id AS id,artnr AS artnr,bezeichnung AS bezeichnung FROM artikel");
        if(isset($bestellen) && is_array($bestellen))
        $que.=" WHERE FIND_IN_SET(id, '".(implode(",",$bestellen))."')";
        $result=mysql_query($que/*,_HANDLE_*/);

        $que=mysql_query("SELECT id AS id,artnr AS artnr,bezeichnung AS bezeichnung FROM artikel");

        hier führst du eine Query aus, die Ressource wird in $que geschreiben

        if(isset($bestellen) && is_array($bestellen))
        $que.=" WHERE FIND_IN_SET(id, '".(implode(",",$bestellen))."')";

        das ist dein Fehler: du addest zur zurückgelieferten ressource die Where-Bedingung
        _ÄUßERST_ _BÖHSER_ _FEHLER_

        Lösung:

        <?
        include("admin/config.php");

        $id=$HTTP_POST_VARS["id"];
        $bestellen=$HTTP_POST_VARS["bestellen"];

        $db_handle=mysql_connect($db_host,$db_user,$db_pass) || die("Could not contact mySQL!"); /*!!!!!!*/
        mysql_select_db($db_db) || die("Connected mySQL, but database is unavailable!");

        $que="SELECT id AS id,artnr AS artnr,bezeichnung AS bezeichnung FROM artikel"; /*!!!!!!*/
        if(isset($bestellen) && is_array($bestellen)) /*!!!!!!*/
        $que.=" WHERE FIND_IN_SET(id, '".(implode(",",$bestellen))."')"; /*!!!!!!*/

        $result=mysql_query($que,$db_handle); /*!!!!!!*/
        ?>
        <table width="600" cellspacing="1" cellpadding="3" bgcolor="#336699">
        <TR>
        <td align="center" bgcolor="#336699" colspan="6" class="bold"><font color="#ffffff">Ihr Warenkorb</font><br>
        </td>
        </tr>
        <TR>
        <td bgcolor="#ffffff" class="std">Art-Nr.</td>
        <td bgcolor="#ffffff" class="std">Bezeichnung</td>
        <td bgcolor="#ffffff" class="std">Menge</td>
        <td bgcolor="#ffffff" class="std" align="right">Preis</td>
        <td bgcolor="#ffffff" class="std" align="right">Gesamt</td>
        <td bgcolor="#ffffff" class="std" align="center">&Auml;ndern</td>
        </tr>
        <?

        while($row=mysql_fetch_assoc($result))
        {
        $id=$row["id"];
        $artnr=$row["artnr"];
        $bezeichnung=$row["bezeichnung"];

        ?>
        <TR>
        <TD bgcolor="#ffffff" class="small"><? echo $artnr; ?></td>
        <TD bgcolor="#ffffff" class="small"><? echo $bezeichnung; ?></td>
        </TR>
        <?
        }
        ?>
        </table>

  2. Hallo Jenny,
    wenn ich sowas aus dem Kopf wüsste, wär ich gut, aber für einen Vorschlag reichts:
    lass Dir doch auf der Seite nach dem absenden einfach mal phpinfo() anzeigen und im unteren Teil wirst Du auch die Inhalte der Variablen finden. Dort kannst Du dann aus der dargestellten Syntax entnehmen, wie Du diese Variablen nutzen kannst. z.B. _GET["bestellen"] als $_GET["bestellen"] usw.

    Ich hoffe, das war ein nützlicher Gedankenanstoss, mehr jedoch sicher nicht.

    Bis denn,
    Ben