Ankündigung

Einklappen
Keine Ankündigung bisher.

Übergabe Javascript-Array an PHP zur Weiterverarbeitung

Einklappen

Neue Werbung 2019

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

  • Übergabe Javascript-Array an PHP zur Weiterverarbeitung

    Hallo, ich habe ein Javascript geschrieben, der mir die Values von angeklickten Checkboxen in ein Array schreibt. Diese Values sind zeitlich auch die IDs für spezielle Datenbankabfragen.
    Nun möchte ich dieses Array an meine PHP-Datei übergeben, umso dann Datenbankabfragen zu generieren.

    Stichpunkt AJAX hab ich mir mal angeschaut. Hab dann auch schon Quellcode generiert und wieder entfernt weil dort irgendwie kein Leben drinnen war.
    Hat jemand eine Idee, wie ich an das Problem rann gehen soll? Muss man für Ajax irgendwas vorab installieren? Gibt es eine gute deutsche Beschreibung im Internet?

    Javascript:

    Code:
    function checkID(checken){
    
    // Variablendeklaration
        var IDarray=new Array();
        var IDcheckArray=new Array();
        var count=0;
        var AnzahlCheck=0;
    
    // Checkboxabfrage
         for ( var i= 0; i < 100; i++)
          {
          if (document.getElementsByName("Check"+i)[0].checked == true)
            {
            IDcheckArray[i]=document.getElementsByName("Check"+i)[0].value;
             AnzahlCheck= AnzahlCheck+1;
            //console.log(IDcheckArray[i]);
            }
          if (document.getElementsByName("Check"+i)[0].checked == false)
            {
             IDcheckArray[i]=0;
            }
          if (IDcheckArray[i]!=0)
            {
             IDarray[count]=IDcheckArray[i];
             console.log(IDcheckArray[count]);
    
            }
    
          count++;
    
          // Anzahl angeklickte Checkboxen
          console.log(AnzahlCheck);
    }

  • #2
    Warum machst du dir so viele Baustellen auf. Nimm doch erst mal ein normales Formulat, übertrage die Daten und lasse ein Diagramm zeichnen und ausgeben, warum auf einmal AJAX?

    Kommentar


    • #3
      Vielen Dank für deine Antwort. Eigentlich hab ich nur noch zwei Baustellen. Formular hört sich gut an, gibt es da ein Beispiel zu? Warum AJAX? Laut Netz sollte das die Lösung auf Datensynchronisation sein aber wenn ich mit einem Formular ganz einfach nur ein Array mit Zahlen an PHP senden kann, reicht das 100%ig aus.

      Kommentar


      • #4
        Gibt es irgendwo ein leichtes Beispiel, woran man erkennt wie man ein solches Formular für die Übertragung eines Arrays aufgebaut ist?
        Ist meine letzte Baustelle. Finde im Netz jede menge know how, aber irgendwie bekomm ich das nicht auf die Kette.

        Kommentar


        • #5
          Bitte schön:
          PHP-Code:
          <?php
          if (isset($_GET['MeinArray'])) {

              
          var_dump($_GET['MeinArray']);

          }
          ?>

          <!DOCTYPE html>
          <html>
          <head>
          <meta charset="UTF-8">
          <title>Test Form with Array</title>
          <style>
              label, input {display: block; margin:5px;text-align:center;width:8em;}
          </style>
          </head>

          <body>
          <form>
              <label>Zahlen eingeben:</label>
              <input name="MeinArray[]" type="number" min="4" max="100" step="10">
              <input name="MeinArray[]" type="number" value="<?=$_GET['MeinArray'][1?>">
              <input name="MeinArray[]" type="number">
              <input name="MeinArray[]" type="number">
              <input type="submit">
          </form>
          </body>
          </html>

          Kommentar


          • #6
            Ok vielen Dank für die Inspiration! Ich werde jetzt mal versuchen dieses Formular irgendwie in meinem Quelltext einzubauen. Irgendwie muss ich ja die Javascript Daten an das PHP gesendet bekommen, ansonsten hätte ich noch die möglichkeit die checkboxen via PHP abzufragen das wäre ja eventuell auch noch eine Option.

            PHP-Code:
            //Ausgabe der gelesen Datenbankeintraege
            $K 0;
            echo 
            '<div style="width: '.($divwidth+22).'px; height: 600px; overflow: scroll;"><table width="133" border="2" cellpadding="0" cellspacing="0">';
              while(
            $row=@mssql_fetch_object($result))
              {                                                                                               
            //";//
              
            if($Details)
                  {
            $text "onmouseover="style.backgroundColor='#b0e0e6'"onmouseout="style.backgroundColor='white'"><a href="Rollenbericht.php?id=$row->id" target= "_blank">";$text stripslashes($text);}
              else
                  {
            $text "onmouseover="style.backgroundColor='#b0e0e6'"onmouseout="style.backgroundColor='white'">";$text stripslashes($text);}

                echo 
            "<tr ",$text;

                if(
            $Checkbox) echo '<td><div style="width: 20px; height: 18px; overflow: hidden;"><input type="checkbox" name="Check'.$K.'" value="',$row->id,'"></div></td>';
                if(
            $Spalte1VAR != "")echo '<td><div style="width: 133px; height: 18px; overflow: hidden;">',$Spalte1Nachkomma number_format($row->$Spalte1VAR,$Spalte1Nachkomma) : $row->$Spalte1VAR,'</div></td>';
                if(
            $Spalte2VAR != "")echo '<td><div style="width: 133px; height: 18px; overflow: hidden;">',$Spalte2Nachkomma number_format($row->$Spalte2VAR,$Spalte2Nachkomma) : $row->$Spalte2VAR,'</div></td>';
                if(
            $Spalte3VAR != "")echo '<td><div style="width: 133px; height: 18px; overflow: hidden;">',$Spalte3Nachkomma number_format($row->$Spalte3VAR,$Spalte3Nachkomma) : $row->$Spalte3VAR,'</div></td>';
                if(
            $Spalte4VAR != "")echo '<td><div style="width: 133px; height: 18px; overflow: hidden;">',$Spalte4Nachkomma number_format($row->$Spalte4VAR,$Spalte4Nachkomma) : $row->$Spalte4VAR,'</div></td>';
                if(
            $Spalte5VAR != "")echo '<td><div style="width: 133px; height: 18px; overflow: hidden;">',$Spalte5Nachkomma number_format($row->$Spalte5VAR,$Spalte5Nachkomma) :
                if(
            $Diagramm)
                  {
                  
            $GW[$K] = $row->Laenge;
                  
            $PD[$K] = $row->RollenStartDate;
                  }
                echo 
            '</tr></a>';

            $K++;

            In PHP werden in einer While Schleife die Checkboxen mit Check0-XAnzahl als Namen und einer jeweiligen DatenbankID als Value angelegt. Möglicherweise könnte man auch eine Schleife generieren in PHP, die die generierten Checkboxen nach ihrer ID(Value) abfragen kann, dann hätte ich auch meine Daten. Welcher weg wäre einfacher?


            Viele Grüße

            Kommentar


            • #7
              PHP-Code:
                  if($Spalte1VAR != "")echo '<td><div style="width: 133px; height: 18px; overflow: hidden;">',$Spalte1Nachkomma number_format($row->$Spalte1VAR,$Spalte1Nachkomma) : $row->$Spalte1VAR,'</div></td>';
                  if(
              $Spalte2VAR != "")echo '<td><div style="width: 133px; height: 18px; overflow: hidden;">',$Spalte2Nachkomma number_format($row->$Spalte2VAR,$Spalte2Nachkomma) : $row->$Spalte2VAR,'</div></td>';
                  if(
              $Spalte3VAR != "")echo '<td><div style="width: 133px; height: 18px; overflow: hidden;">',$Spalte3Nachkomma number_format($row->$Spalte3VAR,$Spalte3Nachkomma) : $row->$Spalte3VAR,'</div></td>';
                  if(
              $Spalte4VAR != "")echo '<td><div style="width: 133px; height: 18px; overflow: hidden;">',$Spalte4Nachkomma number_format($row->$Spalte4VAR,$Spalte4Nachkomma) : $row->$Spalte4VAR,'</div></td>';
                  if(
              $Spalte5VAR != "")echo '<td><div style="width: 133px; height: 18px; overflow: hidden;">',$Spalte5Nachkomma number_format($row->$Spalte5VAR,$Spalte5Nachkomma) : 
              Das ist jedenfalls häßlich. und verstösst gegen das DRY Prinzip. Sobald man im SocureCode selbst mal Copy & Pastet ist was verkerhrt. https://de.wikipedia.org/wiki/Don%E2...epeat_yourself

              Und nutz bitte mehr css Klassen statt Inline-Code.
              The string "()()" is not palindrom but the String "())(" is.

              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
              PHP.de Wissenssammlung | Kein Support per PN

              Kommentar


              • #8
                Dies hier
                PHP-Code:
                $row->$Spalte5VAR 
                sieht schon nach falschem Datenbankdesign aus. Warum hast du die Werte nicht in einer extra Tabelle?
                und niemals Fehler unterdrücken
                PHP-Code:
                $row=@mssql_fetch_object($result
                Das @ vor der Funktion unterdrückt die Fehlerausgabe, besser ist es Fehler abzufangen und entsprechend zu reagieren.

                Von dem anderen schlechten HTML-Code lasse ich jetzt mal ab damit du nicht zu viel auf einmal zu korrigieren hast.

                Kommentar


                • #9
                  Hey gut das ihr das ansprecht, ich hab das Projekt von einem Vorgänger übernommen, das sowas nicht dem Ideal entspricht wusste ich noch nicht. Ich denke dann werde ich das ganze mal überarbeiten. Übrigens hab ich meine Checkboxen jetzt über PHP abgefragt und hab nun die Daten die ich benötige.

                  Einfach über Checkbox-Namen+Value ermittelt.

                  PHP-Code:
                  echo'<form method="post">';
                  echo
                  '<input type="submit" name="submit" title="Speichern" />';
                  echo
                  '</form>';

                  echo 
                  "<br /><a href=detail_Auftragsbericht.php?id=$comma_ID>Auftragsbericht auswerten</a>";    

                   if(isset(
                  $_POST['submit'])){
                     for (
                  $i=0;$i<count($Checkarray);$i++) {
                     
                  //echo 'Wert: '.$_POST[$Checkarray[$i]];     //Ausgabe testen  
                     
                  $CheckID[$i]=$_POST[$Checkarray[$i]];

                     }
                     
                  $IntCheckID=array();
                     
                  $IntCheckID array_map('intval',$CheckID); 
                  Ja muss jetzt mal sehen, dass ich nach und nach lerne, wie genau die Struktur sein muss, deshalb bin ich für jeden Tipp dankbar. Wie gesagt, bin erst 2 Monate mit PHP drann, vorher noch nie was mit zutun gehabt.

                  Kommentar


                  • #10
                    Jeder hat mal klein angefangen. Ich frage mich nur ob du dich hier nicht übernommen hast.

                    Noch ein gravierender Fehler
                    PHP-Code:
                    echo "<br /><a href=detail_Auftragsbericht.php?id=$comma_ID>Auftragsbericht auswerten</a>";    

                     if(isset(
                    $_POST['submit'])) 
                    Das verstößt massiv gegen alle Prinzipien eines guten Codes, und auch das EVA-Prinzip.
                    Du gibst was aus ->>> echo
                    und danach prüfst du den übergebenen Parameter an das Script ->>> $_POST['submit'])
                    umgekehrt sollte es sein.

                    Was kommt denn noch alles?

                    Noch ein mal
                    PHP-Code:
                    echo "<br /><a href=detail_Auftragsbericht.php?id=$comma_ID>Auftragsbericht auswerten</a>"

                    muss lauten
                    PHP-Code:
                    echo '<br /><a href="detail_Auftragsbericht.php?id=' $comma_ID '">Auftragsbericht auswerten</a>'
                    achte auf die Hochkommata.
                    und $comma_id bitte so verwenden wie in https://www.php.de/forum/webentwicklung/php-einsteiger/1488600-array-von-bericht-php-an-diagramm-php-übergeben?p=1489481#post1489481


                    Also mit htmlspecialchars($comma_ID, ENT_COMPAT, 'UTF-8')

                    Lese dazu warum die Behandlung des Kontextwechsel nötig ist.

                    Kommentar


                    • #11
                      Zitat von Firebird1992 Beitrag anzeigen
                      Hey gut das ihr das ansprecht, ich hab das Projekt von einem Vorgänger übernommen, das sowas nicht dem Ideal entspricht wusste ich noch nicht. Ich denke dann werde ich das ganze mal überarbeiten. Übrigens hab ich meine Checkboxen jetzt über PHP abgefragt und hab nun die Daten die ich benötige.

                      Einfach über Checkbox-Namen+Value ermittelt.

                      PHP-Code:
                      echo'<form method="post">';
                      echo
                      '<input type="submit" name="submit" title="Speichern" />';
                      echo
                      '</form>';

                      echo 
                      "<br /><a href=detail_Auftragsbericht.php?id=$comma_ID>Auftragsbericht auswerten</a>";

                      if(isset(
                      $_POST['submit'])){
                      for (
                      $i=0;$i<count($Checkarray);$i++) {
                      //echo 'Wert: '.$_POST[$Checkarray[$i]]; //Ausgabe testen
                      $CheckID[$i]=$_POST[$Checkarray[$i]];

                      }
                      $IntCheckID=array();
                      $IntCheckID array_map('intval',$CheckID); 
                      Ja muss jetzt mal sehen, dass ich nach und nach lerne, wie genau die Struktur sein muss, deshalb bin ich für jeden Tipp dankbar. Wie gesagt, bin erst 2 Monate mit PHP drann, vorher noch nie was mit zutun gehabt.
                      Geht auch einfacher:

                      PHP-Code:
                      <!DOCTYPE HTML>
                      <html>
                      <head>
                      <title>Untitled</title>
                      </head>
                      <body>
                      <form action="" method="post">
                      Eins <input type="checkbox" name="werte['eins']" value="11" />
                      Zwei <input type="checkbox" name="werte['zwei']" value="25" />
                      Drei <input type="checkbox" name="werte['drei']" value="33" />
                      Vier <input type="checkbox" name="werte['vier']" value="14" />
                      Fünf <input type="checkbox" name="werte['fuenf']" value="55" />
                      <input type="submit" value="Form Senden" name="cmd" />
                      </form>
                      <pre>
                      </body>
                      <?php
                      if(isset($_POST['cmd'])){
                       if(isset(
                      $_POST['werte'])){
                        
                      $werte = array();
                        foreach(
                      $_POST['werte'] as $key => $value){
                         
                      // echo $key." - ".$value."<br>";
                        
                      $werte[$key] = $value;
                        }
                       
                      print_r($werte);
                       }else{
                           echo 
                      "Keine Auswahl getroffen.";
                           }
                      }
                      ?>
                      </html>

                      Kommentar


                      • #12
                        Was soll die sinnlose Variablenherumkopiererei bringen? Beschäftigungstherapie? Man kanns sicher noch aufwändiger schreiben dafür, dass es dann nichts tut.

                        Kommentar


                        • #13
                          PHP-Code:
                          if(isset($_POST['cmd'])){
                           if(isset(
                          $_POST['werte'])){ 
                          Kann man auch so schreiben
                          PHP-Code:
                          if( isset($_POST['submit'], $_POST['werte']) ){ 

                          cmd ist hier auch nichtssagend, ich bin für submit, da weiss man was man hat,
                          Guten Abend.

                          Kommentar


                          • #14
                            Zitat von protestix Beitrag anzeigen
                            Jeder hat mal klein angefangen. Ich frage mich nur ob du dich hier nicht übernommen hast.

                            Noch ein gravierender Fehler
                            PHP-Code:
                            echo "<br /><a href=detail_Auftragsbericht.php?id=$comma_ID>Auftragsbericht auswerten</a>";

                            if(isset(
                            $_POST['submit'])) 
                            Das verstößt massiv gegen alle Prinzipien eines guten Codes, und auch das EVA-Prinzip.
                            Du gibst was aus ->>> echo
                            Den Fehler hab ich als erstes behoben, das ist das ende vom Skript danach folgt nichts mehr. Ob ich mich übernommen hab, nunja am meisten lernt man wenn man ins kalte Wasser geschmissen wird oder wie sagt man dazu

                            Die restlichen Sachen die du angesprochen hast, hab ich mir zu Herzen genommen. Den Link hab ich mir mal durchgelesen und die Comma IDs hab ich wie im anderen Schema übernommen, das hatte ich wohl noch vergessen.

                            Das EVA Prinzip sollte mir als SPS Programmierer eig direkt auffallen an dieser Stelle

                            Kommentar

                            Lädt...
                            X