tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
11
ZUGRIFFE
1463
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Shooter2k
    Shooter2k Shooter2k ist offline Mitglied Brokat
    Registriert seit
    Mar 2002
    Ort
    Hamburg
    Beiträge
    381
    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
    Henry
     
    Wer mit dem Strom schwimmt, erreicht die Quelle nie.

  2. #2
    Sicaine Tutorials.de Gastzugang
    Du kannst doch mehrere updates schreibenbsp: test = '2', test2 = '423' etc. einfach mit , trennen
     

  3. #3
    Avatar von Shooter2k
    Shooter2k Shooter2k ist offline Mitglied Brokat
    Registriert seit
    Mar 2002
    Ort
    Hamburg
    Beiträge
    381
    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 :

    PHP-Code:

    $sql 
    "SELECT * FROM kauf WHERE auftrag = nummer";
    // iefert meinetwegen 3 ergebisse zu einer auftragsnummer 
    Ergebnis1 artNr , artPreis, artAnz
    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...


    DANKE
     
    Wer mit dem Strom schwimmt, erreicht die Quelle nie.

  4. #4
    Registriert seit
    Jan 2004
    Beiträge
    1.072
    Die Updates für jeden Artikel in einer Schleife abarbeiten.
     

  5. #5
    Avatar von Shooter2k
    Shooter2k Shooter2k ist offline Mitglied Brokat
    Registriert seit
    Mar 2002
    Ort
    Hamburg
    Beiträge
    381
    wie würde die schleife aussehen?

    DANKE !
     
    Wer mit dem Strom schwimmt, erreicht die Quelle nie.

  6. #6
    Lapsus Lapsus ist offline Mitglied Silber
    Registriert seit
    Sep 2004
    Beiträge
    72
    eigentlich ganz einfach

    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);


    oder so ähnlich, ist das Prinzip klar?
     

  7. #7
    Avatar von Shooter2k
    Shooter2k Shooter2k ist offline Mitglied Brokat
    Registriert seit
    Mar 2002
    Ort
    Hamburg
    Beiträge
    381
    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ütt
     
    Wer mit dem Strom schwimmt, erreicht die Quelle nie.

  8. #8
    Avatar von HammerHe@rt
    HammerHe@rt HammerHe@rt ist offline Mitglied Platin
    Registriert seit
    Mar 2001
    Ort
    Leipzig
    Beiträge
    528
    Code :
    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)
     

  9. #9
    Lapsus Lapsus ist offline Mitglied Silber
    Registriert seit
    Sep 2004
    Beiträge
    72
    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.
     

  10. #10
    Avatar von Shooter2k
    Shooter2k Shooter2k ist offline Mitglied Brokat
    Registriert seit
    Mar 2002
    Ort
    Hamburg
    Beiträge
    381
    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.

  11. #11
    Avatar von Shooter2k
    Shooter2k Shooter2k ist offline Mitglied Brokat
    Registriert seit
    Mar 2002
    Ort
    Hamburg
    Beiträge
    381
    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.

  12. #12
    Lapsus Lapsus ist offline Mitglied Silber
    Registriert seit
    Sep 2004
    Beiträge
    72
    Wenn du dir noch ein paar Zeilen Code sparen willst, kannst du folgendes machen:

    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);
        }
    }

    ?>
    btw. noch ein zwei Tipps.
    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

  1. zwei Tabellen gleichzeitig aktualisieren
    Von schutzgeist im Forum ASP
    Antworten: 3
    Letzter Beitrag: 07.08.10, 18:57
  2. Update: update Spalte gleichzeitig als WHERE Bedingung
    Von Steusi im Forum Relationale Datenbanksysteme
    Antworten: 10
    Letzter Beitrag: 30.06.09, 08:18
  3. Antworten: 2
    Letzter Beitrag: 16.07.07, 18:47
  4. Update in 2 Tabellen gleichzeitig
    Von lifehunter im Forum PHP
    Antworten: 2
    Letzter Beitrag: 09.07.05, 13:52
  5. 2 Textfelder gleichzeitig scrollen
    Von lugoR im Forum Flash Plattform
    Antworten: 2
    Letzter Beitrag: 30.10.03, 16:10