php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #16 (permalink)  
Alt 29-03-2006, 01:05
chefdesigner
 Registrierter Benutzer
Links : Onlinestatus : chefdesigner ist offline
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 257
chefdesigner ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also, das ist der Code rund um Zeile 186, es wird also nur die Funktion aufgerufen.

Code:
<script type="text/javascript">
<!--
    update_drp2()
-->
</script>
Die Funktion sieht wie folgt aus:
Code:
function update_drp2() {
    var x=document.frm_auswahl.drp2.length;
    for(var n=0; n<x; n++)
        document.frm_auswahl.drp2.options[0]=null;
    for(n=0; n<liste2.length; n++) {
        if(liste2[n][2]==document.frm_auswahl.drp1.value) {
            var NeuerEintrag=new Option(liste2[n][1], liste2[n][0]);
            document.frm_auswahl.drp2.options[document.frm_auswahl.drp2.length]=NeuerEintrag;
        }
    }
}
__________________
Das Genie überblickt das Chaos!

Wer Rechtschreibfehler findet, darf sie behalten!
Mit Zitat antworten
  #17 (permalink)  
Alt 29-03-2006, 01:14
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Teste mal in einem Browser mit besserer Javascript-Konsole, bspw. dem Firefox.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #18 (permalink)  
Alt 29-03-2006, 09:20
chefdesigner
 Registrierter Benutzer
Links : Onlinestatus : chefdesigner ist offline
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 257
chefdesigner ist zur Zeit noch ein unbeschriebenes Blatt
Post

Also, ich hab's mal im Firefox getestet und mir die JavaScript-Konsole aufgerufen. Liefert folgende drei Fehlermeldungen:

Fehler: missing ; before statement
Quelldatei: http://www.meinserver.de/meinedatei.php
Zeile: 1294, Spalte: 20
Quelltext:
liste2[427][2]=Hewlett Packard;

Fehler: update_drp2 is not defined
Quelldatei: http://www.meinserver.de/meinedatei.php
Zeile: 1386

Fehler: update_drp2 is not defined

Code:
<script type="text/javascript">
<!--
    update_drp2()            // Zeile 1386
-->
</script>
Ich nehme mal an, es hat auch was mit dem Leerzeichen zwischen Hewlett und Packard zu tun, oder?
__________________
Das Genie überblickt das Chaos!

Wer Rechtschreibfehler findet, darf sie behalten!
Mit Zitat antworten
  #19 (permalink)  
Alt 29-03-2006, 12:40
chefdesigner
 Registrierter Benutzer
Links : Onlinestatus : chefdesigner ist offline
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 257
chefdesigner ist zur Zeit noch ein unbeschriebenes Blatt
Talking

Okay, ich hab den Fehler jetzt gefunden. Hier nochmal der komplette, funktionsfähige Code:

Hier das JavaScript für den <head>-Tag:
Code:
<script type="text/javascript">
<!--
PHP-Code:
<?php
// abhängiges Kombifeld erzeugen
    
$rs mysql_query("SELECT * FROM `datenbank1`");
    
$rows mysql_num_rows($rs);
    echo 
"\tvar liste2=new Array($rows)\n"
    
"\tfor(var i=0;i<liste2.length;i++)\n"
    
"\t\tliste2[i]=new Array(2);\n";
    
$n=0;
    while(
$zeile mysql_fetch_assoc($rs)) {
        echo 
"\tliste2[$n][0]=".$zeile['id'].";\n"
        
"\tliste2[$n][1]='".$zeile['modell']."';\n"
        
"\tliste2[$n][2]='".$zeile['hersteller']."';\n";
        
$n++;
    }
?>
Code:
function update_drp2() {
    var x=document.frm_auswahl.drp2.length;
    for(var n=0; n<x; n++)
        document.frm_auswahl.drp2.options[0]=null;
    for(n=0; n<liste2.length; n++) {
        if(liste2[n][2]==document.frm_auswahl.drp1.value) {
            var NeuerEintrag=new Option(liste2[n][1], liste2[n][0]);
            document.frm_auswahl.drp2.options[document.frm_auswahl.drp2.length]=NeuerEintrag;
        }
    }
}
-->
</script>
Und hier der Code für den <body>-Tag:
Code:
<form name="frm_auswahl">
    <select name="drp1" size="1" onChange="update_drp2()">
PHP-Code:
    <?php
        $rs 
mysql_query("SELECT * FROM `datenbank1` GROUP BY hersteller");
        while(
$zeile mysql_fetch_assoc($rs)) {
            echo 
"<option value=\"".$zeile['hersteller']."\">".$zeile['hersteller']."</option>\n";
        }
    
?>
Code:
    </select>
    <select name="drp2" size="1">
        <option>Start</option>
    </select>
