Ankündigung

Einklappen
Keine Ankündigung bisher.

Abfrage von Werten aus PHP mit JS

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Abfrage von Werten aus PHP mit JS

    Sehr geehrtes Forum,
    ich bin derzeit an einem Problem hängen geblieben. Ich habe mit PHP eine Datenbank auslesen lassen und anzeigen lassen. Die ausgelesenen Werte werden hierbei in einer Tabelle innerhalb eines Form dargestellt.
    Jetzt habe ich die Ausgabe in input Felder gelegt, da man die Werte ändern soll und durch einen Button am Ende der Zeile wieder Speichern soll.


    Dieser Teil funktioniert mit PHP ohne Probleme. Auch das Abspeichern geht soweit.
    Jetzt habe ich das Problem, das jeder Button das Script ausführt. Aber nur für den ersten Eintrag, also die Daten immer wieder nur aus der ersten Zeile abruft und sie weitergibt um sie zu speichern.
    Somit kann ich wenn ich andere Daten in die zweite Zeile eingebe diese nicht speichern.

    HTML-Code:
    <form action="" method="post" id="<?php echo $id; ?>">    
                <td><?php echo $id; ?></td>
                <td><?php echo $klasse; ?></td>
                <td><?php if($geschlecht == "m"){ echo '<i class="fa fa-mars" aria-hidden="true"></i>'; }else{ echo '<i class="fa fa-venus" aria-hidden="true"></i>'; } ?></td>
                <td><?php echo $vorname; ?></td>
                <td><?php echo $nachname; ?></td>
    
                <td><input type="text" name="ausdauerlaufm" id="ausdauerlaufm" value="<?php echo $ausdauerlaufm; ?>"></td>
                <td><input type="text" name="ausdauerlaufs" id="ausdauerlaufs" value="<?php echo $ausdauerlaufs; ?>"></td>
    
                <td><?php echo '<input type="hidden" name="id" id="id" value="'.$id.'">'; ?>
                <button type="button" id="button" value="<?php echo $id; ?>" onclick="register()">Save</button> </td>
    
            </form>
    So lasse ich die einzelnen Reihen anzeigen

    Code:
                <script>
        function register(){
    
    var id = document.getElementById("id").value;
    var ausdauerlaufm = document.getElementById("ausdauerlaufm").value;
    var ausdauerlaufs = document.getElementById("ausdauerlaufs").value;
    
    var dataString = 'ausdauerlaufm=' + ausdauerlaufm + '&ausdauerlaufs=' + ausdauerlaufs;
    
    $.ajax({
    type: "post",
    url: "mods/update.php",
    data: dataString,
    cache: false,
    success: function(result) {
        alert(result);
    
    }
    });
    Materialize.toast(wert, 4000);
    return false;    
            }
    
    </script>
    Und dies ist mein Script mit dem ich die Werte abrufen lasse was auch gut funktioniert. Dieser Übergibt sie dann an die update.php Datei um sie zu speichern.
    Würde mich über eine Antwort freuen.

    Mit freundlichen Grüßen

  • #2
    Du erhältst mit document.getElementById() auch nur das erste Element, mit der gesuchten ID.
    Stell auf document.querySelector() um, dann kannst Du über die ID des Button in der entsprechenden Form nach den Elementen suchen:

    Beispiel (ungetestet)
    Code:
    var _id = this.getAttribute('id');
    _sInputContent_M = document.querySelector( 'form#' + _id + ' input#ausdauerlaufm' ).value;
    _sInputContent_S = document.querySelector( 'form#' + _id + ' input#ausdauerlaufs' ).value;
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      Vielen Dank erstmal für die erste Lösung. Hat super funktioniert.
      Die erste Selection funkitoniert nicht habe auch schon im Internet weitergeschaut wie ich das Lösen könnte, doch leider nichts wirklich gefunden.

      'form#' + _id

      Nur input#id oder input#ausdauerlaufm da funktionieren alle super

      Kommentar


      • #4
        Am Besten PHP und HTML trennen. Das erhöht die Übersicht und macht es einfacher mal was zu ändern.
        bitcoin.de <- Meine Freelancerwährung

        Kommentar


        • #5
          Hat er doch getrennt, sieht man hier
          PHP-Code:
            <form action="" method="post" id="<?php echo $id?>">
          Ich würde das aber so schreiben, statt echo
          PHP-Code:
            <form action="" method="post" id="<?= $id ?>">

          5.4.0 The tag <?= is always available regardless of the short_open_tag ini setting.
          N.B.
          Das action Attribut kann man sich bei html5 sparen, wenn es wieder auf die gleiche Seite geht.

          Kommentar


          • #6
            Also das war garnicht mal mein Problem
            sondern er erkennt den selector nicht an.

            (INPUT) is a invalid Selector

            Und auch nur das form#1 macht Probleme wenn ich nur input#id setze funktioniert alles.
            Freue mich auf jede Antwort
            Mit freundlichen Grüßen

            Kommentar


            • #7
              Dann zeige uns den erzeugten HTML Quellcode und Dein aktuelles JS, mit den Bildern kann man nichts anfangen.

              Kommentar


              • #8
                input#id sieht für mich falsch aus, aber kaminbausatz hat schon recht, Du solltest den aktuellen Code Stand mal zeigen, damit wir das beurteilen können. HTML sowie JS sind dazu wichtig!
                Competence-Center -> Enjoy the Informatrix
                PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                Kommentar


                • #9
                  Ist immer noch der selbe ;D

                  HTML-Code:
                  <form method="post" id="<?= $id ?>">
                  <td><?php echo $id; ?></td>            
                  <td><?php echo $klasse; ?></td>            
                  <td><?php if($geschlecht == "m"){ echo '<i class="fa fa-mars" aria-hidden="true"></i>'; }else{ echo '<i class="fa fa-venus" aria-hidden="true"></i>'; } ?></td>            
                  <td><?php echo $vorname; ?></td>            
                  <td><?php echo $nachname; ?></td>            
                  <td><input type="text" name="ausdauerlaufm" id="ausdauerlaufm" value="<?php echo $ausdauerlaufm; ?>"></td>            
                  <td><input type="text" name="ausdauerlaufs" id="ausdauerlaufs" value="<?php echo $ausdauerlaufs; ?>"></td>
                  <td><input type="hidden" name="id" id="id" value="<?php echo $id; ?>"></td>          
                  <button type="button" id="<?php echo $id; ?>" onclick="register(this)">Save</button> </td>
                  </form>
                  Das ist die Tabelle

                  Und hier ist das JS Script.
                  Bei dem die ID vom Button richtig übergeben wird jedoch kann js dann nichts mit der Selection anfangen.

                  Code:
                      <script>
                  function register(clicked_object){
                  
                  
                  var _id = clicked_object.getAttribute('id');
                  var id = document.querySelector( 'form#' + _id + ' input#id' ).value;
                  
                  Materialize.toast(id, 4000);
                  return false;    
                          }
                  
                  </script>


                  Dazu muss ich sagen das die <form> auch die richtige ID zugewiesen bekommen und der Aufruf durch JS mit den _id auch funktioniert.
                  Bloß kann JS dann nichts mit dem Befehl anfangen.

                  Kommentar


                  • #10
                    Eine ID sollte (muss) einmalig sein, du kannst nicht der Form dieselbe id geben wie dem Button.

                    Kommentar


                    • #11
                      Das ist nicht das Problem. Ich habe ja eine Tabelle welche generiert wird. Duch PHP und in dieser will ich bestimmte Zeilen auslesen lassen.
                      So das ich wenn ich den Button am Ende einer Zeile drücke die jeweils dazugehörogen Werte in der Zeile bekomme.

                      Kommentar


                      • #12
                        Zitat von masterElmar Beitrag anzeigen
                        Ist immer noch der selbe ;D
                        Zeig uns doch nicht immer den PHP Code. Deine Frage kann man nur beantworten, wenn man den erzeugten HTML Code sieht.

                        Kommentar


                        • #13
                          Als erstes wollte ich mich entschuldigen das ich mich so schwer tu und ihr mir doch versucht zu helfen.
                          Hier ist der erzeugt CODE
                          In dem Programm sind schon ein paar andere Variablen und Funktionen die aber eigentlich keine Probleme darstellen sollten.

                          HTML-Code:
                          <table class="highlight responsive-table">
                          <thead>
                          <tr>
                          <th>ID</th>
                          <th>Klasse</th>
                          <th>Geschlecht</th>
                          <th>Vorname</th>
                          <th>Nachname</th>
                          <th>Laufen</th>
                          </tr>
                          </thead>
                          
                          
                          <form action="" method="get" id="0">
                          
                          <div class="row">
                          
                          <input type="hidden" name="aktion" value="suchen" width="10%">
                          <div class="input-field col s3"><input type="text" name="suchbegriff" id="suchbegriff" width="50%" value=""></div>
                          <div class="col s4 center-align">
                          <br>
                          <div class="switch-toggle switch-3 switch-candy">
                          <input id="m" name="auswahl" type="radio" value="m">
                          <label for="m" onclick="">m</label>
                          
                          <input id="b" name="auswahl" type="radio" checked="checked" value="">
                          <label for="b" onclick="">m/w </label>
                          
                          <input id="w" name="auswahl" type="radio" value="w">
                          <label for="w" onclick="">w</label>
                          </div>
                          </div>
                          
                          <div class="input-field col s2"><input class="material-icons btn red darken-2" type="submit" value="&#xf002" width="20%"></div>
                          </div>
                          </form>
                          
                          
                          <p>Gesucht wird nach: <b>10a</b> und <b></b> wieder <a href="?aktion=allesanzeigen">alle Daten anzeigen</a></p><p>Treffer: 24</p>
                          
                          
                          
                          
                          <tbody>
                          
                          
                          <form method="post" id="1">
                          <tr>
                          <td>1</td>
                          <td>10a</td>
                          <td><i class="fa fa-venus" aria-hidden="true"></i></td>
                          <td>Franka</td>
                          <td>Becker</td>
                          <td><input type="text" name="ausdauerlaufm" id="ausdauerlaufm" value="4"></td>
                          <td><input type="text" name="ausdauerlaufs" id="ausdauerlaufs" value="30"></td>
                          <td><input type="hidden" name="id" id="id" value="1">
                          <button type="button" id="1" onclick="register(this)">Save</button> </td>
                          </tr>
                          </form>
                          
                          
                          
                          
                          
                          
                          
                          <tbody>
                          
                          
                          <form method="post" id="2">
                          <tr>
                          <td>2</td>
                          <td>10a</td>
                          <td><i class="fa fa-mars" aria-hidden="true"></i></td>
                          <td>Max</td>
                          <td>Mustermann</td>
                          <td><input type="text" name="laufm" id="laufm" value="3"></td>
                          <td><input type="text" name="laufs" id="laufs" value="12"></td>
                          <td><input type="hidden" name="id" id="id" value="2">
                          <button type="button" id="2" onclick="register(this)">Save</button> </td>
                          </tr>
                          </form>
                          
                          </tbody>
                          
                          </table>
                          
                          
                          
                          <ul class="pagination">
                          <p>Seite: <li class="active"><span class="seite_aktuell"><a href="#!">1</a></span></li> </ul>
                          
                          

                          Kommentar


                          • #14
                            Zitat von masterElmar Beitrag anzeigen
                            Das ist nicht das Problem. Ich habe ja eine Tabelle welche generiert wird. Duch PHP und in dieser will ich bestimmte Zeilen auslesen lassen.
                            So das ich wenn ich den Button am Ende einer Zeile drücke die jeweils dazugehörogen Werte in der Zeile bekomme.
                            Doch, das könnte durchaus das Problem sein. HTML resp. der Browser erwartet, dass eine ID nur einmal vorkommt. Ich wüsste jetzt zwar nicht wie der Browser da reagiert aber das wäre jetzt mein erster Schritt, schauen, dass jedes Element eine eigene ID hat. Wenn das nicht klappt können wir weiterschauen. Das was du da hast ist auf jeden Fall unsauber und das ist immer eine Fehlerquelle.

                            Kommentar


                            • #15
                              Jede Form hat bei mit eine eigene ID soweit ich jetzt durch gegangen bin. Das manchmal ID Sprünge vorhanden sind ist gewollt. Und durch eine Abfrage durch MSQL so aber das sollte nicht stören.

                              Kommentar

                              Lädt...
                              X