Ankündigung

Einklappen
Keine Ankündigung bisher.

Selektierte Listbox Wert in eine Variable definieren

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

  • Selektierte Listbox Wert in eine Variable definieren

    Hallo PHP.de


    Ich bemühe mich mit PHP. Es ist meine erste PHP-Erfahrung, ich habe einen langen Weg hinter mir, aber jetzt hänge ich schon wieder an einem neuen Problem. Natürlich habe ich schon gegoogelt und in diesem Forum gesucht, aber ich habe nichts betreffendes gefunden.

    Ich habe eine Website aufgebaut, die wie eine interne Wikipedia ist. Wir können über ein Textfeld nach einem Schlüsselwort in der Mitte der Seite suchen, und jetzt möchte ich eine Funktion hinzufügen, die eine erweiterte Ansicht darstellt. Wir sollten über eine Erweiterte Ansicht Werte selektieren und mit diesen Über den Suchen-Button eine Suche starten.

    Ich habe die Einträge im Listenfeld dynamisch mit den Tabellen aus der SQL-Datenbank verknüpft, um die Verwaltung neuer Datensätze zu erleichtern.

    Mein Problem ist jetzt, dass ich keine Ahnung habe, wie man die vom Endbenutzer ausgewählten Einträge im Listbox in eine Variable umschließt. Wäre sehr dankbar, wenn mir jemand helfen könnte.

    Hier der Code, der für die erste dynamische Listbox gilt:

    php:
    PHP-Code:
    $query1 "SELECT * FROM `system_systemnummer`";    
    $result1 mysqli_query($connect$query1);    
    $result2 mysqli_query($connect$query1);    
    $options"";        
    while(
    $row2 mysqli_fetch_array($result2))        
    {        
    $options $options."<option>$row2[1]</option>";        

    dazugehörender html code:
    HTML-Code:
    <form action="#">        
    <input type="checkbox" name="chkbox" id="chk" onclick="showHide()" style="margin-left: auto" style="margin-right: auto";>        
    <label for="chk">Erweiterte Ansicht</label>        
    <br/>        
    <label class="hidden">      
    
    
    <br /><br />    
    Systemnummer:        
    <select name="ausgabe_systemnummer">            
    <?php while($row1 = mysqli_fetch_array($result1)):;?>                
    <option>Leer</option>                
    <option value="<?php echo $row1[0];?>"><?php echo $row1[1];?></option>            
    <?php endwhile;?>        
    </select>

    Wäre euch sehr dankbar wenn ihr mir helfen könntet... Danke im Voraus und wünsche noch einen schönen Tag!


  • #2
    Formatiere bitte deinen Code so, dass man nicht kilometerlang horizontal scrollen muss.

    SELECT * sollte man nicht verwenden, sondern immer alle Spalten angeben, die man auch ausgeben möchte.

    Warum benennst du die Tabelle so komisch?
    `system_systemnummer` ist irgendwie unschön, da 2 mal System drin vorkommt und englische Bezeichner wären auch besser.

    Inline-Style sollte man nicht verwenden, überhaupt solltest du dein Problem eingrenzen und nur das präsentieren was unbedingt nötig ist.

    Javascript (onclick="showHide()") gehört nicht in Html und Datenbankabfragen auch nicht. Lies dich mal ins EVA-Prinzip ein.


    Kommentar


    • #3
      Hallo @protestix

      Erstmal danke dafür, dass du dir Zeit genommen hast um mir zu antworten.
      Eine Anpassung für eine verbesserte Darstellung des Codes habe ich gerade eben vorgenommen.

      SELECT * wende ich an, damit ich bei einem Listbox alle Einträge in einer Spalte anzeigen kann, habe ich zb. eine Spalte für Schulklassen kann ich dynamisch auf dem Listbox die Einträge zeigen lassen. Hat den Vorteil, dass ich bei neuen Datensätzen den HTML Skript nicht anpassen bzw erneuern muss.

      Die Tabellen sind komisch bennent, das weiss ich :').. Jedoch habe ich somit eine gewisse Übersicht. Ich habe Eine Haupttabelle "System" und eine Untertabelle "Systemnummer" die zum "System" gehört bzw. verknüpft wird... Aber danke für deine Bemerkung, werde künftig Rücksicht auf das nehmen.

      Javascript dürfte keine Rolle spielen für das Problem die ich habe. Das Problem ist, dass ich nicht weiß wie ich das gewählte Objekt im Listbox in eine Variable umwandeln kann.
      Genauer: Ich weiss nicht wie ich hier(<option value="<?php echo $row1[0];?>"><?php echo $row1[1];?></option>
      ) das Gewählte Eintrag in eine Variable definieren kann, damit ich in mit einem Suchen-Button eine SQL-Abfrage starten kann, der wiederum die Abfrage mit den gewählten Einträgen aus der Listbox filtert..

      Kannst du mir vielleicht jetzt besser helfen?

      danke und gruss

      okanog

      Kommentar


      • #4
        Zitat von protestix Beitrag anzeigen
        Inline-Style sollte man nicht verwenden
        Ja und 2 mal style sowieso nicht wie hier
        Code:
          
          style="margin-left: auto" style="margin-right: auto";
        Und hier ist ein Doppelpunkt zu viel
        PHP-Code:
           <?php while($row1 mysqli_fetch_array($result1)):;?>
        Und wieso du einmal dein <option> im php Code erstellst und den anderen rest wieder unten in html das verstehe ich auch noch nicht ganz.
        Mein soforthilfe Forum und Chat

        Kommentar


        • #5
          Zitat von okanog Beitrag anzeigen

          Mein Problem ist jetzt, dass ich keine Ahnung habe, wie man die vom Endbenutzer ausgewählten Einträge im Listbox in eine Variable umschließt.
          Dann solltest du den Abschnitt Formularverarbeitung hier aus der Wissenssammlung mal gut durcharbeiten.
          Danach kannst du dir noch in diesen Aktivtest einzelne Formularlemente in der Resultspalte ändern und mit "Send Form Elements as POST" anschauen, welche Werte dann im $_POST-Array vorhanden sind.
          PHP-Klassen auf github

          Kommentar


          • #6
            Hallo jspit und basti1012

            Ebenfalls grossen Dank dafür, dass ihr euch Zeit fürs antworten nimmt.

            jspit Ich habe mir die Seiten angeschaut, den ersten Link habe ich tatsächlich nicht gesehen, danke!
            Ich habe mir einen Teil davon copy-pastet und habe es noch angepasst.

            Das habe ich nun erstellt:
            HTML-Code:
            Systemnummer:
            <select name="ausgabe_systemnummer">
            <option>Leer</option>
            <?php while($row1 = mysqli_fetch_array($result1)):;?>
            <option value="<?php echo $row1[0];?>"><?php echo $row1[1];?></option>
            <?php endwhile;?>
            </select>
            
            <?php
            if(isset($_POST['suche_enter'])) {?>
            <!--// gibt das erste Element aus,
            // Achtung! Erzeugt einen Fehler, wenn kein Eintrag ausgewählt war-->
            <?php echo $_POST['ausgabe_systemnummer'][0];
            /*// gibt alle Elemente aus*/
            foreach ($_POST['ausgabe_systemnummer'] as $eingabe_systemnummer) {
            echo $eingabe_systemnummer;
            }
            }
            ?>
            Dieser gibt eine Fehlermedung (Undefined index: ausgabe_systemnummer) und (Invalid argument supplied for foreach()) aus.
            Und ich hätte ja noch einen SQL-query wo füge ich diesen ein, sodass beim betätigen des 'suche_enter'-buttons nach diesen gesucht wird.

            Der Query sieht wie folgt aus, in der untersten Zeile ist die entscheidende Variable hinterlegt, jedoch weiss ich nicht wie und wo hinterlegen:


            Select
            hardware_servername.Servername AS 'Servername',
            hardware_domaene.Domaene AS 'Domäne',
            hardware_betriebssystem.Betriebssystem AS 'Betriebssystem',
            Hardware.Lokale_Datenbank AS 'Lokale Datenbank',
            Hardware.Datenbank_SQL_Master AS 'Datenbank SQL Master',
            Hardware.Instanzname AS 'Instanzname',
            hardware_standort.Standort AS 'Standort',
            Hardware.Backup_mit AS 'Backup mit:',
            Service.Servicename AS 'Servicename',
            system_systemnummer.Systemnummer AS 'Systemnummer',
            system_systemname.Systemname AS 'Systemname',
            System.Systembeschreibung AS 'Systembeschreibung',
            AA.Personen AS 'Hersteller',
            AB.Personen AS 'Externer Partner',
            system.BKAG_Brugg AS 'BKAG (Brugg)',
            System.BCIAG_Brugg AS 'BCIAG (Brugg)',
            System.Cables_Diverse_PL_CN_US_DE AS 'Cables Diverse (PL, CN, US, DE)',
            System.BINF AS 'BINF',
            System.BRAG_Kleindoettingen AS 'BRAG (Kleindöttingen)',
            System.BRG_Wunstorf AS 'BRG (Wunstorf)',
            System.BGP_Nordhausen 'BGP (Nordhausen)',
            System.Pipes_Diverse_FR_PL_IT_US AS 'Pipes Diverse (FR, PL,IT, US)',
            System.Ropes_BDAG_Birr AS 'Ropes / BDAG (Birr)',
            System.HOLDING_Brugg AS 'HOLDING (Brugg)',
            System.BIAG_Brugg AS 'BIAG (Brugg)',
            System.BPK_Brugg AS 'BPK (Brugg)',
            System.Dritte_Schule_Brugg_LithCom_usw AS 'Dritte, Schule Brugg, LithCom usw.',
            system_verfuegbarkeitsstufe.Verfuegbarkeitsstufe AS 'Verügbarkeitsstufe',
            System.Datenverlust AS 'Datenverlust',
            verantwortlichkeit_rolle.Rolle AS 'Rolle',
            A0.Personen AS 'Hauptverantwortlicher',
            A1.Personen AS 'Stellvertretung',
            A2.Personen AS 'Wissensträger 1',
            A3.Personen AS 'Wissensträger 2',
            A4.Personen AS 'Verantwortlichkeit extern',
            Zertifikate.Zertifikatname AS 'Zertifikatname',
            Zertifikate.Ablaufdatum AS 'Ablaufdatum'
            FROM Service
            JOIN System ON Service.Servicename_ID = System.FK_Service_ID
            JOIN Hardware ON System.System_ID = Hardware.FK_System_ID
            JOIN Verantwortlichkeit ON System.System_ID = Verantwortlichkeit.FK_System_ID
            JOIN Zertifikate ON System.System_ID = Zertifikate.FK_System_ID
            JOIN hardware_servername ON hardware.Servername = hardware_servername.Servername_ID
            JOIN hardware_domaene ON hardware_domaene.Domaene_ID = hardware.Domaene
            JOIN hardware_betriebssystem ON hardware_betriebssystem.Betriebssystem_ID = hardware.Betriebssystem
            JOIN hardware_standort ON hardware_standort.Standort_ID = hardware.Standort
            JOIN verantwortlichkeit_personen AS AA ON AA.Verantwortlichkeit_Personen_ID = system.Hersteller
            JOIN verantwortlichkeit_personen AS AB ON AB.Verantwortlichkeit_Personen_ID = system.Externer_Partner
            JOIN system_verfuegbarkeitsstufe ON system_verfuegbarkeitsstufe.Verfuegbarkeitsstufe_I D = system.Verfuegbarkeitsstufe
            JOIN system_systemname ON system_systemname.Systemname_ID = system.Systemname
            JOIN system_systemnummer ON system_systemnummer.Systemnummer_ID = system.Systemnummer
            JOIN verantwortlichkeit_rolle ON verantwortlichkeit_rolle.Verantwortlichkeit_Rolle_ ID = verantwortlichkeit.Rolle
            JOIN verantwortlichkeit_personen AS A0 ON A0.Verantwortlichkeit_Personen_ID = verantwortlichkeit.Hauptverantwortlicher
            JOIN verantwortlichkeit_personen AS A1 ON A1.Verantwortlichkeit_Personen_ID = verantwortlichkeit.Stellvertretung
            JOIN verantwortlichkeit_personen AS A2 ON A2.Verantwortlichkeit_Personen_ID = verantwortlichkeit.Wissenstraeger_1
            JOIN verantwortlichkeit_personen AS A3 ON A3.Verantwortlichkeit_Personen_ID = verantwortlichkeit.Wissenstraeger_2
            JOIN verantwortlichkeit_personen AS A4 ON A4.Verantwortlichkeit_Personen_ID = verantwortlichkeit.Verantwortlichkeit_extern

            WHERE
            system_systemnummer.Systemnummer LIKE '%$eingabe_systemnummer%'
            ;

            Kommentar


            • #7
              Zitat von okanog Beitrag anzeigen
              SELECT * wende ich an, damit ich bei einem Listbox alle Einträge in einer Spalte anzeigen kann, habe ich zb. eine Spalte für Schulklassen kann ich dynamisch auf dem Listbox die Einträge zeigen lassen. Hat den Vorteil, dass ich bei neuen Datensätzen den HTML Skript nicht anpassen bzw erneuern muss.
              Und hat sehr sehr viele Nachteile. Gib im SELECT immer alle Spalten an, die du im Ergebnis erwartest. Ohne Ausnahme.

              Zitat von okanog Beitrag anzeigen
              Javascript dürfte keine Rolle spielen für das Problem die ich habe. Das Problem ist, dass ich nicht weiß wie ich das gewählte Objekt im Listbox in eine Variable umwandeln kann.
              Genauer: Ich weiss nicht wie ich hier(<option value="<?php echo $row1[0];?>"><?php echo $row1[1];?></option>
              ) das Gewählte Eintrag in eine Variable definieren kann, damit ich in mit einem Suchen-Button eine SQL-Abfrage starten kann, der wiederum die Abfrage mit den gewählten Einträgen aus der Listbox filtert.
              Nummerierte Variablen sind Quatsch. Gib Variablen immer aussagekräftige Namen.

              Desweiteren hat JavaScript-Code in HTML-Code nichts verloren. Schreibe JavaScript-Code ausschließlich in JavaScript-Dateien.

              Und was meinst du mit "Objekt in Variable" umwandeln? Was für ein Objekt? Und "in Variable umwandeln" ist etwas, das überhaupt keinen Sinn ergibt. Eine Variable wird erstellst und nicht von irgendwas umgewandelt.

              Kommentar


              • #8
                Hallo hellbringer

                Das mit dem Select * funktioniert im Zusammenhang mit $row1-2. Was die Namen betrifft, hast du recht. ich werde es am Schluss wenn alles funktioniert ändern.

                JavaScript Bemerkung nehme ich zur Kenntnis.

                Ich verstehe jedoch nicht wo ich Objekt in Variable geschrieben habe. Kannst du es vielleicht zitieren, so dass ich mit CTRL-F danach suchen kann?


                Danke für deine Hilfe!

                Kommentar


                • #9
                  Zitat von okanog Beitrag anzeigen
                  Das mit dem Select * funktioniert im Zusammenhang mit $row1-2. Was die Namen betrifft, hast du recht. ich werde es am Schluss wenn alles funktioniert ändern.
                  Es hat niemand behauptet, dass es nicht funktioniert. Es ist halt ganz schlecht und sollte nicht so gemacht werden. Vor allem nicht, wenn andere Leute (wie hier im Forum) den Code lesen müssen. Denn dadurch verschlechterst du die Lesbarkeit des Codes. Und wenn du Hilfe von anderen erwartest, solltest du das Gegenteil machen: Möglichst lesbaren und verständlichen Code schreiben.

                  Zitat von okanog Beitrag anzeigen
                  Ich verstehe jedoch nicht wo ich Objekt in Variable geschrieben habe. Kannst du es vielleicht zitieren, so dass ich mit CTRL-F danach suchen kann?
                  "wie ich das gewählte Objekt im Listbox in eine Variable umwandeln kann"

                  Kommentar


                  • #10
                    Hallo hellbringer

                    In der Tat, das tut mir leid.

                    Mit "wie ich das gewählte Objekt im Listbox in eine Variable umwandeln kann" meine ich folgendes:
                    Ich oder man hat in ja in einer Listbox verschiedene Werte (Beispiel: Verschiedene Schulklassen wie A1,B1,C1 usw.) und mit Objekt meinte ich diese Einträge die in dieser Listbox angezeigt werden. Man kann den Listbox aufklappen und einen der Werte auswählen, mir geht es darum wie ich diesen ausgewählten Wert in einer Variable verpacken kann.
                    So kann ich später in meinem Code definieren, dass eine WHERE-SQL-Abfrage mit dieser Variable durchgeführt werden kann.

                    Danke und herzliche Grüsse

                    Okanog

                    Kommentar


                    • #11
                      Zitat von okanog Beitrag anzeigen
                      Mit "wie ich das gewählte Objekt im Listbox in eine Variable umwandeln kann" meine ich folgendes:
                      Ich oder man hat in ja in einer Listbox verschiedene Werte (Beispiel: Verschiedene Schulklassen wie A1,B1,C1 usw.) und mit Objekt meinte ich diese Einträge die in dieser Listbox angezeigt werden. Man kann den Listbox aufklappen und einen der Werte auswählen, mir geht es darum wie ich diesen ausgewählten Wert in einer Variable verpacken kann.
                      Du musst da gar nichts machen. Der Browser schickt einen HTTP-Request an den Server, in dessen Header oder Body die Werte URL-kodiert übertragen werden. Am Webserver nimmt PHP den HTTP-Request und dekodiert diese Werte. Anschließend werden sie in das superglobaler Array $_GET oder $_POST geschrieben.

                      Grundlagen Forumularverarbeitung, siehe PHP-Handbuch.

                      Kommentar


                      • #12
                        hellbringer

                        Ich habe nun folgendes versucht:

                        PHP-Code:
                        <?php
                           
                        if(isset($_POST['suche_enter'])){
                           
                        $eingabe_systemnummer $_POST['ausgabe_systemnummer'];
                               echo 
                        $eingabe_systemnummer;
                        }
                        ?>


                        Systemnummer:
                        <select name="ausgabe_systemnummer">
                                   <option>Leer</option>
                                   <?php while($row1 mysqli_fetch_array($result1)):;?>
                                         <option value="<?php echo $row1[0];?>"><?php echo $row1[1];?></option>
                                            <?php endwhile;?>
                        </select>
                        Aber kann durch den echo $eingabe_systemnummer trotzdem die Variable nicht ausgeben... Bitte um HILFEE

                        Kommentar


                        • #13
                          Gibt es denn überhaupt ein Formular mit der Methode POST?

                          Und warum sind da immer noch nummerierte Variablen drin?

                          Kommentar


                          • #14
                            hellbringer

                            Ein Form mit der methode Post umfängt den Bereich:

                            PHP-Code:
                            <form action="#" method="post">
                            <input type="checkbox" name="chkbox" id="chk" onclick="showHide()" style="margin-left: auto" style="margin-right: auto";>
                            <label for="chk">Erweiterte Ansicht</label>
                            <br/>
                            <label class="hidden">

                            <br /><br />

                            <?php if(isset($_POST['suche_enter'])){
                            $eingabe_systemnummer $_POST['ausgabe_systemnummer'];
                            echo 
                            $eingabe_systemnummer; }
                            ?>

                            Systemnummer:
                            <select name="ausgabe_systemnummer">
                            <option>Leer</option>
                            <?php while($row1 mysqli_fetch_array($result1)):;?>
                            <option value="<?php echo $row1[0];?>"><?php echo $row1[1];?></option>
                            <?php endwhile;?>

                            </select>
                            </label>
                            </form>
                            Es kommt die folgende Fehlermeldung:
                            Undefined index: ausgabe_systemnummer on line 172 und auf der 172. Zeile befindet sich: ($eingabe_systemnummer = $_POST['ausgabe_systemnummer']


                            Hast du vielleicht ein Idee? Die nummerierten Variablen werde ich wie erwähnt am Schluss alles sauber abändern, so kann ich auch andere Tipps von den anderen Benutzern berücksichtigen. Ich will im Moment mich vom Ziel abweichen lassen. Danke für deine Bemühungen...

                            Kommentar


                            • #15
                              Zitat von okanog Beitrag anzeigen
                              [USER="42971"]

                              Die nummerierten Variablen werde ich wie erwähnt am Schluss alles sauber abändern, so kann ich auch andere Tipps von den anderen Benutzern berücksichtigen. Ich will im Moment mich vom Ziel abweichen lassen. Danke für deine Bemühungen...
                              Wir werkeln nicht an kaputtem Code herum.

                              Schalte das Error-Reporting ein und fange an zu debuggen, das sind Grundlagen und gehören nicht ins Form. Lies dazu einfach mal die Forumsregeln durch.

                              Des weiteren hast du nichts gelesen oder versucht umzusetzen. Von mir aus können wir hier zu machen, da Lernresistenz vermutet wird.

                              Kommentar

                              Lädt...
                              X