onchange und php aktualisierungsproblem

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

  • onchange und php aktualisierungsproblem

    Hallo zusammen,

    ich habe ein kleines aktualisierungsproblem mit onchange und php:

    ich habe ein Formular das aus 2 Select Boxen besteht. Der Inhalt der Boxen wird aus einer Datenbank herausgelesen.

    Der Inhalt der 2. Box ist abhängig von dem was in der 1. gewählt wurde.

    Sobald ich einen Eintrag aus der 2. Box auswähle erhalte ich einen Hinweistext.

    Der Inhalt der 2. Box wird erst durch auswahl eines Elementes aus der 1. Box sichtbar!

    Nun funktioniert folgender Fall nicht:

    ich wähle etwas aus der 1. Box, danach aus der 2. Box. Darauf erscheint mein Hinweistext.

    Nun wähle ich wieder aus der 1. Box ein anderes Element und der Hinweistext verschwindet nicht!!!

    Und an der Stelle komme ich nicht mehr weiter!

    Hier mal noch mein Script:

    PHP-Code:
    <?
        require("connect2.inc.php");
    ?>
    <html>
        <head>
            <title>Anmeldung für Schulungen</title>
            <link rel="stylesheet" type="text/css" href="styles.css">
        </head>
        <body class="text_normal">
        <h1 class=text_Hauptüberschrift>
            Anmeldung für Schulungen
        </h1>
            <form action="<? echo $PHP_SELF ?>" method="post">
                <table width=75%>
                    <tr>
                        <td width=20%>System</td>
                        <td>
                <?php
                
    /*
                Auslesen der Systeme
                Damit jedes System nur 1x vorkommt: group by 
                
                Wenn $system gesetzt ist wird der Eintrag des Selectfeldes 
                als Selektiert makiert, der mit dem Inhalt von $system übereinstimmt
                */
                
    $sql=mysql_query("SELECT system, id from systeme group by system");
                

                echo 
    "<select name='system' onChange=submit()>";
                    echo 
    "<option>Bitte wählen Sie ein System aus</option>";
                    While(
    $res=mysql_fetch_array($sql)){
                        
                        echo 
    "<option value='$res[1]' ";
                        
                            
                                if(
    $system==$res[1])
                                {
                                    echo 
    "selected";
                                }else{}    
        
                        
                        echo 
    ">$res[0]</option>";
                         }
                         
                     
    ?>
                </select>
                        </td>
                    </tr>
                    <tr>
                        <td width=20%>Schulung</td>
                        <td>
                <?php
                
    /*
                Auslesen der Schulungen zum gewählten System
                            
                Wenn $schulung gesetzt ist wird der Eintrag des Selectfeldes 
                als Selektiert makiert, der mit dem Inhalt von $schulung übereinstimmt
                */
                
    $sql1=mysql_query("SELECT schulungen.schulung, schulungen.beschreibung, 
    schulungen.id from schulungen 
    INNER JOIN systeme ON systeme.id=schulungen.system_id 
    WHERE systeme.id='
    $system'");
                echo 
    mysql_error();
                echo 
    "<select name='schulung' onChange=submit()>";
                    echo 
    "<option>Bitte wählen Sie eine Schulung aus</option>";
                    While(
    $res1=mysql_fetch_array($sql1)){
                        
                        echo 
    "<option value='$res1[2]' ";
                        
                            if(
    $schulung)
                            {
                                if(
    $schulung==$res1[2])
                                {
                                    echo 
    "selected";
                                }    
                            }
                        
                        echo 
    ">$res1[0]</option>";
                        
                        
    $text[$system]=$res1[1];
                         }
                     echo 
    "</select>";
                     
    ?>
                             </td>
                         </tr>
                         <tr>
                             <td colspan=2>
                     <?
                     
                     /*
                     Abfrage oder die Variable $schulung gesetzt ist. 
                     Wenn ja, wird die Beschreibung zu der Schulung die in $schulung steht
                     aus der DB herausgelesen.
                                      
                     */
                     echo "Details zur Schulung:";
                     echo "<br><br>";
                     if($schulung!="Bitte wählen Sie eine Schulung aus"){
                         
                         $sql2=mysql_query("SELECT beschreibung from schulungen 
    where schulungen.id='$schulung'");
                         $res2=mysql_fetch_array($sql2);
                         $text=nl2br($res2[0]);
                         echo "<span class=text_klein>";
                             echo $text;
                         echo "</span>";
                     ?>
                             </td>
                         </tr>
                         <tr>
                             <td colspan=2>
                     <?
                     /*
                     Zählung der Schulungen und Ausgabe ob eine/mehrere 
    Schulung/en angeboten wird/werden
                     */
                     echo "<span class=text_klein>";
                     $sql3=mysql_query("SELECT count(schulung_id) FROM angebot_schulungen 
    where schulung_id='$schulung'");
                     $res3=mysql_fetch_array($sql3);
                     
                     echo "Für diese Schulung bieten wir momentan ";
                         if(!$res3[0])
                         {
                             echo "keine Termine";
                         }elseif($res3[0]=="1")
                         {
                             echo "einen Termin";
                         }else
                         {
                             echo "mehrere Termine";
                         }
                     echo " an.";
                     echo "</span>";
                     }

                         
                     
                     
                     ?>
                        </td>
                    </tr>
                </table>
            </form>
        </body>
    </html>
    wenn sich jemand den Spass anschauen will auf www.roemario.de/test ist der ganze Spass zu finden.

    Ich hoffe auf eure Hilfe

    Gruß

    Mario

    edit: habe gerade festgestellt, wenn das Script gestartet ist, wird auch irgend so ein Schwachsinn angezeigt obwohl ich das nicht will
    Nichts ist schwerer und
    nichts erfordert mehr Charakter
    als sich im offenen Gegensatz
    zu seiner Zeit zu befinden und
    laut zu sagen
    NEIN!!

  • #2
    Erstens hat dein Problem mit Java Script zu tun, zweitens läuft die Seite bei mir tadellos...
    PHP Code Schnipsel

    Kommentar


    • #3
      Re: onchange und php aktualisierungsproblem

      Original geschrieben von roemario
      ich wähle etwas aus der 1. Box, danach aus der 2. Box. Darauf erscheint mein Hinweistext.

      Nun wähle ich wieder aus der 1. Box ein anderes Element und der Hinweistext verschwindet nicht!!!
      du wählst aus der ersten box etwas aus -> formular wird abgeschickt.
      in der zweiten box war aber schulung xy ausgewählt - also wird dieser wert auch wieder mit abgesendet.

      an der stelle, wo du den hinweistext ausliest, schaust du nur nach, ob für schulung ein wert übergeben wurde - und das ist ja der fall.

      clientseitige lösung könnte also beispielsweise sein, dass du, wenn onchange auf box1 stattfindest, vor dem abschicken des formulares noch die auswahl in box2 wieder zurücksetzt auf den ersten eintrag.


      btw: programmiere das ganze doch mal "ordentlich", so das die wertübergabe auch bei register_globals=off funktioniert.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        und wie kann ich das machen?
        Zuletzt geändert von roemario; 07.04.2005, 15:42.
        Nichts ist schwerer und
        nichts erfordert mehr Charakter
        als sich im offenen Gegensatz
        zu seiner Zeit zu befinden und
        laut zu sagen
        NEIN!!

        Kommentar


        • #5
          mit $_SERVER["PHP_SELF"] statt $PHP_SELF und mit $_POST - oder $_GET["feldname"] statt $feldname
          PHP Code Schnipsel

          Kommentar


          • #6
            danke,

            das wusste ich noch nicht.

            hat mir noch jemand eine Lösung für den onChange Part, dass ich die variable vorher lösche? ich blick das nicht.

            danke
            Nichts ist schwerer und
            nichts erfordert mehr Charakter
            als sich im offenen Gegensatz
            zu seiner Zeit zu befinden und
            laut zu sagen
            NEIN!!

            Kommentar


            • #7
              Re: Re: onchange und php aktualisierungsproblem

              Original geschrieben von wahsaga
              clientseitige lösung könnte also beispielsweise sein, dass du, wenn onchange auf box1 stattfindest, vor dem abschicken des formulares noch die auswahl in box2 wieder zurücksetzt auf den ersten eintrag.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                danke,

                theoretisch bin ich auch schon so weit gekommen nur praktisch leider noch nicht. ich bastle da jetzt schon den ganzen morgen dran rum und nix funktiniert.

                ich hab schon an zig stellen die variable schulung leer gemacht oder auch mit nem anderen text beschrieben. mit dem erstaunenden resultat das alles gleich geblieben ist.

                hat mir vielleicht mal jemand einen tipp?
                Nichts ist schwerer und
                nichts erfordert mehr Charakter
                als sich im offenen Gegensatz
                zu seiner Zeit zu befinden und
                laut zu sagen
                NEIN!!

                Kommentar


                • #9
                  Hi,

                  ich will ja nicht nerven, aber ich habe jetzt alle 6 Seiten die ich über die Suche mit onchange gefunden habe durchgesucht und leider keine Erklärung für mein Problem gefunden.

                  Im lieben netten Internet ist leider auch nichts zu finden. Möglicherweise liegt es aber auch daran, dass ich nicht genau weis wonach ich suchen soll.

                  Kann mir bitte jemand sagen, wie ich die Variable zurücksetze??? an welcher Stelle muss ich da was einbinden? (ich denke mal ich muss dann wahrscheinlich $schulung="" machen).

                  Danke für eure Hilfe

                  Mario
                  Nichts ist schwerer und
                  nichts erfordert mehr Charakter
                  als sich im offenen Gegensatz
                  zu seiner Zeit zu befinden und
                  laut zu sagen
                  NEIN!!

                  Kommentar


                  • #10
                    eine überlegung wäre einfach die untere Auswahl (select) in eine eigene <form> zu stecken, so wird, wenn man bei der ersten etwas neues auswählt das untere nicht gesendet, da die untere von der oberen unabhängig ist! musst in der unteren form nur noch ein hidden-feld einfügen wo der obere Wert gespeichert wird, sonst wird der erste ja, wie umgekehrt, auch "gelöscht".


                    Phil

                    Kommentar


                    • #11
                      was gegen simples clientseitiges zurücksetzen der zweiten box beim ändern der auswahl in der ersten spricht, sehe ich immer noch nicht.
                      (aber noch mal wiederholen werd' ich's jetzt sicher nicht ...)
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Danke PhilW, dein Vorschlag hat geklappt.

                        aber anscheinend muss es ja noch eine "einfachere" Lösung geben, die ich aus der Anweisung aber leider nicht selbst lösen kann:


                        clientseitige lösung könnte also beispielsweise sein, dass du, wenn onchange auf box1 stattfindest, vor dem abschicken des formulares noch die auswahl in box2 wieder zurücksetzt auf den ersten eintrag.
                        @wahsaga: soll ich dem User sagen, er soll das manuell ändern? Kannst du mir bitte nicht deine näheren Gedanken dazu bekannt machen? Ich komm einfach nicht dahinter was du mir damit sagen willst!!

                        solltest du mir nicht helfen wollen aktzepier ich das natürlich fände es aber sehr schade wenn man sein wissen für sich behält.

                        Gruß Mario
                        Nichts ist schwerer und
                        nichts erfordert mehr Charakter
                        als sich im offenen Gegensatz
                        zu seiner Zeit zu befinden und
                        laut zu sagen
                        NEIN!!

                        Kommentar


                        • #13
                          Original geschrieben von roemario
                          soll ich dem User sagen, er soll das manuell ändern?
                          ich sagte, du sollst das ändern!
                          und da ich nicht davon ausgehe, dass du bei jeder benutzung der seite neben dem user sitzt, habe ich damit wohl gemeint, dass du das per javascript machen sollst.

                          Kannst du mir bitte nicht deine näheren Gedanken dazu bekannt machen?
                          das hab ich doch bereits.

                          solltest du mir nicht helfen wollen aktzepier ich das natürlich fände es aber sehr schade wenn man sein wissen für sich behält.
                          und ich finde es schade, wenn man hier simple tipps gibt, aber andere leute trotzdem noch so tun, als spräche man chinesisch.


                          onChange ein submit() auszuführen, kriegst du doch offenbar schon hin - wo ist denn dann das problem, davor noch kurz die zweite selectbox wieder auf ihren initialwert zu setzen, um eine eventuell dort noch von der vorhergehenden seite stammende auswahl wieder rückgängig zu machen?
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar

                          Lädt...
                          X