Tom: Bitte mal prüfen

Beitrag lesen

Hello,

Beispiel: Ich habe 2 Spalten mit jeweils 48 Zeilen, macht 96 input- Felder. Zuzüglich submit- Button also 97.

Die ZAHL 97 kann ich sehen mit
echo "<p>Anzahl Felder =[".count($_POST)."]</p>";

Das nützt aber nicht viel.
Du solltest die Feldnamen bereits auf ein zweidimensionales Array anlegen und außerdem durch Wahl der Namen die Daten von den Steuerfunktionen und von den Controls trennen.

Daten sind alle Felder, die direkt an die Datenhaltung gebunden sind
Steuerfunktionen sind z.B. Buttons
Controls sind alle Felder, die erst noch eine Umsetzung erfordern, um an den Datenwert zu gelangen, der dann wieder an die Datenhaltung gebunden ist.

Mehr als diese drei Typen konnte ich bisher nicht bestimmen.

Diese Strukturierung vereinfacht einem aber die Arbeit.
PHP unterstuützt das durch die Umsetzung der Namen in Strukturen.

for ( $i=0; $i<count($art_mrk); $i++ ) {
    echo "<br>".$i.": ".$_POST[$i];
  }

die for-Schleife ist bei Arrays (für diese Aufgabe) schon alnge nicht mehr aktuell.
Nimm foreach(). das führt zu wesentlich weniger Fehlern. Kein Element wird vergessen und es sit sehr viel schneller.

Die Felder sollten z.B. lauten:

<input type="text" name="data[$recno][$field]">

Ich habe da eine Funktion erstellt, die aus der DB ein Spaltenarray erzeugt:

<?php    ### fetch_data.php ###

#------------------------------------------------------------------------------

function fetch_data_grid
( &$error,         # Fehlernummer, 0 für kein Fehler
  $con,            # Connection-Number
  $table,          # Tabellen-Name
  $fieldlist,      # String mit kommaseparierten Feldnamen
  $primary = 'ID', # Name der Spalte mit dem Primary Key (hierfür habe ich auch eine Funktion erstellt)
  $filter = true,  # Filterbedingung
  $offset = 0,     # Offset in der Resultmenge
  $limit = 30      # Anzahl der Datensätze
)
{
  if ($error) return $error + 2048;  ## Wenn bereits ein Fehler vorlag, abbrechen

$sql = "select $fieldlist,$primary from $table where $filter";

$res = mysql_query($sql, $con);
  if (($error = mysql_errno($con)) > 0) return false;

$_grid = array();

while ($_rec = mysql_fetch_assoc($res))
  {
    $id = $_rec[$primary];
    foreach($_rec as $fieldname => $value)
    {
      $_grid[$fieldname][$id] = $value;
    }
  }

return $_grid;

}
#------------------------------------------------------------------------------

$con = mysql_connect('localhost','thomas','thomas') or die('DB-Server nicht erreichbar');
$db  = mysql_select_db('thomass',$con) or die('Datenbank nicht erreichbar');

$error = 0;

$_grid = fetch_data_grid($error, $con, 'ADRESSE', '*', 'ID_ADRESSE');

if ($error !==0) echo "<p>Abfragefehler: ".mysql_error($con)."</p>\n";

echo "<pre>\n";
echo(htmlentities(print_r($_grid,true)));
echo "</pre>\n";

?>

Gleich als Testprogramm verpackt. Dum usst nur die relevanten Daten anpassen und kannst Dir angucken, was daraus wird bei Dir.

Nun kannst Du eine Funktion erstellen, die das Grid erstellt:

Ich denek noch einen Moment drüber nach und dann poste ich Dir das auch.

Du könntest ja inzwischen die fetch_data_grid() eigensicher machen. Da fehlen nämlich noch diverse Prüfungen.

Harzliche Grüße aus http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau