Dropdown Auswahl löschen und andere php Seite neu laden

  • Hallo zusammen,


    meine Seite besteht aus 3 php files, die verschiedene Bereiche der Seite darstellen. In einer davon hat der Benutzer die Möglichkeit, via Dropsdowns, eine Ergebnisliste die in einem anderen php File dargestellt wird einzuschränken. Deswegen habe ich 2 Buttons unter den Dropdowns. Einer davon schickt das Formular ab, und lädt die Ergebnisliste neu. Dies mach ich ganz einfach mit:


    PHP
    echo '<form method="POST" action="result.php?v1='.$v1.'&v2='.$v2.'&v3='.$v3.'" target="result">', PHP_EOL;// ein Dropdown als Beispiel$select= '<select name="v1" >';$select.='<option selected></option>';$select.='<option>verpflichtend</option>';$select.='<option>tailorbar</option>';$select.='</select>';//Buttonsecho '<td align="right"> <button type="reset">Reset</button></td><td align="left"><input type="submit" name="Submit" value="Filter"></td>';


    Der Reset Button leert so natürlich nur die Dropdownauswahl und dann muss der Benutzer aber noch auf Filter drücken um die Ergebnisliste neuzuladen.

    Das ist umständlich und es wäre schöner wenn der Benutzer durch Reset direkt die andere php Seite neu laden kann.


    Ich habe schon folgende Sachen probiert:


    Code
    <form method="POST" action="result.php?v1=%&v2=%&v3=%"><input type="submit" value="Reset" ></form>
    
    
    genauso hab ich probiert mit onclick das auszuführen, aber konnte es nicht richtig umsetzen. Ich hab auch überlegt mit unset($v1) die Variablen zu löschen, aber dann ist die ja ganz gelöscht und in den Button konnt ich die Funktion auch nicht einbauen


    Hat da jemand noch ne Idee, wie man das am Besten umsetzen kann?


    Vielen Dank schonmal



    [/Code]

  • Ok dann probier ichs nochmal:


    In einem php File hab ich Dropdowns erzeugt. Hier kann der Benutzer eine Auswahl treffen. Über einen Submit button werden die Variablen an ein anderes PHP File geschickt, in dem dynamisch eine Ergebnisliste aus SQL geladen wird. Wenn der Benutzer jetzt eine Auswahl getroffen hat und auf Filter drückt, wird die Ergebnisseite neu geladen und nach den gesetzten Variablen gefiltert.


    Unter den Dropdowns ist noch der Button Reset. Der löscht aktuell aber nur die Dropdownauswahl und aktualisiert aber nicht zugleich die Ergebnisliste. Diese wird erst aktualisiert wenn der Benutzer erneut auf Filter drückt, da jetzt die Variablen wieder an die andere php Datei geschickt werden.

    Ziel ist es aber, dass der Reset Button zum einen die Dropdownauswahl löscht, und zusätzlich die Ergebnisliste neu lädt.

  • Du gibs den Reset Button eine id ,und der holt dann mit Ajax gleich die neuen Daten runter. Theoretisch kannst du den Rest Button auch zu einen normalen Button machen weil du ja gleichzeitig löscht und was neues holst. Durch den Request würde das vorherige sowieso überschrieben.

    Zb so.

    http://sebastian1012.bplaced.n…ct-ueber-ajax-reseten.php

    Mit einen klick auf Reset wird die neue Liste geladen.


    Ich habe ein Reset Button genommen der die anderen Felder dann alle mit Löschen würde wenn welche da währen. Wenn du das nur für den Dropdown Menü den Button brauchst kannst du ja auch normalen Button nehmen.


    Aber du siehst wie man das mit Ajax machen kann. Das Php da hinter mußt du selber rausfinden das kann ich dir hier nicht sagen weil Komplett Lösungen wollen wir ja nicht . Aber das bisßchen Php dahinter wirst du wohl selbst hinbekommen

  • Hm, ich hab oben im head Bereich alles eingefügt, wie es bei dir ist.


    HTML
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>  <script src="https://www.googletagmanager.com/gtag/js?id=UA-122955144-1" async=""></script>  <script>  window.dataLayer || [];  function gtag(){dataLayer.push(arguments);}  gtag('js', new Data());  gtag('config', 'UA-122955144-1');  </script>  <style>      table {        width:100%;        font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;  font-size: 13px;      }    </style></head>


    dann die id beim select


    PHP
    $select= '<select name="v1" id="sele" >';$select.='<option selected></option>'; $select.='<option>verpflichtend</option>'; $select.='<option>tailorbar</option>'; $select.='</select>';


    Die Buttons:

    PHP
    echo '<td align="right"><button id="rese" type="reset" data-wert="1">Reset</button></td><td align="left"><input type="submit" name="Submit" value="Filter"></td>';


    und zu schluss dein Skript:



    Wenn ich was auswähl und auf den Button drück, wird die Dropdown Auswahl gelöscht, aber dann steht auch gar nichts mehr drinnen im Dropdown.

    Die result.php lädt sich auch nicht neu. Und was meinst du mit des PHP dahinter? Ich hab ja im Endeffekt schon den fertigen Code und muss da nur dein Skript dazubauen oder nicht? Sorry ich bin in diesem selbst Java oder Ajax schreiben so komplett unerfahren, bekomm jetzt nach 4 Monaten nur PHP mit html einigermaßen hin.

    Ich erwarte hier keine komplett Lösung, wäre nur sehr nett, falls zu Zeit hast, dein Skript da kurz bisschen zu erklären weil ich glaub so wie ich es hab, ist da irgendwo ein Funktionsfehler, nachdem die result.php überhaupt nicht angegangen, bzw neugeladen wird und die Dropdown Inhalte komplett verschwinden.

  • alles was in head steht kann weg auser Jquery. Das brauchst du nicht das ist google kram.Sollte ich mal weg lassen,aber egal. Dann zeig mal dein Php Script ,weil im Php Script mußt du ja auch sagen was ajax da zeigen soll. Ich weiß blöde erklärung aber erklären ist nicht so mein ding.

  • Ah okay, war mir nicht sicher habs einfach mal genauso aufgebaut wie es bei dir ist :D


    Okay dann nochmal zum Verständnis meiner Seite.


    Im Bereich oben links befindet sich wie eine Art Zeitstrahl, wo die Benutzer einen Punkt in ihrem Projektfestlegen können. Dies ist in der 1. PHP Datei geregelt.

    Im rechten oberen Bereich, befindet sich dann die PHP Datei um die es eigentlich geht. Hier sind 4 Dropdown Menüs vorhanden. Auch hier kann der Benutzer eben eine Auswahl treffen. Diese Auswahl wird dann bislang, wie in #1 gezeigt, per form zu der dritten php Datei geschickt. In der dritten PHP Datei frag ich die Variablen dann ab, und auf Grundlage dieser wird eine SQL Abfrage durchgeführt und eine Ergebnisliste angezeigt.


    Das Ausgangsproblem ist jetzt, dass ich in der 2. PHP Datei, die mit den Dropdowns, bislang zwei Buttons habe. Einen Reset, und einen Submit. Der Submit schickt die ausgewählten Variablen an die 3. PHP Datei, die mit der Ergebnisliste und der SQL Abfrage. Der Reset leert aktuell nur die ganzen Dropdownauswahlen. Um aber die Ergebnisliste zu aktualisieren, muss der Benutzer nachdem er auf Reset gedrückt hat, nochmal auf Filter drücken. Diese Funktion probier ich in dem Reset button zu vereinen. Also Einträge im Dropdown löschen/zurücksetzen dass keine Auswahl getroffen ist (was er bereits einfach mit <button type="reset"> macht) und jetzt soll aber bei diesem Button zusätzlich alle Variablen leer an die PHP Datei mit der Ergebnisliste geschickt werden, dass die sich wie beim Klick auf den Submitbutton neu lädt.


    Ich zeig dir nun mal, vereinfacht, den Aufbau der PHP Datei mit den Dropdowns.


    PHP
    header('Content-Type: text/html; charset=iso-8859-1');
    // get variables from user selection
    if (isset($_GET["v1"])) {$v1 = $_GET["v1"];}    else {$v1="met";}
    if (isset($_GET["v2"]))  {$v2 = $_GET["v2"];}   else {$v2="all";}
    if (isset($_GET["v3"]))    {$v3 = $_GET["v3"];}         else {$v3="g1";}
    if (isset($_GET["v4"]))  {$v4 = $_GET["v4"];}     else {$v4="en";}


    v1&v2 stellen jetzt einfach mal die Variablen aus dem Zeitstrahl dar, v3&v4 sollen die Variablen im Dropdown sein.


    Dann folgte der Verbindungsaufbau mit der Datenbank (ist schätz ich für die Frage nicht relevant), und im nächsten Schritt öffne ich das Form Element, dem ich sage, dass er die Variablen in die 3. Datei (result.php) schicken soll.


    PHP
    // Aufbau des Auswahlformulars
    echo '<form method="POST" action="result.php?v1='.$v1.'&v2='.v2.'&v3='.$v3'&v4='.$v4.' " target="result">', PHP_EOL;


    Dann folgen die Datenbankabfragen für die Werte, die im Dropdownmenü angezeigt werden sollen (die sind nämlich nur einmal hardgecoded, die anderen Auswahlmöglichkeiten werden dynamisch erzeugt) Beispiel:


    PHP
    // Ausfuehren einer SQL-Anfrage: Auswahlformular 'Type', Werte ohne Wiederholungen
    $query2 = "SELECT DISTINCT type_".$v4." FROM $database_name_eb WHERE type_".$v4." <> 'empty'";
    $result2 = mysqli_query($link, $query2) or die("Request failed: " . mysqli_error($link));


    Dann folgen ein paar Variablendefinitionen für die Mehrsprachigkeit des Auswahlformulars, auch unnötig für die Frage.


    Und dann geht's auch schon direkt los mit den Auswahlformularen, als Beispiel ein hardgecodetes, und ein dynamisch erzeugtes:


    Nun werden die Dropdowns dargestellt, hinter den Variablen "type_designator" und "v3_designator" stehen einfach nur deutsche und englische Bezeichnungen fürs Dropdown.


    Vereinfacht, wars das auch schon.

    Ich hoffe, ich habe es verständlich erklärt. Und schon mal vielen Dank für die Zeit die du dir nimmst!

  • Wozu machen so viele Leute immer soviele ECHOS da rein ? Das geht doch auch mit ein echo. Naja muß ich nicht verstehen.


    Ich vereinfache das jetzt auch mal weil dein Php zeug ist mir etwas unübersichtlich wie du das da machst.

    Aber das kannst du ja machen wie du willst. Du wolltest wissen wie Ajax geht und zwar so.

    Das

    Code
    $('#rese').click(function(){
     neu=$(this).data('wert');
     $.ajax({
      type: "POST",
      url: "result.php",
      data: {neu:neu},
      success: function(data){
       document.getElementById('sele').innerHTML=data;
      }
     });

    Das schickt jetztunter NEU eine 1 .

    Was du so im PHP abfragen tust

    Code
    if(isset($_POST['neu'])) {
      $neu=$_POST['neu'];
    if($neu == 1){
      echo " selctmenü eins";
    }else{
    echo "Selectmenü 2";
    }
    }

    dann kommt hier beim Ajax

    Code
    data: {neu:neu},
      success: function(data){
      alert(data) // Im alert stehen dann deine echo ausgabe
      }

    Das ist jetzt ein Bespiel. Wie und was du mit Ajax versendest mußt du wissen und wie du was mit php zurück gebst weißt du jetzt auch.Du mußt deine Ausgabe in diesen fall in den echo packen. Aber wie man das mit den Php anders und besser machen kannst können dir die andern sagen ,und so wie jetzt ist geht es nur wenn es kein Affen formular ist .

  • Ok danke für die Erklärung. Ja man hat halt am Anfang gelesen, dass man mit echo in html wechselt, und nach nem php befehl kommt ein ; . Naja, dass man einfach alles in ein echo packt, bin ich damals nicht drauf gekommen, aber stimmt muss ich mir mal Zeit nehmen und den Code verschönern. Dann probier ich jetzt mal das so umzubauen. So wie ichs verstanden hab, muss ich ins echo die Variablen="%" reinschreiben, damit der bei der folgenden SQL Abfrage wieder alle Möglichkeiten anzeigt.

  • Die echo Variante ist bestimmt nicht verkehrt. Nur ich habe auch schon öfters gelesen das man die ganze echo Suppe nicht brauch. Ich mache zb nur noch 1 echo bzw 2 oder 3 ( vor und nach Schleife ) jenachdem wie man sie brauch. Nur jeden Tag in ein echo zu packen tue ICH nicht. Was nun richtig ist oder was besser ist weiß ich nicht, da kann bestimmt mal einer was von den Profis mehr zu sagen was da am besten ist und vor allem richtig ist ?

  • Ich habe im letzten Monat eine neue php Datei erstellt, weil ich eine neu Ansicht gebraucht hab. Da hab ich nur einmal vor den ganzen HTML Blöcken ein echo geschrieben, funktionieren tut's zumindest :D. Aber was da richtig ist und nicht, weiß ich natürlich noch weniger als du :D

  • Aber was da richtig ist und nicht, weiß ich natürlich noch weniger als du :D

    Hier kommt es nicht unbedingt auf richtig oder falsch an, beides ist erlaubt und funktioniert. Hier kommt es schlicht weg auf die Lesbarkeit an.

    Vergleiche

    Code
    echo "<table>
           <tr>
             <td>$var1</td>
             <td>$var2</td>
             <td>$vvar3</td>
             <td>$var4/td>
           </tr>
          </table>";

    mit

    Code
    echo "<table>";
    echo "<tr>";
    echo "<td>$var1</td>";
    echo "<td>$var2</td>";
    echo "<td>$vvar3</td>";
    echo "<td>$var4/td>";
    echo "</tr>";
    echo "</table>";
  • Ja stimmt, sieht deutlich besser aus!


    Zum eigentlich Thema. Ich hab's nicht hinbekommen, Bastis Skript so umzubauen, dass es das tut was es soll. Es löscht zwar wie ein normaler Resetbutton die Einträge im Dropdown, jedoch schaff ich es nicht, dass er die result.php neu lädt.


    Ich hab jetzt einfach mal per einen onClick Button eingesetzt, den ich einfach 2 Javafunktionen ausführen lass.


    PHP
    echo '<td align="right"><input type="button" value="'.$clearbutton_designator.'" onClick="this.form.reset(); form.submit();">';


    Funktioniert bei mir einwandfrei und macht genau das, was er machen soll. Ist das auch programmiertechnisch korrekt?

  • Ich glaube da spricht nix dagegen. So in der art hat man das schon oft gesehen.Könnte aber auch falsch liegen.

    Aber wo wahr das problem mit ajax? Was ging den nicht ? Hast du mal Fehlersuche gemacht wo der Fehler sitzt ? Hättest im Php Script erstmal nur ein echo mit HALLO geschrieben ob der zurück kommt,dann weißt du schon mal das ajax gesendet hat. Dann fragst du ab was ajax gesendet hat und ob das drinne steht was du auch erwartest. Wenn das schon mal passt ist der rest php kram was und wie du es zurück gibst.

    Zeuig doch mal dein html und das javascript Script . Php brauche ich nicht ich will mal kucken ob du das soweit richtig hast.

    Nur weil dein Script jetzt geht solltest du mit Ajax nicht aufgeben weil du wirst du früher oder später öfters in Php brauchen.

    Von da her solltest du das aufjedenfall lernen weil das brauch man bestimmt mal.

    Meine Meinung:)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!