ERLEDIGT
JA
JA
ANTWORTEN
11
11
ZUGRIFFE
1463
1463
EMPFEHLEN
-
Hallo,
ich habe folgendes Problem und zwar lese ich bestimmte werte aus einer MySQL Tabelle uas. Diese Werte gebe ich untereinander in Textfelder aus.
Bei 1x Textfeld ist es kein Problem aber bei mehreren.
Ein kleines Beispiel zum besseren Verstehen:
Tabelle Kauf;
Felder : artNr, artAnz, artPreis, auftrag
sql = SELECT * FROM kauf WHERE auftrag = '123456'
ausgabe :
ergebnis 1 : artAnz, artPreis
ergebnis 2 : artAnz, artPreis
Beim update der Textfelder weis ich nun nicht weiter da es ja mehr als 1 ist.
Sonst habe ich es immer so gemacht:
sql = UPDATE kauf Set artAnz = '".$_GET['artAnz']."' WHERE auftrag = $auftrag....
Aber es geht ja nicht bei mehren .. ich muss ja dann auch unterschiedliche Textfeldnamen verwenden .. vieleicht als Feldnamen die artNr? oder als Array?
Kann mir jemand helfen?
DANKE
mit freundlichen Grüßen
HenryWer mit dem Strom schwimmt, erreicht die Quelle nie.
-
17.11.04 14:11 #2Sicaine Tutorials.de Gastzugang
Du kannst doch mehrere updates schreibenbsp: test = '2', test2 = '423' etc. einfach mit , trennen
-
DANKE für deine Antwort..
klar kann ich mehrere Updates hintereinander schreiben aber nur wenn es unterschiedliche Textfeldnamen sind aber der Update befehl müsste sich ja dann dynamisch erweitern , je nach dem wieviel Artikel der Kunde gekauft hat.
Deswegen meine ich ja :
Ergebnis1 artNr , artPreis, artAnzPHP-Code:
$sql = "SELECT * FROM kauf WHERE auftrag = nummer";
// iefert meinetwegen 3 ergebisse zu einer auftragsnummer
Ergebnis2 artNr , artPreis, artAnz
Ergebnis3 artNr , artPreis, artAnz
Wenn ich die werte in Ergebnis 2 und 3 änder , dann soll er sie updaten und zu dem dazugehörigen auftrag schreiben bzw updaten...
DANKEWer mit dem Strom schwimmt, erreicht die Quelle nie.
-
17.11.04 14:51 #4
- Registriert seit
- Jan 2004
- Beiträge
- 1.072
Die Updates für jeden Artikel in einer Schleife abarbeiten.
-
wie würde die schleife aussehen?
DANKE !Wer mit dem Strom schwimmt, erreicht die Quelle nie.
-
eigentlich ganz einfach

