php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.01.2011, 18:33  
Neuer Benutzer
 
Registriert seit: 06.01.2011
Beiträge: 2
PHP-Kenntnisse:
Anfänger
dereinsteiger befindet sich auf einem aufstrebenden Ast
Standard Methodenübergabe Problem

Hallo
Ich hab hier ein kleines Problem. Ich möchte dynamisch einen Ajax case erzeugen. Das läuft auch, bis auf den Monatsnamen, der von der function gibmonat() kommt. Der wird dann nämlich zuerst ausgegeben, anstatt in den erzeugten Einträgen wo er hin soll. z.B.: ... = new Option(' -> Hier <- ', '1');
Der erzeugte Code:
Zitat:
DezemberJanuarFebruarM&auml;rzAprilcase "2010":
echo "obj.options[obj.options.length] = new Option('','12');"

break;

case "2011":
echo "obj.options[obj.options.length] = new Option('','1');"
echo "obj.options[obj.options.length] = new Option('','2');"
echo "obj.options[obj.options.length] = new Option('','3');"
echo "obj.options[obj.options.length] = new Option('','4');"

break;
PHP-Code:
      function ajaxmod(){                                            
         include(
"dbconnect.php"); 
         
$sql="SELECT EXTRACT(Year FROM Datum) AS jahr FROM arbeitszeit GROUP BY jahr";
         
$run mysql_query($sql);     
             if(
$run){   
                            if(
mysql_num_rows($run) == 0){
                                    return 
"Sorry. No records found in the database";                       
                            }
                            else {
                                   
                                while(
$arr mysql_fetch_array($run)){                                                                                              
                                  
$mopse .= "case \"".$arr['jahr']."\":";
                                  
$mopse .= "\n";
                                  
$sql2="SELECT EXTRACT(Month FROM Datum) AS monat FROM arbeitszeit WHERE EXTRACT(Year FROM Datum)=".$arr['jahr']." GROUP BY monat;";
                                  
$run2 mysql_query($sql2);
                                          if(
$run2){
                                            while(
$mops mysql_fetch_array($run2)){
                                                
                                                
$mopse .= "echo \"obj.options[obj.options.length] = new Option('"gibmonat($mops['monat'])."','".$mops['monat']."');\"\n";
                                                
                                            }
                                    
$mopse .= "\n";        
                                    
$mopse .= "break;\n\n";
                                        }
                                }
                                
                                echo 
$mopse;
                                
                             }
                           
                            
mysql_free_result($run);
                            
mysql_free_result($run2);
                            
mysql_close($connection); 
                                  
             }          
          
       } 
PHP-Code:
    function gibmonat($m){
                
            switch (
$m){
                case 
"01":
                    echo 
"Januar";
                    break;            
                case 
"02":
                    echo 
"Februar";
                    break;
                case 
"03":
                    echo 
"M&auml;rz";
                    break;
                case 
"04":
                    echo 
"April";
                    break;                
                case 
"05":
                    echo 
"Mai";
                    break;                
                case 
"06":
                    echo 
"Juni";
                    break;                
                case 
"07":
                    echo 
"Juli";
                    break;                
                case 
"08":
                    echo 
"August";
                    break;                
                case 
"09":
                    echo 
"September";
                    break;                
                case 
"10":
                    echo 
"Oktober";
                    break;                
                case 
"11":
                    echo 
"November";
                    break;                
                case 
"12":
                    echo 
"Dezember";
                    break;
            }
                                        
    } 
Vielleicht ein lächerlicher Fehler, aber ich wär für jeden Tipp dankbar
Bin noch etwas unerfahren da ich mich erst seit einem Monat mit php überhaupt beschäftige

Vielen Dank
Gruß derEinsteiger

Geändert von dereinsteiger (19.01.2011 um 20:02 Uhr).
dereinsteiger ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.01.2011, 20:35  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

statt echo in gibmonat() einfach return verwenden
du solltest im Zweifel immer return statt echo verwenden, gilt auch für ajaxmod() - andernfalls ist der Anwendungsfall sehr beschränkt (merkst du ja gerade). und ajaxmod() ist wirklich der nichtssagendste Name den du hättest wählen können ... merk dir mal, dass deine Funktionsnamen beschreiben sollen, was sie tun und bestenfalls noch was sie zurückgeben. Außerdem was soll das echo in $mopse .= "echo .."? Willst du auch noch eval() drüber laufen lassen? Mach dich mal mit JSON vertraut .. ne einizge Baustelle dein Code.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 19.01.2011, 20:37  
Erfahrener Benutzer
 
Registriert seit: 10.01.2010
Beiträge: 386
PHP-Kenntnisse:
Fortgeschritten
ChrisvA befindet sich auf einem aufstrebenden Ast
Standard

Ohne jetzt deinen Fehler entdeckt zu haben, möchte ich dir trotzdem man den Tipp ans Herz legen, dich mit Arrays zu beschäftigen. Dass würde deine ganze case-Sache auf 4 Zeilen reduzieren.

PS: Glaube ich habe den Fehler gefunden, JS kennt soweit ich das weiß keine Anweisung echo, die du momentan aber ausgibst.
ChrisvA ist offline   Mit Zitat antworten
Alt 01.02.2011, 01:18  
Neuer Benutzer
 
Registriert seit: 06.01.2011
Beiträge: 2
PHP-Kenntnisse:
Anfänger
dereinsteiger befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank für die Tipps!
Das mit return war schonmal ein Teil des Problems.
Und der Tipp mit Array bzw. JSON ist sehr hilfreich.
Wie es aussieht werd ich aber den kompletten Ansatz noch einmal überdenken müssen. :P
Jeder fängt mal klein an :P

Geändert von dereinsteiger (01.02.2011 um 01:28 Uhr).
dereinsteiger ist offline   Mit Zitat antworten
Alt 01.02.2011, 01:39  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

http://dev.mysql.com/doc/refman/5.5/...tion_monthname

Bei korrekt lokalisiertem mysqld kannst du auch von mysql direkt den Name aus dem Monat extrahieren.

Dein Case greift übrigens nicht, MySQL castet bei
Code:
SELECT EXTRACT( MONTH FROM '2009-06-02 01:02:03' )
auf integer und schneidet die führende 0 von 06 ab.
Code:
EXTRACT(MONTH FROM '2009-06-02 01:02:03')
---
6

results - 1 row
Was dir allerdings aufgefallen wär hättest du das SELECT mal testweise ausgegeben oder in phpMyAdmin getestet.

Caste das Funktions-Argument doch auf integer und spar dir das select und benutz die Zahl als Index für ein Array.

Deine Variablennamensgebung ist auch a la cart. Deine $mopse sind eigentlich $output's und deine $run's sind eigentlich $result's. Aber solange du da durchblickst ist das halb so wild
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.

Geändert von tr0y (01.02.2011 um 01:59 Uhr).
tr0y ist gerade online   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Kleines Problem mit Filtern von Code durch preg_replace BartTheDevil89 PHP Tipps 2008 2 20.11.2008 15:38
Ein kleines Join Problem (MySQL) susi85 Datenbanken 12 12.12.2007 20:00
Kleines problem mit meiner PHP Internetseite Clawhammer PHP Tipps 2008 2 24.10.2007 12:56
[Erledigt] Ein kleines Problem Datenbanken 2 11.01.2006 00:50
kleines Problem mit css layer Rotti HTML, Usability und Barrierefreiheit 0 08.12.2005 22:36
Sicher nur ein kleines Problem allerdings finde ich es nicht Datenbanken 8 30.10.2005 16:44
Kleines Problem Markus Biehl PHP Tipps 2005-2 7 16.10.2005 12:43
kleines Problem beim Login[Erledigt] PHP Tipps 2005-2 4 19.09.2005 18:25
mod_rewrite kleines problem -umschreiben url PHP Tipps 2005-2 2 21.07.2005 13:16
Kleines Problem mit einem String... MortakArtos PHP Tipps 2005 2 24.01.2005 10:42
kleines Problem mit >date< PHP Tipps 2004-2 4 11.12.2004 19:42
kleines Problem PHP Tipps 2004-2 2 05.12.2004 09:44
kleines Problem mit kleinem Rätsel PHP Tipps 2004 4 30.07.2004 18:34
Kleines Problem mit Upload-Script Pimbolie1979 PHP Tipps 2004 1 28.07.2004 11:53
n kleines problem PHP Tipps 2004 18 12.07.2004 21:13

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
methodenübergabe, arrays methodenübergabe, php select extract, echo \obj.options[obj.options.length], php obj.options, obj.options

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:53 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum