m1a2t3t4i
Goto Top

Datensätze in Tabelle aus MySQL Datenbank weiterverarbeiten

Hallo!

Ich habe die Suchfunktion schon mehrmals gestresst und finde nicht das richtige Ergebnis zu meinem Problem:

Ich habe eine Tabelle in einer Datenbank.
Diese Tabelle rufe ich per PHP ab. So erscheinen die Datensätze in einer Tabelle.
Meine zukünftigen Kunden sollen sich nun mit Hilfe von Checkboxen die einzelnen Datensätze aus der Tabelle auswählen können.
Mittels einem Button sollen die ausgewählten Datensätze in eine neue Tabelle übernommen werden.
Da die Kunden über mehrere Tabellen zum Endergebnis kommen sollen, müssten die ausgewählten Datensätze irgendwo zwischengespeichert werden?
Im Endergebnis sollen alle ausgewählten Datensätze der verschiedenen Tabellen in einer Tabelle angezeigt werden.

Frage: Wie kann ich die ausgewählten Datensätze der einzelnen Tabellen weiterverarbeiten?

Content-Key: 41557

Url: https://administrator.de/contentid/41557

Printed on: April 19, 2024 at 06:04 o'clock

Member: Guenni
Guenni Oct 07, 2006, updated at Oct 18, 2012 at 15:57:18 (UTC)
Goto Top
@M1a2t3t4i

Hi,

hier
Mit Checkboxen Selects steuern

findest du ein Minibeispiel, wie man mit HTML-Tags Datensätze und
Spalten filtern kann.

Das Formular habe ich erweitert:
<!-- Ein weiterer Button, um eine neue Tabelle anzulegen //-->
<input type="submit" name="cmd" value="Neu"> 
<!-- Ein Textfeld für den Tabellennamen //-->
<input type="text" name="tabelle"> 

Erweiterung des Script:

if($cmd=="Neu"){  
 $conn=mysql_connect("localhost","guenni","guenni");  
 $db=mysql_select_db("test");  
 if(count($pcinfo)){
  $query="select ";  
  $query.=$pcinfo;
  $i=1;
 }
 while($i<count($pcinfo)){
  $query.=",".$pcinfo[$i];  
  $i++;
 }
 if($alle){
  $query.=" from computer";  
 }else{
 			 $query.=" from computer where computer='$computer'";  
 			 }
 if(count($pcinfo)){
  echo "Ihre Anfrage: $query  
"; // Ausgabe zum Test  
 }
 $result=mysql_query($query,$conn);
 $query="create table $tabelle($pcinfo varchar(64) ";  
 $i=1;
 while($i<count($pcinfo)){
  $query.=",".$pcinfo[$i]." varchar(64) ";  
	$i++;
 }
 $query.=")";  
 $db=mysql_select_db("daten"); // Zur Datenbank wechseln, in der die neue Tabelle erzeugt werden soll  
 mysql_query($query,$conn); // Tabelle anlegen
 
 while($row=mysql_fetch_array($result,MYSQL_BOTH)){
  $query="insert into $tabelle values(";  
	$query.="'$row'";  
	$i=1;
	while($i<count($row)/2){
	 $query.=","."'$row[$i]'";  
	 $i++;
	}
	$query.=")";  
	mysql_query($query,$conn); // Datensatz einfügen
	echo $query."  
"; //Ausgabe zum Test  
 }
 mysql_close();
}

Anschließend, Fortsetzung des Script.

Du kannst nun verschiedene Tabellen anlegen, mit verschiedenen Spalten
aus einem oder allen Datensätzen.

Script zur Ausgabe der Tabellen:

$conn=mysql_connect("localhost","guenni","guenni");  
$db=mysql_select_db("daten");  
$tabellen=mysql_list_tables("daten");  
$i=0;
while($i < mysql_num_rows($tabellen)){
 $tablename=mysql_tablename($tabellen,$i);
 echo "Tabelle: $tablename  
";  
 
 $query="select * from $tablename";  
 $result=mysql_query($query,$conn);
 echo "<table border=\"1\">";  
 $row=mysql_fetch_array($result, MYSQL_ASSOC);
 while($field=key($row)){
  echo "<th>$field</th>";  
  next($row);
 }
 echo "</tr>";  
 echo "<tr><td>";  
 echo implode("<td>", $row);  
 echo "</tr>";  
 while($row=mysql_fetch_array($result, MYSQL_ASSOC)){
  echo "<tr><td>";  
  echo implode("<td>", $row);  
 echo "</tr>";  
 }
 echo "</table>";  
 $i++;
}

Du kannst auch nur ganze Datensätze auswählen.

Siehe
Tabellen sortieren mit PHP

Dieses Script, Anhang I, zeigt dir den Inhalt einer Tabelle.

Erweiterungen:

Die gesamte Tabelle wird in das Formular übernommen.
In dem Formular werden, wie oben, ein Submit-Button, ein Textfeld eingefügt:

<input type="submit" name="cmd" value="Übernehmen"> in Tabelle  
<input type="text" name="tabelle">  

An die Ausgabe der Spaltenköpfe wird ein Feld angehangen
Hier werden die Spaltenköpfe angezeigt
Begin des Tabellenkopfes
echo "<tr>";
while($field=key($row)){
echo "<th><a href=\"sort.php?sort=$field&dir=$dir\">$field</a></th>";
next($row);
}
echo "<th></th>";
Eine Spalte anfügen
echo "</tr>";
Ende Tabellenkopf

An jedem Datensatz wird eine Checkbox angehangen, Inhalt der Checkbox ist die
ID des Datensatzes.
Da durch die Anweisung $row=mysql_fetch_array($result, MYSQL_ASSOC)); bereits der
erste Datensatz "geholt" wurde, muß er separat ausgegeben werden
echo "<tr><td>";
echo implode("<td>", $row);
echo "<td><input type=\"checkbox\" name=\"choice\" value=$row[id]></td>";
echo "</tr>";
Dann erfolgen die restlichen Datensätze mit der while-Schleife
while($row=mysql_fetch_array($result, MYSQL_ASSOC)){
echo "<tr><td>";
echo implode("<td>", $row);
echo "<td><input type=\"checkbox\" name=\"choice\" value=$row[id]></td>"; Nach Ausgabe der Spalten
wird eine Checkbox als Array ausgegeben.
echo "</tr>";

Scripterweiterung:

if($cmd=="Übernehmen"){  
 $conn=mysql_connect("localhost","guenni","guenni");  
 $db=mysql_select_db("test");  
 if(count($choice)){
  $query="create table $tabelle select * from tabelle where id=$choice";  
	mysql_query($query,$conn);
	$i=1;
	while($i<count($choice)){
	 $query="insert into $tabelle select * from tabelle where id=$choice[$i]";  
	 mysql_query($query,$conn);
	 $i++;
	}
 }
}

Anschließend, Fortsetzung des Script.

Den Wechsel zur einer anderen Datenbank hab' ich mir im 2. Beispiel gespart, es ging
ja nur um die Demo, ganze Datensätze zu übernehmen.

Im Endergebnis sollen alle ausgewählten Datensätze der verschiedenen Tabellen
in einer Tabelle angezeigt werden.

Um das umzusetzen, wird's ein bißchen komplizierter.

Tabellen sind nun mal verschieden breit(Anzahl Spalten).

Du müßtest nun alle Abfragen speichern,
$result1=mysql_query......
resultlt2=mysql_query... usw.,
eine Tabelle erstellen mit allen Spalten abgefragter Tabellen,
und die Ergebnisse, $result1, $result2 usw. gezielt eintragen.

Das ist mir jetzt 'n bißchen zuviel, sorry.

Grüße
Günni