Problem bei MySQL-Ouput in DropDown-Select

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

  • Problem bei MySQL-Ouput in DropDown-Select

    Aloha,
    ich habe ca. 500 Kontakte in einer DB gespeichert und mir einige je nach Länderauswahl ausgeben lassen. Alle Kontakte haben zu Testzwecken "Germany" als Land zugeordnet bekommen.
    Mein Script funktioniert soweit, nur gibt er mir immer neben "Germany" noch einen weiteren, leeren Wert aus. Vielleicht kann mir ja jemand sagen, wo der Hase im Pfeffer begraben liegt?!

    PHP-Code:
    <?php 
    include ("checkuser.php"); 
    require(
    "connect.inc.php"); 

    selectCountry($_GET['value']);  

    function 
    option($value,$preselectedCountry)  
    {     
       
    $optionOutput .= '<option value="' $value '" ';     
       if (
    $value == $preselectedCountry) {         
          
    $optionOutput .= 'selected';     
       }     
       
    $optionOutput .= '>' $value '</option>';     
       print 
    $optionOutput
    }   

    function 
    selectCountry($preselectCountry)  
    {     
       
    $selectorOutput .= '<select name="country" id="country" onchange="selectCity();">'                             
                       
    '<option value="default">Please select a country</option>';     
       print 
    $selectorOutput;     
       
    $countrySelect "SELECT DESTINCT country FROM contacts ORDER BY country DESC";     
       
    $countrySelectResult mysql_query($countrySelect) or die(mysql_error());     
       
    $countryCount count(mysql_num_rows($countrySelectResult));     
       print 
    '<script language="javascript" type="text/javascript">alert(\'' .  $countryCount '\');</script>'// Output: 1     
       
    $i 0;     
       while (
    $countrySelectionData mysql_fetch_array($countrySelectResultMYSQL_NUM) and $i <= $countryCount) {
          
    option($countrySelectionData[$i],$preselectedCountry);         
          
    $i++;     
       }     
       
    $selectorOutput '</select>';     
       print 
    $selectorOutput; }
    ?>
    Zuletzt geändert von KillUrMind; 17.07.2008, 14:32.

  • #2
    Sehr wüster und redundanter Code.

    Mach doch einfach mal ein paar Testausgaben (echo 'hallo') um herauszufinden in welcher Zeile die leere(?) Ausgabe gemacht wird.

    Kommentar


    • #3
      Der SQL-Befehlt hat sich als fehlerhaft erwiesen. Nun funktioniert es.
      Wieso ist der Code wüst?

      Kommentar


      • #4
        Du verwendest jede menge variablen, die du nur ein einziges mal, unmittelbar nach der Definition ausgibst und danach nicht mehr verwendest. Da kannst du dir die Variablen direkt sparen und die Werte unmittelbar ausgeben. Das macht deinen Code schlanker und übersichtlicher.

        Kommentar


        • #5
          Alles klar, hast recht. Ich werde es ändern.

          Kommentar


          • #6
            PHP-Code:
            <?php

            require_once 'checkuser.php'
            require_once 
            'connect.inc.php'

            echo 
            selectCountry($_GET['value']);  



            function 
            option($value,$preselected)  
            {

                return 
            $output.= '<option value="' $value '"' . ($value == $preselected ' selected="selected"' '') . '>' $value '</option>';

            }

            function 
            selectCountry($preselected)
            {

                
            $output.= '<select name="country" id="country" onchange="selectCity();">';
                
            $output.= '<option value="default">Please select a country</option>';
                
                
            $sql 'SELECT DESTINCT country FROM contacts ORDER BY country DESC';
                
            $res mysql_query($sql
                        or die(
            mysql_error());
                
                
            // testausgabe (war übrigens vorher ziemlicher Unsinn!!!)
                
            echo '<script language="javascript" type="text/javascript">alert(\'' .  mysql_num_rows($res) . '\');</script>';
                
                while(
            $row mysql_fetch_assoc($res))
                    
            $output.= option($row['country'],$preselected);

                
            $output.= '</select>';

                return 
            $output;

            }

            ?>
            Sieht doch irgendwie viel übersichtlicher aus, wobei sich jetzt die Frage stellt, ob es überhaupt Sinn macht, das ganze in (zwei) Funktionen zu packen.

            Kommentar


            • #7
              Kannst du noch erklären, was du mit folgendem beabsichtigst:
              PHP-Code:
              $countryCount count(mysql_num_rows($countrySelectResult)); 
              Wird dir garantiert immer 1 ausgeben.
              EDIT:

              Vergiss es, ich habe TobiaZ's letzten Beitrag übersehen

              Zuletzt geändert von H2O; 17.07.2008, 15:53.
              Gruss
              H2O

              Kommentar


              • #8
                Original geschrieben von H2O
                Vergiss es, ich habe TobiaZ's letzten Beitrag übersehen
                Naja, ich hab ja nur nen kommentar reingeschrieben, der wäre mit sicherheit nach dem Copy&Paste-Prinzip ignoriert worden.

                Kommentar

                Lädt...
                X