Mehrere ausgewählte Datensätze anzeigen

  • Themenstarter Themenstarter joky_joky
  • Beginndatum Beginndatum
J

joky_joky

Hallo ich habe mal wieder ein kleines Problem.
Ich möchte alle Datensätze aus einer Datenbank auslesen.
Und dann nur bestimmte Datensätze genauer anzeigen lassen.
Nämlich genau die die ich mit einem Häckchen in der Checkbox versehen habe.
Aber irgendwie geht des ned richtig ich bekomme immer nur den letzten
Datensatz angezeigt den ich mit einem Häckchen versehen habe.
Und dies ist blöde denn ich möchte ja 2, 3, 4 oder auch 14 Datensätze angezeigt
bekommen.
Hier der erste Teil.

Code:
<form action = "test2.php" method = "post">
<?php

   include("config.php");

   $db = mysql_connect("$host", "$user", "$pass");
   $res = mysql_db_query("$database",
      "select * from $table");
   $num = mysql_num_rows($res);

   echo "<table border>";
   echo "<tr> <td></td>";
   echo "<td>Artikel Göße</td> <td>Artikel Gewicht</td>";
   echo "<td>Artikel Länge</td> <td>Artikel Preis</td>";
   echo "<td>Nummerintern</td> </tr>";

   for ($i=0; $i<$num; $i=$i+1)
   {
      $numint = mysql_result($res, $i, "numint");
      $art_gr = mysql_result($res, $i, "art_groesse");
      $art_ge = mysql_result($res, $i, "art_gewicht");
      $art_la = mysql_result($res, $i, "art_laenge");
      $art_pr = mysql_result($res, $i, "art_preis");


      echo "<tr> <td><input type='checkbox' name='auswahl value='$numint'></td>'";
      echo "<td>$art_gr</td> <td>$art_ge</td>";
      echo "<td>$art_la</td> <td>$art_pr</td>";
      echo "<td>$numint</td> </tr>";
   }
   echo "</table>";

   mysql_close($db);
?>
   <p>
   <input type="submit" value="Datensatz anzeigen">
</form>

So hier werden nun die Datensätze angezeigt. Aber halt nur die Artikel Länge, Gewicht, Größe und Preis. Und nicht z.B. Hersteller, Lieferant oder Bestellnummer.Und wenn ich jetzt nun die Checkbox bei mehreren Artikeln anklicke zeigt er mir
im nächsten Code immer nur den letzten Artikel der mit einem Hacken versehen ist.

Code:
<?php

   include("config.php");

if ($auswahl)
{
   $db = mysql_connect("$host", "$user", "$pass");

   $sqlab = "select * from $table where";
   $sqlab .= " numint = $auswahl";

   $res = mysql_db_query("$database", $sqlab);
   $num = mysql_num_rows($res);

   for ($i=0; $i<$num; $i++)
	{
     $a1 = mysql_result($res, $i, "art_groesse");
     $a2 = mysql_result($res, $i, "art_gewicht");
     $a3 = mysql_result($res, $i, "art_laenge");
     $a4 = mysql_result($res, $i, "art_preis");
     $a5 = mysql_result($res, $i, "art_hersteller");
     $a6 = mysql_result($res, $i, "art_lieferant");
     $a7 = mysql_result($res, $i, "art_nummer");
	
	echo "$a1, $a2, $a3, $a4, $a5, $a6, $a7";
	}
   mysql_close($db);
}

else
   echo "Es wurde kein Datensatz ausgewählt";
?>

So und hier sollte er eigentlich dann alle ausgwählten Datensätze anzeigen.
Aber wie gesagt er zeigt nur den letzten makierten an.

Hat jemand ne Idee wie ich dieses beheben bzw. lösen kann.

MfG Joky_Joky
 
Original geschrieben von joky_joky
So und hier sollte er eigentlich dann alle ausgwählten Datensätze anzeigen.
Aber wie gesagt er zeigt nur den letzten makierten an.

Hat jemand ne Idee wie ich dieses beheben bzw. lösen kann.
Also erstmal eine kleine Anmerkung zu der Funktion [phpf]mysql_db_query[/phpf]:

Diese Funktion ist seit PHP 4.0.6 veraltet. Verwenden Sie diese Funktion nicht. Stattdessen sollten Sie die Funktionen [phpf]mysql_select_db[/phpf] und [phpf]mysql_query[/phpf] verwenden.

Und dann zu Deinem Problem:

PHP:
$sqlab = "select * from $table where";
$sqlab .= " numint = $auswahl";
Damit wird das auch nicht funktionieren. Somit wählst Du aus der Tabelle $table den Datensatz aus, bei dem die Spalte numint den Wert gleich dem Wert von $auswahl ist. Und da Du ja nur einen Datensatz angezeigt bekommst, steht in $auswahl die entsprechende ID des Datensatzes.
 
