Ankündigung

Einklappen
Keine Ankündigung bisher.

Hilfe beim zufügen von option zu select

Einklappen

Neue Werbung 2019

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

  • Hilfe beim zufügen von option zu select

    Hallo,


    bei diesem Beispiel wird, wenn Wert vom Parameter wahl im array gefunden wird, als option ausgegeben... leider zweimal, einmal als selected ein anderes mal als nicht selected. ( wenn nicht, springe dann zur DB)
    Ich habe versicht schon die erste echo Ausgabe zu löschen: select hat dann nur einen <option> die anderen options kommen nicht.
    Sieht jemand hier einen Fehler?

    Code:
    <?php
    $search = $_REQUEST['wahl'];
    $ergebnis = 0;
    
    if ( isset($_REQUEST['wahl'])){
    	
       
        foreach($array AS $key => $value) { 
        echo '<option value="'.$key.'" '. ($key == $search ? ' selected' : '') .'>'.$value.'</option>';
        if ($key ==$search){
        echo '<option value="'.$key.'" '. ($key == $search ? ' selected' : '') .'>'.$value.'</option>';
        $ergebnis = 1;
       
      	} 
      }
      	if($ergebnis != 1){
      	
      	readFromDB();
      	
        }
    }
    
    ?>


  • #2
    Dein Skript ist kompletter Mist, sorry.
    Außerdem benutz bitte [ php ]-Tags, nicht den [ code ]-Tag:

    PHP-Code:
    <?php
    $ergebnis 
    0;
    if (isset(
    $_REQUEST['wahl'])) {
      foreach(
    $array AS $key => $value) {
        if (
    $key == $_REQUEST['wahl']) {
          
    $selected ' selected="selected"';
          
    $ergebnis 1;
        } else {
          
    $selected '';
        }
        
    printf('<option%s>%s</option>'$selected$value);
        if(
    $ergebnis == 0) {
          
    readFromDB();
        }
      }
    }
    ?>
    Das sind aber einfach nur Logik-Fehler, haben mit PHP nichts zu tun. Geh dein Skript doch einfach mal selbst Zeile für Zeile logisch durch. Bei der Zeilenanzahl sollte das möglich sein

    Kommentar


    • #3
      warum findest Du, dass es Mißt ist?

      ich habe nach Syntax von ($key == $search ? ' selected' : '') gesucht,

      kannSt DU mir es erklären, wie ich es lesen kann: wenn key ist gleich search dann selected und wenn nicht, ?

      ich dachte, dass ich einfach schreibe, wenn nicht dann readFromDB();
      bin mir aber nicht des Syntaxs sicher, kann ich es in diese () zuzufügen?

      Danke,
      seven-12

      Kommentar


      • #4
        ich weiss nicht, aber Dein Skript hat Fehler,,,

        Kommentar


        • #5
          Warum, weil du nicht verstehst was es macht und darum blödsinn drinne steht.
          - isset() prüft ob eine Variable ungleich NULL ist, warum weist du dann $search eine Variable zu, auf die das durchaus zutreffen könnte ( $_REQUEST['wahl'] ) und testest sie danach auf ungleich NULL?
          - du fragst 3x ab, ob $key == $search ist, 1x langt

          Das ? : ist ein if-else Konstrukt.
          Bedingung ? Aktion-wenn-Bedingung-wahr : Aktion-wenn-Bedingung-unwahr.

          Deine readFromDB-Funktion kenne ich nicht.
          Lern aber erstmal die Grundlagen und schau dir das Tutorial an:
          http://tut.php-q.net

          Edit: ja habs korrigiert

          Kommentar


          • #6
            Hallo Zergling,

            glaub mir, ich lerne , vielleicht langsam aber ich lerne

            Vielen Dank,
            seven-12

            Kommentar


            • #7
              Zergling, ich habe noch 2 Fragen,

              kann ich also wenn die Bedingung nicht wahr ist, die Funktion so einfügen?
              echo '<option value="'. $key .'"'. ($key == $search ? ' selected' : ' readFromDB();') .'>'. $value .'</option>'."\n";

              readFromDB dazu:

              Code:
              function readFromDB()
              {
                  global $db, $table, $region, $search2, $search, $name;
                
                  $anfrage = " SELECT ".$name." FROM ".$table." WHERE ".$region." = ".$search2;
                
                  $dbc = $db->openDB();
                  $stmt = OCIParse($dbc, $anfrage);
                   if(OCIExecute($stmt)){
                  	$i = 0;
                  	while(OCIFetchInto($stmt, $zeile, OCI_RETURN_NULLS)){
                  		
              		$regcode[$i] = $zeile[0]; 
                  		    	}
                  echo '<option value="'.$search.'" selected>'. $regcode[$i].'</option>';
                  		$dbc = $db->closeDB($dbc);
                  }
                
                  else
                  {
                  	die("FEHLER: Datenbankanfrage konnte nicht ausgeführt werden!");
                  }
              }
              es wird aber so die option mit dem Wert aus DB nicht angezeigt

              Danke Dir sehr!!!:
              seven-12

              Kommentar


              • #8
                Hey,

                es funktioniert,

                es lag an dem Syntax, ich habe so gemacht:
                $funktion = readFromDB();

                echo '<option value="'. $key .'"'. ($key == $search ? ' selected' : ' .$funktion') .'>'. $value .'</option>'."\n";
                Ich füge es am Anfang der Liste von EInträgen hinzu. Wie könnte ich es noch sortieren? mit asort von $array, ich probiere, falls es nicht kallpt, melde ich mich bei Euch wieder,

                Vielen Dank,
                seven-12

                Kommentar


                • #9
                  gut.

                  Kommentar


                  • #10
                    Hallo Zergling,

                    ich habe versucht:

                    PHP-Code:
                    <?php
                     $array_sorted 
                    asort($array);
                      foreach(
                    $array_sorted AS $key => $value) { 
                        echo 
                    '<option value="'$key .'"'. ($key == $search ' selected' '.$funktion.') .'>'$value .'</option>'."\n"
                      } 
                    ?>
                    ich bekomem dabei die Fehlermeldung:
                    Invalid argument supplied for foreach(), es hat sich nichts geändert,

                    die Einträge werden nicht sortiert

                    Danke eUCH;

                    SEVEN-!"

                    Kommentar


                    • #11
                      Guck ins Manual:
                      http://de3.php.net/asort
                      void asort ( array array [, int sort_flags] )

                      Der Rückgabewert ist void, du erwartest aber deinen Array.
                      Den Array den du an asort() übergibst, wird direkt intern geändert (sortiert).

                      Kommentar

                      Lädt...
                      X