sabio23
Goto Top

Speichern in MYSQL mit PHP Variablen

Ich hab eine dynamische Anzahl Post-Parameter. Diese hole ich mir so:

$count=1;
$zahl=$_GET["zahl"];  
while ($count!=$zahl)
{
${"name".$count} = $_POST["name$count"];  
$count++;
}

Das klappt auch wunderbar. Jetzt will ich das aber alles in die SQL Bank speichern.
Dafür brauch ich in etwa auch wieder eine Schleife, da die Anzahl ja dynamisch ist.

das hatte ich so vorgehabt:

$count=1;
$zahl=$_GET["zahl"];  
$sqlsave="INSERT INTO markprogramdata2 (name$count) VALUE ('${"name".$count}')";  
mysql_query($sqlsave) or die (mysql_error());
$count++;

Das würde auch klappen. Aber da er ja den ganzen Befehl wiederholt, benutzt er in der SQL Bank immer wieder eine neue Spalte und ich bekomme wieder immer eine neue ID.
Ich bräuchte es so, das er nur das "(name$count)" und "('${"name".$count}')" wiederholt, und nur einmal dann in die Bank schreibt, also den ganzen Befehl nur einmal benutzt.

Hat jemmand eine Idee, wie ich das hinbekomme?

Danke für jede Hilfe

Content-Key: 93157

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

Printed on: April 26, 2024 at 13:04 o'clock

Member: SnowStar
SnowStar Jul 29, 2008 at 13:28:47 (UTC)
Goto Top
Verstehe ich das richtig, dass du dir die anzahl der POST Variablen per $_GET['zahl'] übergeben lässt?
Vorschlag zur Güte: $_POST['name']['zahl'] - weil dann: count($_POST['name']);

Was genau wird übergeben und was soll in die DB?
Member: sabio23
sabio23 Jul 29, 2008 at 13:57:59 (UTC)
Goto Top
Verstehe ich das richtig, dass du dir die anzahl der POST Variablen per $_GET['zahl'] übergeben lässt?

Ja genau


Vorschlag zur Güte: $_POST['name']['zahl'] - weil dann: count($_POST['name']);

das hab ich leider nicht so ganz verstanden.


Was genau wird übergeben und was soll in die DB?

Es werden name1-name35 übergeben. Und der Benutzer hat vorher ausgesucht wie viel Namen er übergeben will, deshalb muss ich die Anzahl ($_GET['zahl']) mit übergeben.
Und alle Namen die übergeben worden sind, sollen in die DB. In der DB sind ebenfalls die Spalten name1-name35
Und mit irgendeiner Schleife will ich es so hinbekommen, das er in einem Befehl nur so viele namen in die DB schreibt wie der Benutze es vorher wollte also $_GET['zahl'].
Es muss halt ein einziger SQL befehl sein.
Member: SnowStar
SnowStar Jul 29, 2008 at 14:31:55 (UTC)
Goto Top
Beispiel für's "zählbare" POSTEN:

<!-- eingabe.html -->

<form action="action.php" method="post">  
  <p>Name 1:<br><input name="name" type="text" size="30" maxlength="30"></p>  
  <p>Name 2:<br><input name="name" type="text" size="30" maxlength="30"></p>  
  <input type="submit" value="ok">  
</form>

// action.php
<?
echo count($_POST['name']);  
echo '<br />';  
print_r($_POST['name']);  
?>

Hilft das weiter? Wenn nicht, dann bitte das Formular posten face-wink
Member: sabio23
sabio23 Jul 29, 2008 at 14:37:20 (UTC)
Goto Top
Ja in einzelne Variablen hab ich das ganze ja eig. schon.
Es geht ja momentan eig. nur noch um die SQL. Wie ich das ganze jetzt noch in die DB bekomme, so wie ich es oben beschrieben habe.
Member: SnowStar
SnowStar Jul 29, 2008 at 15:04:26 (UTC)
Goto Top
In der DB soll die Anzahl der Namen stehen ...
Die hättest du mit
count($_POST['name']);   

Deswegen sagte ich ja, bevor ich mir alles zusammenreime, poste mal dein Formular aus dem die Daten kommen face-wink

Noch ein Versuch ... Moment ...

for ($i = 0; $i < count($_POST['name']); $i++){  
// füge in Zeile xyz in die Spalte name.$i den wert $_POST['name'][$i] ein 
}

for ($i = 0; $i < $_GET['zahl']; $i++){  
// füge in Zeile xyz in die Spalte name.$i den wert $_POST['name'.$i] ein 
}

Oder soooo >.< ohne deinen Quelltext kann es sich nur um Tage Handeln, bis du eine Lösung bekommst face-smile
Und am besten gleich die Tabellenstruktur dazu ...
Member: sabio23
sabio23 Jul 29, 2008 at 15:55:38 (UTC)
Goto Top
Nein Nein
Ich hab in DB folgende spalten
namo1-name35
also
name1
name2
name3
name4
...
..
.

Und übe POST bekomme ich vom Benutzer die gleichen Variablen.
name1-name35
Die Anzahl interessiert mich nur für die While schleife. Was soll ich denn mit der Zahl in der DB.

Ich will einfach nur die ganzen POST Daten die ich vom Benutzer bekomme ich der DB haben.

Ich weis nicht wie ichs noch sagen soll


so sieht das aus:

echo "<form action=\"index.php?page=admin&section=newlistthird&zahl=$zahl\" method=\"post\">";  
echo "<center><table border=\"0\">";  
while ($count!=$schueler)
{
echo "<tr><td>";  
echo "Schueler ";  
echo $count;
echo ": ";  
echo "</td><td>";  
echo "<input type=\"text\" size=\"17\" name=\"name$count\">";  
echo "&nbsp&nbsp&nbsp&nbsp";  
echo "<input type=\"text\" size=\"17\" name=\"note$count\">";  
echo "</td></tr>";  
$count++;
}
echo "</table></center>";  
echo "<br><br><center><input type=\"submit\" value=\"Speichern\"></center></form>";  

$schueler ist die Anzahl der Reihen die der Bneutzer vorher gesagt hat wie viel er will.
(es geht alles dynamisch)

Das heist wenn der Benutzer vorher gesagt hat ich will 17 Reihen "name" und "note"
Dann ist $schueler 17

Und wenn er dann auf Speicher geklickt hat, will ich im Prinzip EINFACH nur die 17 "name" und 17 "note" in der DB haben.

In der DB sind name1-name35 und note1-note35 im Fall der Benutzer beispielsweise 20 oder eine andere Anzahl von Reihen auswählt.

In dem Fall sollen eben 20 "name" und 20 "note" in der DB gespeichert werden.
Member: SnowStar
SnowStar Jul 29, 2008 at 18:58:14 (UTC)
Goto Top
aaaah okay. so langsam blicke ich das ...

1. Abfrage: Wieviele Schüler anlegen?
2. Abfrage: Jeweils Name und Note für die angelegten Schüler
3. Übertrag der Eingaben in eine Tabelle

Es soll also eine Tabelle in der Schülernamen und Noten gespeichert werden sollen.

Sind die Namen jeweils einmalig oder kann die Note eines Schülers zum Beispiel geändert werden, sprich, wenn ein Name, der bereits existiert eingegeben wird, dann wird die Note "überschrieben" ?