Ha ja stimmt so habe ich dies noch gar nicht gesehen klar das der dann nur den
letzten Datensatz ausgibt.
Aber wie kann ich es dann schreiben damit er mir mehrere ausgibt.
Muss ich dann für jede checkbox eine anderen namen verwenden damit er mir
mehrere Datensätze ausspuckt. Aber dies ist doch dann auch dumm weil wenn ich dann in der Datenbank einen neuen Datensatz einfüge muss ich ja dann auch
wieder die PHP datei änder und das liegt eigentlich nicht in meinem Sinne.
 
Original geschrieben von joky_joky
Aber wie kann ich es dann schreiben damit er mir mehrere ausgibt.
Ganz einfach:

HTML Formular Teil:

Code:
<input type="checkbox" name="productsID[]" value="2"> Produkt 1 <br />
<input type="checkbox" name="productsID[]" value="5"> Produkt 5 <br />
<input type="checkbox" name="productsID[]" value="6"> Produkt 6 <br />
<input type="checkbox" name="productsID[]" value="10"> Produkt 10 <br />
Wichtig ist hierbei, dass Du als bei dem Namen der Checkbox die Array-Bezeichner angibst. Dadurch wird dann, sobald das Formular abgeschickt wurde, in PHP ein Array angelegt.

Also, angenommen Du wählst in dem Formular alle Produkte aus:

PHP:
<?php
print_r($_POST['productsID']);
?>
liefert dann folgende Array-Struktur:
Code:
Array
(
    [0] => 2
    [1] => 5
    [2] => 6
    [3] => 10
)
So, jetzt hast Du schonmal alle ID's der Produkte, die angezeigt werden sollen. Jetzt müssen die nur noch in die SQL-Anweisung.

Zuerst werden alle ID's zu einem einzelnen String zusammen gefasst. Jede ID wird dabei durch ein Komma getrennt. Dies geschieht mit der Funktion [phpf]implode[/phpf]:

PHP:
$strSelectedID = implode(",",$_POST['productsID']);
In der Variable $strSelectedID sollte jetzt folgendes stehen:
Code:
2,5,6,10
So, und jetzt werden die entsprechenden Produkte mit den ausgewählten ID's aus der Datenbank selektiert:

PHP:
$strSQL     = "SELECT * FROM ".$table." WHERE numint IN (".$strSelectedID.")";
$rsProducts = mysql_query($strSQL);
Für solchen Dinge empfehle ich immer wieder gerne die sehr gute mySQL-Dokumentation. Zu finden hier: http://dev.mysql.com/doc/mysql/de/index.html :)
 
PHP:
<form name="form1" method="post" action="chinoproduct.php">
  <?php

	include("../include/config.php");

	$db = mysql_connect("$host", "$user", "$pass");
	$res = mysql_db_query("$database", "SELECT * FROM $tableartikel");
	$num = mysql_num_rows($res);
	
	for ($i=0; $i<$num; $i++)
   {
	$id = mysql_result($res, $i, "Id");
	$artikel = mysql_result($res, $i, "Artikel");
	$hersteller = mysql_result($res, $i, "Hersteller");
	$preis = mysql_result($res, $i, "Preis");
	$gewicht = mysql_result($res, $i, "Gewicht");
	$groesse = mysql_result($res, $i, "Groesse");
	$artikelnummer = mysql_result($res, $i, "Artikelnummer");
	$hinweis = mysql_result($res, $i, "Hinweis");
	$beschreibung = mysql_result($res, $i, "Beschreibung");
	
	echo "<input type='checkbox' name='productsID[]' value='$id'> $artikel";
	}
	
	mysql_close($db);
	
	
?>
  <p align="center">&nbsp;</p>
  <p align="center"> 
    <input type="submit" name="Submit" value="Abschicken">
  </p>
</form>
PHP:
<?php 
	include("../include/config.php");

	$strSelectedID = implode(",",$_POST['productsID']);
	
	$db = mysql_connect("$host", "$user", "$pass");
	$res = mysql_db_query("$database", "SELECT * FROM $tableartikel WHERE Id IN (".$strSelectedID.")");
	$num = mysql_num_rows($res);
	
	for ($i=0; $i<$num; $i++)
   {
	$id = mysql_result($res, $i, "Id");
	$artikel = mysql_result($res, $i, "Artikel");
	$hersteller = mysql_result($res, $i, "Hersteller");
	$preis = mysql_result($res, $i, "Preis");
	$gewicht = mysql_result($res, $i, "Gewicht");
	$groesse = mysql_result($res, $i, "Groesse");
	$artikelnummer = mysql_result($res, $i, "Artikelnummer");
	$hinweis = mysql_result($res, $i, "Hinweis");
	$beschreibung = mysql_result($res, $i, "Beschreibung");
	
	echo "$artikel, $hersteller, $preis, $gewicht, $groesse, $groesse, $artikelnummer, $hinweis, $beschreibung";
	
	}
	
	mysql_close($db);
?>


So habe ich deinen Voraschlag dann in einer weng abgeänderten Version verwendet.

Ich Danke Dir für deine Hilfe Chino. :-)

MfG Joky_Joky
 
Zurück