</form>
<script type="text/javascript">
<!--
    update_drp2()
-->
</script>
__________________
Das Genie überblickt das Chaos!

Wer Rechtschreibfehler findet, darf sie behalten!
Mit Zitat antworten
  #20 (permalink)  
Alt 29-03-2006, 12:42
closure
 Master
Links : Onlinestatus : closure ist offline
Registriert seit: Mar 2006
Beiträge: 796
closure ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi,

schön das es funktioniert aber wo ist die alternative für
menschen die sich trauen jscript auszuschalten ?

greets
__________________
(((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")
Mit Zitat antworten
  #21 (permalink)  
Alt 30-03-2006, 20:09
chefdesigner
 Registrierter Benutzer
Links : Onlinestatus : chefdesigner ist offline
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 257
chefdesigner ist zur Zeit noch ein unbeschriebenes Blatt
Question

Habe noch ein weiteres Problem, beim Ausbauen des Formulars, ist mir aufgefallen, dass beim Auswählen eines Herstellers im zweiten Selectfeld gleich das erste Modell angezeigt wird.
Ich hätte jedoch gerne, dass dort "Modell auswählen" steht. Grund dafür ist, dass der User mehr oder weniger dazugezwungen werden soll, ein Modell auszuwählen. Da sich die Länge des Selectfeldes nach dem längsten Eintrag richtet, wäre auch das Problem gelöst.

Kann mir jemand sagen, wie ich "Modell auswählen" als ersten und damit vorausgewählten Inhalt realisiere?

Code:
function update_drp2() {
   var x=document.frm_auswahl.drp2.length;
   var hersteller = document.frm_auswahl.drp1.value;
      if(hersteller=="Hersteller auswählen") {
         document.frm_auswahl.drp2.value="Modell auswählen";
      }
      else{
         for(var n=0; n<x; n++)
         document.frm_auswahl.drp2.options[0]=null;
         for(n=0; n<liste2.length; n++) {
            if(liste2[n][2]==document.frm_auswahl.drp1.value) {
               var NeuerEintrag=new Option(liste2[n][1], liste2[n][0]);
               document.frm_auswahl.drp2.options[document.frm_auswahl.drp2.length]=NeuerEintrag;
            }
         }
      }
}
__________________
Das Genie überblickt das Chaos!

Wer Rechtschreibfehler findet, darf sie behalten!
Mit Zitat antworten
  #22 (permalink)  
Alt 30-03-2006, 20:14
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

nun, du siehst ja selbst, welche zwei zeilen einen neuen eintrag erzeugen (oder?).

dann setze diese zeilen vor die for-schleife und passe die parameter an.
wichtig ist noch, dass du die for-schleife dann ab 1 laufen lässt (weil 0 dann mit der "einladung" vorbelegt ist).
Mit Zitat antworten
  #23 (permalink)  
Alt 30-03-2006, 21:43
chefdesigner
 Registrierter Benutzer
Links : Onlinestatus : chefdesigner ist offline
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 257
chefdesigner ist zur Zeit noch ein unbeschriebenes Blatt
Talking

Okay, das wollte ich hören. Hatte das schon mal versucht, aber irgendwie musste da wohl ein Fehler drin gewesen sein. Jetzt funktionierts.

Code:
function update_drp2() {
   var x=document.frm_auswahl.drp2.length;
   var hersteller = document.frm_auswahl.drp1.value;
      if(hersteller=="Hersteller auswählen") {
         document.frm_auswahl.drp2.value="Modell auswählen";
      }
		else{
         for(var n=1; n<x; n++)
         var NeuerEintrag=new Option('  - Modell auswählen -  ','Modell auswählen');
         for(n=1; n<liste2.length; n++) {
            if(liste2[n][2]==document.frm_auswahl.drp1.value) {
               var NeuerEintrag=new Option(liste2[n][1], liste2[n][0]);
               document.frm_auswahl.drp2.options[document.frm_auswahl.drp2.length]=NeuerEintrag;
               document.frm_auswahl.drp2.disabled=false;
            }
         }
      }
}
__________________
Das Genie überblickt das Chaos!

Wer Rechtschreibfehler findet, darf sie behalten!
Mit Zitat antworten
  #24 (permalink)  
Alt 01-04-2006, 17:47
chefdesigner
 Registrierter Benutzer
Links : Onlinestatus : chefdesigner ist offline
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 257
chefdesigner ist zur Zeit noch ein unbeschriebenes Blatt
Question

Okay, jetzt muss ich diesen Thread doch noch einmal aufgreifen und nocheinmal ein Problem schildern.

Jetzt gibt es folgendes Problem:
Wenn man jetzt einen Hersteller auswählt, werden dessen Modell aufgeführt (das passt ja soweit), aber wenn man jetzt hergeht und doch einen anderen Hersteller auswählt, dann werden die Modelle des zuerst ausgewählten Herstellers angezeigt und darunter die des aktuell ausgewählten Herstellers.
Wählt man jetzt einen dritten Hersteller aus, so werden dessen Modelle unter denen der beiden ersten aufgelistet. Die Modell werden also immer hinten angehängt.

Hab jetzt schon einiges probiert die Liste wieder zu löschen, bevor die neuen Modelle ausgegeben werden, aber ich scheiter immer wieder auf's neue an JavaScript. Kann mir jemand sagen, wo der Fehler liegt?

Hier nochmal mein aktueller Code:
Code:
function update_drp2() {
   var x=document.frm_auswahl.drp2.length;
   var hersteller = document.frm_auswahl.drp1.value;
      if(hersteller=="Hersteller auswählen") {
         document.frm_auswahl.drp2.value="Modell auswählen";
      }
      else{
         for(var n=1; n<x; n++)
         var NeuerEintrag=new Option('  - Modell auswählen -  ','Modell auswählen');
         for(n=1; n<liste2.length; n++) {
            if(liste2[n][2]==document.frm_auswahl.drp1.value) {
               var NeuerEintrag=new Option(liste2[n][1], liste2[n][0]);
               document.frm_auswahl.drp2.options[document.frm_auswahl.drp2.length]=NeuerEintrag;
               document.frm_auswahl.drp2.disabled=false;
            }
         }
      }
}
__________________
Das Genie überblickt das Chaos!

Wer Rechtschreibfehler findet, darf sie behalten!
Mit Zitat antworten
  #25 (permalink)  
Alt 01-04-2006, 18:30
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von chefdesigner
Hab jetzt schon einiges probiert die Liste wieder zu löschen, bevor die neuen Modelle ausgegeben werden
selfhtml: Elemente aus Auswahlliste löschen:
Zitat:
Elemente können Sie löschen, indem Sie Ihnen den Wert null zuordnen. Alternativ ist es auch möglich, dem Option-Array eine neue Länge zuzuweisen.
Wenn du also das Modell-Selectfeld bei jeder Herstellerwahl neu aufbauen willst, würde ich letztere Methode empfehlen: .length des Selects auf 0 setzen, bevor du die neuen Options erstellst und einhängst.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #26 (permalink)  
Alt 01-04-2006, 18:39
chefdesigner
 Registrierter Benutzer
Links : Onlinestatus : chefdesigner ist offline
Registriert seit: Oct 2003
Ort: Bayern
Beiträge: 257
chefdesigner ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also, ich hab's jetzt so gemacht, weiss aber nicht, ob die Lösung sauber ist. Funktionieren tut's jedenfalls.

Code:
function update_drp2() {
   var x=document.frm_auswahl.drp2.length;
   var hersteller = document.frm_auswahl.drp1.value;
      if(hersteller=="Hersteller auswählen") {
         document.frm_auswahl.drp2.value="Modell auswählen";
         document.frm_auswahl.drp2.disabled=true;
      }
      else{
         for(var n=1; n<x; n++)
         document.frm_auswahl.drp2.options[1]=null;
         var NeuerEintrag=new Option('  - Modell auswählen -  ','Modell auswählen');
         for(n=1; n<liste2.length; n++) {
            if(liste2[n][2]==document.frm_auswahl.drp1.value) {
               var NeuerEintrag=new Option(liste2[n][1], liste2[n][0]);
               document.frm_auswahl.drp2.options[document.frm_auswahl.drp2.length]=NeuerEintrag;
               document.frm_auswahl.drp2.disabled=false;
            }
         }
      }
}
Passt die Lösung so, oder geht das schöner?
__________________
Das Genie überblickt das Chaos!

Wer Rechtschreibfehler findet, darf sie behalten!
Mit Zitat antworten
Antwort

Lesezeichen


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

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni


 

Aktuelle PHP Scripte

jqPlot jQuery Plotting Plugin ansehen jqPlot jQuery Plotting Plugin

jqPlot ist ein plotting und charting plugin für das jQuery Javascript framework

06.11.2019 Berni | Kategorie: AJAX/ Framework
WYSIWYG Editor

WYSIWYG Editor zum Einbinden in PHP Scripte.

21.10.2019 Stephan_1972 | Kategorie: PHP/ WYSIWYG
Modelmanager

Der Modelmanager ist ein Webtool für Fotografen, kann als komplette Homepage oder als Webtool installiert werden.

10.10.2019 Stephan_1972 | Kategorie: PHP/ Bilder
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 05:15 Uhr.