Problem bei MySQL-Ouput in DropDown-Select

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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; }
    ?>
    Last edited by KillUrMind; 17-07-2008, 13: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.

    Comment


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

      Comment


      • #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.

        Comment


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

          Comment


          • #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.

            Comment


            • #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

              Last edited by H2O; 17-07-2008, 14:53.
              Gruss
              H2O

              Comment


              • #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.

                Comment

                Working...
                X