SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Der CSS-Problemlöser

Der CSS-Problemlöser zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > HTML, CSS und JavaScript Help!
Hilfe Community Kalender Heutige Beiträge Suchen

HTML, CSS und JavaScript Help! Hier gibt es Hilfe zu HTML, CSS und JavaScript Problemen

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 20.01.2010, 11:53:41
AlexD AlexD ist offline
Junior Member
 
Registriert seit: Jun 2003
Beiträge: 186
Select dynamisch füllen

Hallo zusammen,

ich bin gerade dabei zwei Select-Felder zu machen, wo das 2. vom ersten abhängig ist.

Im groben geht es darum, ein User kann ein Jahr wählen und in der 2. Select-Box werden die Monate dann angezeigt in denen er läuferisch akiv war und Daten zur verfügung stehen.

Vor ein paar Jahren hat mir jemand sowas für mein Musik-Archiv fix und fertig programmiert. Ist natürlich toll, aber lerneffekt gleich null. So hab ich nun angefangen mir das langsam aufzubauen und alles entsprechend anzupassen.

Nun zu meinem Problem:
Beim IE7/8 sowie Safarie funktioniert es so wie es soll, nur FireFox3.x und Opera machen das nicht. Jetzt steh ich irgendwie auf dem Schlauch!!

Hier mal der Link um zu testen:
http://privatwebarea.dyndns.org/entw...eite/test2.php

Hier entsprechender Quellcode:

Java-Funktionen
Code:
// Object finden
function MM_findObj(n, d) { //v4.01
  var p,i,x;

  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
      d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
  }
  if(!(x=d[n])&&d.all) x=d.all[n];
  for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function build_options(f1, f2) {
  dat1 = f1;
  dat2 = MM_findObj(f2);
  opt = MM_findObj(dat1.value);
  // Alle Optionen in Box 2 entfernen
  var l = dat2.length;
  var x=0;
  while(x < l) {
    dat2.options[0] = null;
    ++x;
  }
  // Box 2 mit neuen Optionen f&uuml;llen
  if(opt) {
    var params = opt.value.split(";");
    var t = (params.length == 1) ? "Monat" : "Monate";
    var option = new Option("Bitte wählen ("+params.length+" "+t+")", "-1");
    dat2.options.add(option);
    var i=0;
    while(i < params.length) {
      var option = new Option(params[i], params[i]);
      dat2.options.add(option);
      ++i;
    }
  }
  // Keine Monate vorhanden
  else {
    var option = new Option("Bitte Monat wählen", "-1");
    dat2.options.add(option);
  }
}
kompletter PHP-Code, die Funktionen hab ich einfach zum testen in die gleiche Datei gepackt
PHP-Code:
<!doctype html public "-//W3C//DTD HTML 4.0 //EN"> 
<html>
<head>
       <title>Title here!</title>
       
<script language="javascript" type="text/javascript" src="./js/functions.js"></script>

</head>
<?php
function build_temp_options($user_id){
    include(
'./db_connect/connect_sql.php');
    
    
//$arr = array();

    
$result mysql_query("SELECT DISTINCT DATE_FORMAT(datum, '%Y') AS jahr
                                     FROM laufen_meintraining
                                    WHERE user_id = "
.$user_id."
                                   GROUP BY DATE_FORMAT(datum, '%Y')
                                   ORDER BY datum ASC"
,$db) or trigger_error(mysql_error($db));
            if(!
$result){ logfile('sql',error_get_last());}

                while(
$years mysql_fetch_array($result)){

                    
$sel_jahr .= "<option value=\"".$years['jahr']."\" ";
                    if(
$years['jahr'] == $jahr){ $sel_jahr .= " selected";}
                    
$sel_jahr .= ">".$years['jahr']."</option>";


                    
$result_2 mysql_query("SELECT DISTINCT DATE_FORMAT(datum, '%m') AS monat
                                     FROM laufen_meintraining
                                    WHERE user_id = "
.$user_id."
                                      AND DATE_FORMAT(datum, '%Y') = "
.$years['jahr']."
                                   GROUP BY DATE_FORMAT(datum, '%m')
                                   ORDER BY datum ASC"
,$db) or trigger_error(mysql_error($db));
                    if(!
$result_2){ logfile('sql',error_get_last());}
                    while(
$months mysql_fetch_array($result_2)){

                        
$arr[$user_id][$years['jahr']] .= $months['monat'].";";

              }
             }
             
             
$hidden "";
             
             foreach(
$arr AS $id => $user_id){

                 foreach(
$user_id AS $jahr => $monate){
                     
$monate ereg_replace(";$",""$monate);
                     
$hidden .= "<input type=\"hidden\" id=\"".$id."\" name=\"".$jahr."\" value=\"".$monate."\">";
                 }
             }
             
             return array(
$sel_jahr$hidden);
             
}

function 
build_month_option($year,$user_id=false){
    include(
'./db_connect/connect_sql.php');
    
    
$result mysql_query("SELECT DISTINCT DATE_FORMAT(datum, '%m') AS monat
                               FROM laufen_meintraining
                              WHERE user_id = "
.$user_id."
                                AND DATE_FORMAT(datum, '%Y') = "
.$year."
                           GROUP BY DATE_FORMAT(datum, '%m')
                           ORDER BY datum ASC"
,$db) or trigger_error(mysql_error($db));
                    if(!
$result){ logfile('sql',error_get_last());}
                    while(
$row mysql_fetch_array($result)){

                        
$opt .= '<option value="'.$row['monat'].'">'.$row['monat'].'</option>';

              }
   return 
$opt;
}


$_jahre build_temp_options(34);

if(
$_POST[dat1]){
    
$_monate build_month_option($_POST[dat1], $_POST[dat2]);
}
if(isset(
$_POST[dat1])){
    echo 
"Übergebene Daten => Jahr: ".$_POST[dat1]." Monat: ".$_POST[dat2];
}
?>
<body>
<form action="test2.php" name="form1" method="POST">
<?php echo $_jahre[1];?>
 <select name="dat1" onChange="build_options(this, 'dat2')" size="1">
  <option value="-1">Bitte w&auml;hlen</option>
  <?php echo $_jahre[0]; ?>
 </select>
 <br>
 <select name="dat2" size="1">
  <option value="-1">Bitte w&auml;hlen</option>
  <?php echo $_monate?>
 </select>

 <p><input type="submit" name="senden" value="senden"></p>
</form>
</body>
</html>
Hoffe Ihr könnt ein wenig Licht ins Dunkel bringen.

Gruß
Alex
Mit Zitat antworten
  #2  
Alt 20.01.2010, 17:52:50
AlexD AlexD ist offline
Junior Member
 
Registriert seit: Jun 2003
Beiträge: 186
AW: Select dynamisch füllen

Problem wurde bereits gelöst!!

Es war wohl ein kleiner Fehler mit großer Wirkung, wie so häufig bei solchen Dingen.

in der JS-Funktion wird nach "opt = MM_findObj(dat1.value);" gesucht, leider hab ich die ID meiner Hidden-Felder immer gleich mit der user_id deklariert.
Es gab also mehrere Elemente mit gleicher ID die dazu noch falsch ist.

Nun hab ich die Hidden-Felder richtigerweise mit dem "Jahr" als ID versehen.

Nun funktioniert alles wie es soll!!
Mit Zitat antworten
  #3  
Alt 20.01.2010, 20:07:39
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 55
Beiträge: 1.044
AW: Select dynamisch füllen

Zitat:
Zitat von AlexD Beitrag anzeigen
Problem wurde bereits gelöst!!

Es war wohl ein kleiner Fehler mit großer Wirkung, wie so häufig bei solchen Dingen.

in der JS-Funktion wird nach "opt = MM_findObj(dat1.value);" gesucht, leider hab ich die ID meiner Hidden-Felder immer gleich mit der user_id deklariert.
Es gab also mehrere Elemente mit gleicher ID die dazu noch falsch ist.

Nun hab ich die Hidden-Felder richtigerweise mit dem "Jahr" als ID versehen.

Nun funktioniert alles wie es soll!!
Dann hattest diesmal ja einen richtig großen Lernerfolg.
Mit Zitat antworten
  #4  
Alt 21.01.2010, 11:18:12
AlexD AlexD ist offline
Junior Member
 
Registriert seit: Jun 2003
Beiträge: 186
AW: Select dynamisch füllen

Kann man wohl so sagen! ;)
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

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

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Ausgabe wird nicht angezeigt Extremefall PHP Grundlagen 9 17.12.2009 08:49:45
Tabelle dynamisch mit Bildern füllen + URL Der_Martin PHP Grundlagen 1 13.02.2007 22:17:22
Mittels Select Feld eine Textarea füllen hoschy PHP für Fortgeschrittene und Experten 1 26.10.2005 23:15:15
Listbox dynamisch füllen Nimsaj PHP für Fortgeschrittene und Experten 3 14.07.2003 17:29:00
Listbox dynamisch füllen jscholtysik PHP Grundlagen 3 26.02.2003 17:00:16


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:06:07 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt