Input als Schleife in MySQL-Datenbank

gulo92

Mitglied
Hallo,

ich möchte eine Tabelle mit 5 Spalten und 3 Zeilen mit Input-Feldern belegen, in welche Daten eingetragen werden können um dann in einer Datenbank abgespeichert zu werden.

Nun kann es sein, dass nur zwei der 3 Zeilen mit Inhalten gefüllt sind. Das ist auch schon das Problem, denn ich möchte nicht, dass dann ein neuer Datensatz ohne Inhalte in der Datenbank gespeichert wird. Es müsste also irgendwie gecheckt werden. Nun weiß ich dass man das mit ner while-Schleife machen könnte, aber ich bin auch auf die foreach() Funktion gestoßen, mit welcher das vielleicht besser zu machen wäre.
Habt Ihr nen Ansatz?

Hier mal die Tabelle:

PHP:
 <table style="width: 100%">
		<tr>
			<td>Feld 1<input type="text" name="1" ></td>
			<td>Feld 2<input type="text" name="2" ></td>
			<td>Feld 3<input type="text" name="3" ></td>
			<td>Feld 4<input type="text" name="4" ></td>
			<td>Feld 5<input type="text" name="5" ></td>
		</tr>
		<tr>
			<td>Feld 6<input type="text" name="6" ></td>
			<td>Feld 7<input type="text" name="7" ></td>
			<td>Feld 8<input type="text" name="8" ></td>
			<td>Feld 9<input type="text" name="9" ></td>
			<td>Feld 10<input type="text" name="10" ></td>
		</tr>
		<tr>
			<td>Feld 11<input type="text" name="11"></td>
			<td>Feld 12<input type="text" name="12"></td>
			<td>Feld 13<input type="text" name="13"></td>
			<td>Feld 14<input type="text" name="14"></td>
			<td>Feld 15<input type="text" name="15"></td>
		</tr>
	</table>
 
Evtl. so:

PHP:
$input_ok = true;
$max_input_field_index = 15;
for($i = 1; $i <= $max_input_field_index; $i++)
{
  if(!isset($_POST[$i]))  // Wenn das Formular mittels GET übertragen wird, muss hier angepasst werden
  {
    echo "Das Feld $i hat keinen Wert!<br/>";
    // Sobald der erste Fehler auftritt, abbrechen
    $input_ok = false;
    break;
  }
}

if($input_ok)
{
  // Hier in die Datenbank eintragen oder sonst wie verarbeiten...
}
 
Danke, das ist prinzipiell ganz cool aber ich meine das so, dass es auch sein kann, dass von der zweiten Zeile die erste Spalte leer ist und dann Spalte zwei bis fünf gefüllt werden müssen. Es müsste also irgendwie gecheckt werden, ob überhaupt eine der Spalten einer Zeile belegt ist ... weißte?
 
Ja, und dann ist auch ein "leerer Inhalt" okay. Also wenn in einer Zeile mindestens eine Spalte einen Wert hat und die 4 anderen dann "leer" sind, dann ist das vollkommen okay. Wenn allerdings die erste Zeile kommt in der gar kein Inhalt in keiner der Spalten ist, dann soll aufgehört werden, Werte in die DB einzutragen.
 
PHP:
$input_ok = true;
$anzahl_zeilen = 3;
$anzahl_spalten = 5;
for($i = 1; $i <= $anzahl_zeilen; $i++)
{
  $zeile_ok = false;
  for($j = 1; $j <= $anzahl_spalten; $j++)
  {
    if(isset($_POST[$i*$j]))
    {
      // Mindestens ein Wert pro Zeile gefunden, nun ist diese Zeile ok!
      $zeile_ok = true;
      break;
    }
  }
  if(!$zeile_ok)
  {
    $input_ok = false;
    break;
  }
}

if($input_ok)
{
  // Hier Datenbankeintrag machen oder so ähnlich...
}
 
Also das ist der PHP Code für die Datei, die aufgerufen wird um die Daten zu verarbeiten. Also wenn ich per POST die Variablen übergebe, kann ich das einfach so übernehmen?

und dann dort wo dein Verweis ist einbinden

PHP:
$eintragen = mysql_query("INSERT INTO output
  (a,b,c,d,e) VALUES
 ('$1', '$2', '$3', '$4', '$5')");
  ?>

und vorher noch aus den Post Daten Variablen machen, oder nicht?
 
So ungefähr ja. Du müsstest halt noch mal eine Schleife bauen, dort wo ich den Kommentar zum Speichern hinterlegt habe. Versuch erst mal, das selbst hinzubekommen. Wenn du noch Probleme hast, frag nach... :)
 
hm ich bastel grad ... woher weiß ich, bei welchem Wert er gerade ist, also welchen Wert er gerade eintragen würde bei deinem Kommentar? Speicher er die Werte je Zeile als Array? also [1,2,3,4,5]? Falls 1,2,3,4,5 die Werte sind, die in der ersten Zeile eingegeben wurden?
 
Zurück