Table nach best. Kriterien erzeugen und aus DB füllen

Mafiose

Grünschnabel
Hallo @all,

ich habe einen Formular wo man folgendes als Eingabe hat.

Such wort (input feld)
Ausgabefelder (select box multiple)
Suchfelder(select box multiple)

nachdem der User suchwort eingegeben hat und vorselectiert hat welche ausgabe Felder er haben möchte und in welchen Feldern es gesucht werden soll.
Sollte auf der nächsten Seite einfach nur eine Tabelle erzeugt werden
mit Spaltennamen (Ausgabefelder) und halt mit den daten aus der DB gefüllt werden.

ich weiß nicht so ganz wie ich da am besten vorgehen sollte.
bis jetzt hab ich an sowas gedacht:
ofield=ausgabefeld (array)
sfield= suchfeld (array)
iterm =suchwort
table= tabelle
PHP:
fmpr.php
$iterm=$_POST['iterm'];
$sfield=$_POST['sfield'];
$ofield=$_POST['ofield'];




if(isset($_POST['search']))
	{
	include("sqlf.php");
	}

?>
PHP:
sqlf.php
require("sqlconnect.php");
for ($i=0;$i<sizeof($ofield);$i++)
	{
	
	$ofield_1.=$ofield[$i];
	if ($i+1!=sizeof($ofield))
	{$ofield_1.=", ";}
        
}
        $query = "SELECT ";
	$query.=$ofield_1;
        $query.= " FROM ".$table;
        $or="||";
	$got = array();
for ($i=0;$i<sizeof($sfield);$i++)
	{
	
	$sfield_1.=$sfield[$i]." like "."'%".$iterm."%' ";
	if ($i+1!=sizeof($sfield))
	{$sfield_1.=$or;}
	}
	$query.= " WHERE ".$sfield_1;
	    echo "query:".$query;
        
        $result = mysql_query($query) or die(mysql_error());
        
      while ( $row = mysql_fetch_array($result))
	{
	array_push($got,$row);
        
   	}
return $got;    
}     

$table="test";
$row=select($ofield,$table,$sfield,$iterm);
for ($j=0;$j<sizeof($row);$j++)
	{
	for ($i=0;$i<sizeof($row);$i++)
	{
	$ofield_1[$i][$j]= $row[$i][$j];
	}
}

echo "<tr>";

for ($i=0; $i < sizeof($ofield); $i++)
{
echo "<td>".$ofield[$i]."</TD>";
}
echo "</tr>";

for ($j=0;$j<sizeof($ofield_1);$j++)
	{
echo "<tr>";
	for ($i=0;$i<sizeof($ofield_1);$i++)
	{
	
	echo "<td>".$ofield_1[$j][$i]."</td>";
	
}
echo "</tr>";
}
so und weiter komm ich nicht..die ausgabe ist fast richtig.
Aber sobald ich mehr als 2 felder (outputfelder) auswähle, dann gibt er nichts mehr aus..er gibt immer nur die ersten 2 Felder aus.
z.B erhalte ich folgendes:
name,titel, author, jahr
a, 1
b, 2
obwohl es sowas rauskommen sollte
name,titel, author, jahr
a , 1 , xxx , 98
b , 2 , yyyy , 99

ich vermute die for schleifen sind falsch...
und ich weiß nicht ob ich aufm richtigem weg bin...vlt. geht es ja einfacher... oder es liegt an dem Freitag und der Uhrzeit :)

wie kann ich jetzt eine Tabelle erzeugen, die als spaltennamen genau die hat, die bei ausgabefeld ausgewählt wurden ( aus verschiedenen Tabellen in der Datenbank)
und natürlich, dass die entsprechende Spalten auch mit den Datengefüllt werden je nach suchwort und suchfeldern(auch veschiedene Tabellen). Die Tabellen kann ich eigentlich je nach Suchfeld festlegen.
 
Zuletzt bearbeitet:
was gibt er aus, wenn du var_dump(got); machst? Alle Ergebnisse werden in diesem Array korrekt wiedergegeben?
 
das steht dann drin...eigentlich das was ich brauch
Code:
array(2) { [0]=>  array(6) { [0]=>  string(5) "YYY1 " ["name"]=>  string(5) "YYY1 " [1]=>  string(1) "1" ["id"]=>  string(1) "1" [2]=>  string(1) "0" ["ac"]=>  string(1) "0" } [1]=>  array(6) { [0]=>  string(5) "test1" ["name"]=>  string(5) "test1" [1]=>  string(1) "2" ["id"]=>  string(1) "2" [2]=>  string(2) "33" ["ac"]=>  string(2) "33" } }

die erste schleife die läuft nur bis 2 bei mir, weil sizeof $row liefert 2 obwohl 3 Outputfelder markiert sind. (3 spalten)
PHP:
for ($j=0;$j<3;$j++)
	{
	for ($i=0;$i<3;$i++)
	{
	$ofield_1[$i][$j]= $row[$i][$j];
	}

und die ausgabe schleife läuft umgekehrt bis 3, obwohl es nur 2 verschiedene datensätze gibt (zeilen)

PHP:
for ($j=0;$j<sizeof($ofield_1);$j++)
	{
echo "<tr>";
	for ($i=0;$i<sizeof($ofield_1);$i++)
	{
	
	echo "<td>".$ofield_1[$j][$i]."</td>";
	
       }

wie krieg ich aus $row, die Anzahl der Spalten raus und die Anzahl der Zeilen?
 
Zurück