tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von TheBodo
ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
243
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Eurocid Eurocid ist offline Mitglied Bronze
    Registriert seit
    Aug 2011
    Ort
    Austria
    Beiträge
    40
    Hallo malwieder

    Folgende Frage?

    Ich habe einen Datenbank-Ausgabe mit einer While-Schleife. (Eine Art-DoTo-Liste)

    Sieht so aus:
    • Aufgabe 1
      • ToDo
      • ToDo
      • ToDo
    • Aufgabe 2
      • ToDo
      • ToDo
      • ToDo


    Hier werden die einzelnen Aufträge aus einer Datenbank gezogen, mit einer Schleife.
    Und in jeder Ausgabe wird nochmal die DoTo-Liste über eine Schleife gezogen.

    Soweit so gut, das hab ich ja schon alles, jetzt zu meiner Frage

    Ich habe unter jeder ToDo-Liste einen HINZUFÜGEN BUTTON mit einem kleinen Eingabefeld eingefügt, und würde gerne, wenn ich auf hinzufügen drücke, haben das mir der eintrag direkt gemacht wird. Leider funktioniert das nur beim untersten Auftrag, was ja auch klar ist da das Script nach unten abgearbeitet wird und mir der letzte eintrag nur behalten wird.

    Die Frage ist jetzt wie schreibe ich das Formular, so das mein HINZUFÜGEN BUTTON weis von wo der Eintrag kommt?
    Schon klar ich gebe die ID mit, aber dadurch das es ja eine Schleife ist überschreibt er mir die Variablen solange bis ich beim letzten Auftrag bin. Die Lösung ist sicher mit Arrays verbunden leider hab ich keine Idee wie ich das angehen kann.

    Kann mir da jemand einen Denkanstoss geben.

    Mfg
    Cid
     

  2. #2
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Du hast mehrere Möglichkeiten:

    - Du baust pro Aufgabe ein Eingabefeld (unter den letzten Punkt unten drunter) und benennst ihn nach der Aufgaben-ID
    - Du baust nur ein Eingabefeld unter alle Aufgaben, baust einen onclick-Event auf das UL, was deine Aufgabe repräsentiert; im onclick wird das Aufgaben-Feld entsprechend umbenannt oder ein hidden-Field mit einem Wert versorgt => Nachteil: JavaScript wird benötigt.
    - Du baust mehrere Submit-Buttons, pro Aufgabe einen Button und wertest diese im PHP-Script aus.

    Was ist dir lieber?
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  3. #3
    Avatar von Akeshihiro
    Akeshihiro Akeshihiro ist offline Mitglied Platin
    Registriert seit
    Aug 2008
    Ort
    Kirchlengern (NRW)
    Beiträge
    647
    Wenn man auf Hinzufügen klickt, dann taucht also ein Eingabefeld auf oder was. Füg da einfach noch eine ComboBox hinzu, die die Aufgaben darstellt, damit man sich die richtige Aufgabe auswählen kann. Und wenn man dann auf OK klickt (oder wie auch immer das bei dir ist), dann sollte das eigentlich an die richtige Stelle eingefügt werden.
     
    Man sagt, das Schwert eines Samurai sei seine Seele ...

    Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.

    Das Schmieden ist eine Kunst; Das Schreiben auch ;)

  4. #4
    Eurocid Eurocid ist offline Mitglied Bronze
    Registriert seit
    Aug 2011
    Ort
    Austria
    Beiträge
    40
    Hallo und danke für die schnellen Antworten.

    @Saftmeister:

    Option 3 hab ich gemacht, aber wie kann ich das jetzt PHP auswerten, bzw. wie baue ich die Submit Buttons richtig auf, sodass die PHP auswertung auch weis was von wo kommt?

    @ Akeshihiro:

    Die Textbox ist immer sichtbar, man kann einen kleinen ToDo reinschreiben und auf OK drücken, fürs einfügen. Nach dem OK, soll sich die Seite neu aufbaun und natürlich der DoTo beim richtigen Auftrag erscheinen.

    Mfg
    Cid
     

  5. #5
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Z.B. So:

    Die Value des Submit-Buttons ist dann der Titel der Aufgabe
    Code html:
    1
    2
    3
    4
    5
    
    <form action.... method="post">
    <input type="text" name="aufgabenschritt"/>
    <input type="submit" name="submit" value="Aufgabe 1"/>
    <input type="submit" name="submit" value="Aufgabe 2"/>
    </form>

    Im PHP-Script dann:

    Code php:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    // Daten aus dem POST-Form holen
    $aufgabenTitel = $_POST['submit'];
    $aufgabenSchrittNeu = $_POST['neuer_aufgabenschritt'];
     
    // TODO: Validieren und Filtern (Sanitizing)
     
    $sql = sprintf("SELECT id FROM aufgaben WHERE titel = '%s'", mysql_real_escape_string($aufgabenTitel);
    // ID mittels mysql_query und mysql_fetch_row/array/assoc/object abholen
     
    // Nun neuen Aufgabenschritt einfügen
    $insert = sprintf("INSERT INTO aufgaben_schritte (aufgaben_id, aufgabenschritt) VALUES (%d, '%s')", 
      $aufgabenId, /* aus dem SELECT oben */
      mysql_real_escape_string($aufgabenSchrittNeu)
    );
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  6. #6
    Eurocid Eurocid ist offline Mitglied Bronze
    Registriert seit
    Aug 2011
    Ort
    Austria
    Beiträge
    40
    Hallo nochmal

    Ich habe folgendes Formular, immer eingebunden:
    (Ist jetzt nicht original, hab das nur schnell runtergetippselt)

    <input type="hidden" name="id" value="$id"> Hier wird die Auftrags ID gesendet
    <input type="text" name="new_todo" value=""> Das eingabe Feld
    <input type="submit" name="new" value="OK"> Der Button

    Beim Button value="" möchte ich Ok, oder soetwas stehen haben, und nicht irgendeine Fortlaufende Zahl, deshalb kann ich deinen Vorschlag leider nicht umsetzten.

    Weist du vielleicht eine Lösung, die ich hier einbauen kann?

    Mfg
    Cid
     

  7. #7
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Du könntest Radio-Buttons einbinden:

    Code php:
    1
    2
    3
    4
    5
    6
    7
    
    while($row = mysql_fetch_array($result)) {
    $id = $row['id'];
    $auftrag = $row['auftrag'];
    ?>
    <input type="radio" name="auftrag_id" value="<?php echo $id;?>"/> <?php echo $auftrag;?><br/>
    <?php
    }

    Dann kannst du im PHP-Script, was die Formular-Daten entgegennimmt, einfach $_POST['auftrag_id'] auswerten.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  8. #8
    Avatar von TheBodo
    TheBodo TheBodo ist offline Mitglied Gold
    Registriert seit
    Sep 2007
    Ort
    Braunschweig
    Beiträge
    157
    Moin,

    du könntest auch dein Feld "new_todo" einfach als Array anlegen.

    Hier ein Beispiel:

    Listenausgabe:
    PHP-Code:
    echo "<ul>";
    while(
    $auftrag mysql_fetch_assoc()) {
      echo 
    "<li>".$auftrag["text"]."</li>";
      echo 
    "<ul>";

      
    $todo_result mysql_query([...]); //hier deine Abfrage rein für jeweilige $auftrag["id"];
      
      
    while($todo mysql_fetch_assoc($todo_result)) {
        echo 
    "<li>".$todo["text"]."</li>";
      }

      echo 
    "<li>"
      
    echo "<input type=\"text\" name=\"newtodo[".$auftrag["id"]."]\" value="" />";
      echo 
    "<input type=\"submit\" name=\"send\" value=\"ToDo hinzufügen\" />";
      echo 
    "<li></ul>";
    }
    echo 
    "</ul>"
    Und die Verarbeitung:
    PHP-Code:
    foreach($POST["newtodo"] as $key => $value) {
      
    //hier deine Verarbeitung
      //$key ist deine Auftrags-ID
      //$value dein neues Todo

    Have fun
    Eurocid bedankt sich. 

  9. #9
    Eurocid Eurocid ist offline Mitglied Bronze
    Registriert seit
    Aug 2011
    Ort
    Austria
    Beiträge
    40
    Hallo wiedermal

    @ TheBodo:

    Danke für deinen Beitrag, genau an das hab ich gedacht, des wegen auch der Themenname
    Leider bin ich mit Arrays zu schwach drauf. Deshalb bin ich nicht selbst gleich drauf gekommen.

    Auf jedenfall hab ich das jetzt so gelöst und es funktioniert, sieht zwar ein wenig kompliziert aus aber was solls.

    PHP-Code:

    if(isset($_POST["new_todo"]))
        {
        foreach(
    $_POST["new_todo"] as $key => $value)
        {
            if(
    $value != "")
            {
                
    $sql "INSERT INTO project_todo (  project_id,
                                                    todo,
                                                    status)
                                        VALUES (    '
    $key',
                                                    '
    $value',
                                                    '1')"
    ;
                
    $result mysql_query($sql) or die (mysql_error());
            }
        }

    Wenn jemand einen Vorschlag hat wie es leichter geht, ich bin gerne für alles offen.

    Mfg
    Cid
     

Ähnliche Themen

  1. Kontensalden für jeden einzelnen Kalendertag auswerten (Schleife)
    Von fruchtschorle im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 20.02.09, 09:07
  2. Antworten: 4
    Letzter Beitrag: 23.03.08, 02:41
  3. Array mittels Schleife belegen
    Von Bunny1502 im Forum Flash Plattform
    Antworten: 4
    Letzter Beitrag: 12.09.06, 17:05
  4. Formular auswerten
    Von mgoertz im Forum PHP
    Antworten: 29
    Letzter Beitrag: 18.05.05, 09:46
  5. Formular auswerten - wie?
    Von sunshineworld im Forum PHP
    Antworten: 5
    Letzter Beitrag: 15.11.02, 15:07