oder so ähnlich, ist das Prinzip klar?PHP-Code:<input type="text" name="wert[]"><br>
<input type="text" name="wert[]"><br>
.
.
.
//So kannst du erstmal beliebig viele Textfelder ausgeben
//die bekommst du dann als Array zurück.
for ($i = 0; $i < count($_POST['wert']); $i++){
$SQL = sprintf('UPDATE TABELLE SET feld='%s' where id='%s',$_POST['wert'][$i], $i);
}
-
Danke für deine schnelle Antwort ..
Die schleife habe ich verstanden aber was
soll in den Textfeldern stehen ? <input type="text" name="wert[]">?
wer[] habe ich nicht ganz verstanden.
Mit freundlichen Grüßen
Henry SchüttWer mit dem Strom schwimmt, erreicht die Quelle nie.
-
19.11.04 12:20 #8Code :
1 2 3 4 5 6
$res=mysql_query("select a, b, c from tabelle where x='y' "); while($r=mysql_fetch_array($res)) { echo $r[a]; echo $r[b]; echo $r[c]; }
nur eine abfrage...
wenn datensätze vorhanden dann in schleife ausgegeben...mittels $r[spalte]
mfG
Hammerhe@rt
achherjey wieder nur halb gelesen und nu keine zeit mehr...sorry
Geändert von HammerHe@rt (19.11.04 um 12:25 Uhr)
-
Du willst ja mehrere Werte in einem Feld zurückgeben, das immer gleich heisst.
<input type="text" name="wert[]" value="hallo"><br>
<input type="text" name="wert[]" value="ich bin"><br>
<input type="text" name="wert[]" value="ein array"><br>
liefert dir
$wert[0] = 'hallo';
$wert[1] = 'ich bin';
$wert[2] = 'ein array';
Ansonsten kannst du auch mit
<input type="wert1">
<input type="wert2">... arbeiten ist aber im Vergleich zur Array Variante unkomfortabel, da du hier nur umständlich ermitteln kannst, wie vielei Elemente überhaupt gesendet wurde, bzw. welche dieser Felder dann befüllt waren etc.
-
danke dir nur scheint was mit der schleife nicht zu funktionieren vieleicht nur ein syntax fehler den ich übersehen habe?
PHP-Code:
<form name="form1" method="post" action="<? php_self ?>">
<?
include("../verbindung.php");
$sql = "SELECT * FROM xxx WHERE id = 1";
$todo = mysql_query($sql);
while($daten = mysql_fetch_array($todo)) {
$inhalt = $daten[test];
$id = $daten[id];
?>
<input type="text" name="wert[]" value="<? echo $inhalt;?>">
<?
}
?>
<input type="submit" name="Submit" value="Senden">
<?
if($_POST['submit']) {
include("../verbindung.php");
//So kannst du erstmal beliebig viele Textfelder ausgeben
//die bekommst du dann als Array zurück.
for ($i = 0; $i < count($_POST['wert']); $i++){
$SQL = sprintf('UPDATE xxx SET test='%s' where id='%s',$_POST['wert'][$i], $i');
}
}
?>
</form>Wer mit dem Strom schwimmt, erreicht die Quelle nie.
-
OK es geht
danke an alle ich poste mal die funktionierende lösung ohne synataxfehler:
PHP-Code:
<form action="<? php_self?>" method="post" name="fo9rm1">
<?
include("../verbindung.php");
$sql = "SELECT * FROM xxx WHERE id=1";
$todo = mysql_query($sql);
while($daten = mysql_fetch_array($todo)) {
$inhalt = $daten[test];
$id = $daten[id];
$id2 = $daten[id2];
?>
<input name="wert[]" type="text" value="<? echo $inhalt;?>"><br>
<input name="id2[]" type="hidden" value="<? echo $id2;?>"><br>
<?
}
?>
<input name="submit" type="submit" value="Senden">
</form>
<?
$submit = $_POST['submit'];
if($submit) {
include("../verbindung.php");
for ($i = 0; $i < count($_POST['wert']); $i++){
$wert = $_POST['wert'];
$id2 = $_POST['id2'];
# echo $wert[$i]."<br>";
$sql = "UPDATE xxx Set test = '".$wert[$i]."' WHERE id2 = '".$id2[$i]."' AND id = $id";
$todo = mysql_query($sql);
}
}
?>Wer mit dem Strom schwimmt, erreicht die Quelle nie.
-
Wenn du dir noch ein paar Zeilen Code sparen willst, kannst du folgendes machen:
btw. noch ein zwei Tipps.PHP-Code:<form action="<? php_self?>" method="post" name="fo9rm1">
<?
include("../verbindung.php");
$sql = "SELECT * FROM xxx WHERE id=1";
$todo = mysql_query($sql);
while($daten = mysql_fetch_array($todo)) {
$id = $daten[id];
?>
<input name="wert[<?= $daten['id2'] ?>]" type="text" value="<?=$daten['test'];?>"><br>
<?
}
?>
<input name="submit" type="submit" value="Senden">
</form>
<?
if($_POST['submit']) {
include("../verbindung.php");
foreach ($_POST['wert'] as $id => $value){
$sql = "UPDATE xxx Set test = '".$value."' WHERE id2 = '".$id."' AND id = $id";
$todo = mysql_query($sql);
}
}
?>
nie include verwenden. Besser include_once
warum $foo = $_POST['foo']; und eine Zeile später if($foo ==....) das kostet nur Speicher
nie $array[index], besser $array['index'] verwenden. Sonst such PHP jedesmal eine Konstante bevor es auf die Faulheit des Programmierers schliesst und das als String für den Index verwendet.
Ähnliche Themen
-
zwei Tabellen gleichzeitig aktualisieren
Von schutzgeist im Forum ASPAntworten: 3Letzter Beitrag: 07.08.10, 18:57 -
Update: update Spalte gleichzeitig als WHERE Bedingung
Von Steusi im Forum Relationale DatenbanksystemeAntworten: 10Letzter Beitrag: 30.06.09, 08:18 -
Mehrere Zeilen und Spalten gleichzeitig aktualisieren
Von jack007 im Forum PHPAntworten: 2Letzter Beitrag: 16.07.07, 18:47 -
Update in 2 Tabellen gleichzeitig
Von lifehunter im Forum PHPAntworten: 2Letzter Beitrag: 09.07.05, 13:52 -
2 Textfelder gleichzeitig scrollen
Von lugoR im Forum Flash PlattformAntworten: 2Letzter Beitrag: 30.10.03, 16:10





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren