php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.04.2009, 14:08  
Erfahrener Benutzer
 
Registriert seit: 11.03.2009
Beiträge: 102
xstefxanx befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] js funktion funktioniert nach änderungen am php teil nicht mehr

hallo,

ich habe eine datei in der im kopf eine js funktion definiert ist und darunter mit php einige db abfragen und ein html formular welches je nach auswahl die js funktion aufruft. jetzt habe ich den php teil mit den db abfragen erweitert und aufeinmal funktioniert meine js funktion nicht mehr obwohl ich daran nichts geändert habe und auch den aufruf der funktion nicht geändert habe.

auf wunsch könnte ich den quelltext auch noch einfügen, dieser ist allerdings sehr lang , deswegen wollte ich mir das vorerst sparen.

hat jemand eine idee woran mein problem liegen könnte? habe eigentlich keinen plan, da ich die js funktion ja nicht geändert habe.
xstefxanx ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 12.04.2009, 14:12  
Erfahrener Benutzer
 
Benutzerbild von Phoscur
 
Registriert seit: 01.12.2008
Beiträge: 450
PHP-Kenntnisse:
Fortgeschritten
Phoscur wird schon bald berühmt werdenPhoscur wird schon bald berühmt werden
Standard

Quelltext bitte, versuch zu kürzen.
__________________
Phoscur ist offline   Mit Zitat antworten
Alt 12.04.2009, 19:29  
Erfahrener Benutzer
 
Registriert seit: 11.03.2009
Beiträge: 102
xstefxanx befindet sich auf einem aufstrebenden Ast
Standard

das mit dem kürzen is halt so ne sache. hab ja keinen plan warum das dann nicht funktioniert, da ich meiner meinung nach ja überhaupt nix am js teil gemacht habe.

hier mal der vollständige quelltext:

PHP-Code:


<script type="text/javascript">
var anzahl_gast = 0;
var gast = new Array(false, false, false, false, false);

function gast_test(nr){

    var tbl = document.getElementById('runde_eintragen');
    
    if(document.getElementsByName("spieler["+nr+"]")[0].value == 'Gast' && gast[nr] == false){  //wenn ein neuer gast gewählt wurde
alert('hallo');
        if(anzahl_gast == 0){  

        var zeile = tbl.insertRow(8); 
        zeile.setAttribute('id', 'tab_form');
        zelle = new Array(6);
        for (var i = 0; i < zelle.length; i++){
            zelle[i] = zeile.insertCell(i); 
            zelle[i].innerHTML="&nbsp;";
        }
        zelle[0].innerHTML="Name";
        zelle[0].setAttribute('id', 'left');
         }
            var j = nr+1;
            var el = document.createElement('input'); 
           el.setAttribute('type', 'text'); 
           el.setAttribute('name', 'gastname'+j); 
           el.setAttribute('size', '9'); 
        el.setAttribute('maxlength', '20');
        var tab = 33 + nr;
        el.setAttribute('tabindex', tab);
        zelle[j].appendChild(el);
        anzahl_gast++;
        gast[nr] = true;
    }

    if(document.getElementsByName("spieler["+nr+"]")[0].value != 'Gast' && gast[nr] == true){
        var j = nr+1;    
        zelle[j].removeChild(zelle[j].lastChild);    
            if(anzahl_gast == 1){
            tbl.deleteRow(8);

        }
        gast[nr] = false;
        anzahl_gast--;
    }

}

</script>

<?php
    
if($_SESSION["login"] == FALSE) { 
    echo 
'<h1>Sie sind nicht befugt die Inhalte dieser Seite zu sehen!<br>
          Melden Sie sich an</h1>'
;
    }
    else{ 
        include_once 
'config.inc.php';
        
$datum implode('-'array_reverse(explode("."$_GET['date'])));
        
$sql "SELECT 
                    *
                    FROM         
                           Runden
            WHERE
                Datum = '"
.$datum."'";           
        
$result mysql_query($sql) or die( 'Error[SELECT|User]: <br />
                                                           <pre>' 
$sql '</pre>
                                                           <br />
                                                           MySQL-Error: ' 
mysql_error() );
        
$datensatz mysql_fetch_array($result);
        
$spiele $datensatz['Spiele'];
        
$faktor $datensatz['Faktor'];

        for(
$i=0;$i<5$i++){
            switch(
$datensatz[($i+4)]){
            case 
0$rundenspieler[$i] = 'keiner'; break;        
            case (
$datensatz[($i+4)]<=5): $rundenspieler[$i] = 'Gast'
                              break;
            default:            

            
$sql "SELECT 
                        User
                        FROM         
                               USER_VERWALTUNG
                WHERE
                    ID = "
.$datensatz[($i+4)];
           
            
$result mysql_query($sql) or die( 'Error[SELECT|User]: <br />
                                                           <pre>' 
$sql '</pre>
                                                           <br />
                                                           MySQL-Error: ' 
mysql_error() );

            
$row =  mysql_fetch_array($result);
            
$rundenspieler[$i] = $row['User'];
            break;
            }

            
$sql "SELECT 
                        *
                        FROM         
                               Runden_erg
                WHERE
                    rundenID = "
.$datensatz['ID']."
                AND
                    userID = "
.$datensatz[($i+4)];           
            
$result mysql_query($sql) or die( 'Error[SELECT|User]: <br />
                                                           <pre>' 
$sql '</pre>
                                                           <br />
                                                           MySQL-Error: ' 
mysql_error() );

            if(
mysql_num_rows($result) !=0){
                
$row mysql_fetch_array($result);
                
$rundenpunkte[$i] = $row['Punkte'];
                
$rundenstrafen[$i] = $row['Strafen'];
                
$rundeneinkauf[$i] = $row['Einkauf'];
                
$rundensonsitges[$i] = $row['Sonstiges'];
                
$rundengast[$i] = $row['Gastname'];
            }
            else {    
$rundenpunkte[$i] = 0;
                
$rundenstrafen[$i] = 0;
                
$rundeneinkauf[$i] = 0;
                
$rundensonsitges[$i] = 0;
                
$rundengast[$i] = '';
                 }
        }

        





        if(
$datensatz['Abgeschlossen'] == ){
            
$readonly 'readonly="readonly"';
            
$abgeschlossen true;
        }
            else {
                
$readonly '';
                
$abgeschlossen false;

                
$sql "SELECT 
                            User
                            FROM         
                                   USER_VERWALTUNG
                    order by ID"
;           
                
$result mysql_query($sql) or die( 'Error[SELECT|User]: <br />
                                                           <pre>' 
$sql '</pre>
                                                           <br />
                                                           MySQL-Error: ' 
mysql_error() );
                while(
$row mysql_fetch_array($result)){
                    
$userliste .= '<option>'.$row['User'].'</option>';
                }    
                
$userliste.= '<option>Gast</option>';            
            }


    
        


echo 
'
    <h1>Runde &auml;ndern/eintragen</h1>
    <form action="" method="post">

        <table id="runde_eintragen" border="1">
        <tr>
        <td>&nbsp;</td>
        <td colspan="5">
            Termin <font style="font-size:70%;">(JJJJ-MM-TT)</font>&nbsp;&nbsp;<input size="8" value="'
.$_GET["date"].'" name="datum" type="text" tabindex="5" maxlength="10" '.$readonly.'>&nbsp;&nbsp;&nbsp;&nbsp;
            Spiele&nbsp;&nbsp;<input size="1" value="'
.$spiele.'" name="spiele" type="text" tabindex="6" maxlength="2" '.$readonly.'>&nbsp;&nbsp;&nbsp;&nbsp;
            &euro;/Punkt&nbsp;&nbsp;<input size="1" value="'
.$faktor.'" name="faktor" type="text" tabindex="7" maxlength="3" '.$readonly.'>
        </td>
        </tr>
        <tr id="leerspalte"><td colspan="6" id="leerspalte">&nbsp;</td></tr>
        <tr id="spalten_headline">
        <td>&nbsp;</td>'
;

        for(
$i=0$i<5$i++){
            echo 
'<td>Spieler '.($i+1).'</td>';
        }
echo 
'
        </tr>
        <tr>
        <td>&nbsp;</td>'
;

        for(
$i=0$i<5$i++){
            echo 
'<td><select size="1" name="spieler['.$i.']" type="text" tabindex="'.(8+$i).'" onchange="gast_test('.$i.')" '.$readonly.'>';
            if(
$abgeschlossen == 1){
                    echo 
' <option>'.$rundenspieler[$i].'</option>';
            }
            else {
                    echo 
'<option value="">';
            if(
$i == 4){echo 'keiner';}
                else{ echo 
'&nbsp;';}
                    echo 
'</option>'.$userliste;
                 }
            echo 
'    </select>
                  </td>'
;
                
        }
echo 
'
        </tr>
        <tr>
        <td id="left">Punkte</td>'
;
        for(
$i=0$i<5$i++){
            echo 
'<td><input size="9" value="'.$rundenpunkte[$i].'" name="punkte['.$i.']" type="text" tabindex="'.(13+$i).'" maxlength="3" '.$readonly.'></td>';
        }
echo 
'
        </tr>
        <tr>
        <td id="left"><nobr>Strafen <font style="font-size:70%;">[&euro;]</font></nobr></td>'
;
        for(
$i=0$i<5$i++){
            echo 
'<td><input size="9" value="'.$rundenstrafen[$i].'" name="strafen['.$i.']" type="text" tabindex="'.(18+$i).'" maxlength="5" '.$readonly.'></td>';
        }
echo 
'
        </tr>
        <tr>
        <td id="left"><nobr>Einkauf <font style="font-size:70%;">[&euro;]</font></nobr></td>'
;
        for(
$i=0$i<5$i++){
            echo 
'<td><input size="9" value="'.$rundeneinkauf[$i].'" name="einkauf['.$i.']" type="text" tabindex="'.(23+$i).'" maxlength="5" '.$readonly.'></td>';
        }
echo 
'
        </tr>
        <tr>
        <td id="left"><nobr>Sonstiges <font style="font-size:70%;">[&euro;]</font></nobr></td>'
;
        for(
$i=0$i<5$i++){
            echo 
'<td><input size="9" value="'.$rundensonsitges[$i].'" name="sonstiges['.$i.']" type="text" tabindex="'.(28+$i).'" maxlength="5" '.$readonly.'></td>';
        }
echo 
'
        </tr>
        <tr id="leerspalte"><td colspan="6" id="leerspalte">&nbsp;</td></tr>
          <tr>

        <td colspan="4" id="right">
            <input tabindex="39" value="Runde eintragen" type="submit" name="runde_eintragen">
        </td>
        <td colspan="2" id="left">'
;
        if(
$_SESSION["runde_abschliessen"] == true && $abgeschlossen == false){
          echo 
'<input type="checkbox" tabindex="38" name="abgeschlossen" value="yes">
            Runde abschlie&szlig;en'
;
        }        
echo 
'
        </td>
        </tr>
    </table>
    
</form>'
;


        for(
$i=0;$i<5$i++){            
            if(
strcmp(trim($rundengast[$i]),'') != 0){    
                echo 
$rundengast[$i].'hallo';            
                echo 
'<script type="text/javascript">gast_test('.$i.');</script>';
            }
        }
    }
?>
habe mal mit alert versucht zu sehen wo der fehler in der js funktion is. der muss bei der if bedingung liegen. versteh ich aber nicht
xstefxanx ist offline   Mit Zitat antworten
Alt 13.04.2009, 01:58  
Erfahrener Benutzer
 
Benutzerbild von Phoscur
 
Registriert seit: 01.12.2008
Beiträge: 450
PHP-Kenntnisse:
Fortgeschritten
Phoscur wird schon bald berühmt werdenPhoscur wird schon bald berühmt werden
Standard

Ich schätze, das liegt daran, dass der Quelltext (DOM) noch nicht bereit ist, wenn die JS-Funktionen ausgeführt werden sollen und dadurch ins Leere laufen.
Du solltest sowieso nach Möglichkeit alle JS Funktionen zusammenfassen und dann in body onload="" ausführen. So würde ich es jedenfalls tun.
Vergiss nicht, dass die Grundfunktionen, wenn auch weniger hübsch, ohne JS funktionieren sollten.
__________________
Phoscur ist offline   Mit Zitat antworten
Alt 13.04.2009, 12:38  
Erfahrener Benutzer
 
Registriert seit: 11.03.2009
Beiträge: 102
xstefxanx befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Phlegma Beitrag anzeigen
Ich schätze, das liegt daran, dass der Quelltext (DOM) noch nicht bereit ist, wenn die JS-Funktionen ausgeführt werden sollen und dadurch ins Leere laufen.
Versteh leider nicht ganz was du damit meinst. Ich kann die JS Funktionen nicht im body mit onload laden lassen, da die JS Funktion die Tabelle erweitern soll, wenn in einem Select-Feld ein bestimmter Wert ausgewählt wird. Falls diese Funktion nicht funktioniert ist es allerdings auch nicht essentiell wichtig für das Formular. Was mich allerdings wundert, dass bevor ich den php teil erweitert habe, alles funktioniert hat. das macht für mich überhaupt keinen sinn
xstefxanx ist offline   Mit Zitat antworten
Alt 13.04.2009, 14:39  
Erfahrener Benutzer
 
Benutzerbild von Phoscur
 
Registriert seit: 01.12.2008
Beiträge: 450
PHP-Kenntnisse:
Fortgeschritten
Phoscur wird schon bald berühmt werdenPhoscur wird schon bald berühmt werden
Standard

document.getElementById() benötigt DOM-Zugriff, kann also erst verwendet werden, wenn der DOM, bereit ist. Was hast du gemacht? Du hast mehr Quelltext mit PHP erzeugt, dementsprechend länger dauert es bis der DOM bereit ist.
Die JS Funktionen werden bei dir aber nicht für "onDOMready" oder onclick sondern einfach am Ende des Dokuments ausgeführt (In bis zu fünf <script> Tags.. Glückwunsch).
Ich vermute nun, dass, selbst wenn du sie am Ende des Dokuments ausführst, der DOM nicht bereit ist. Du musst sie also in onlick oder <body onload=""> oder $(function() {} [jQuery] legen.
__________________
Phoscur ist offline   Mit Zitat antworten
Alt 13.04.2009, 16:06  
Erfahrener Benutzer
 
Registriert seit: 11.03.2009
Beiträge: 102
xstefxanx befindet sich auf einem aufstrebenden Ast
Standard

hallo,

habe meinen fehler grade selbst gefunden. war relativ trivial. habe eine option des select feldes die ich vorher im formular ausgegeben habe nun in eine variable geschrieben. habe dabei allerdings vergessen der option gast auch einen value="gast" zuzuweisen, sodass er die if prüfung in meiner funktion jedes mal ins leere lief, da ja auf den value des objekts geprüft wird.

'schuldigung dass ich euch damit belästigt habe.

gruß stefan
xstefxanx ist offline   Mit Zitat antworten
Alt 13.04.2009, 16:09  
Erfahrener Benutzer
 
Benutzerbild von Phoscur
 
Registriert seit: 01.12.2008
Beiträge: 450
PHP-Kenntnisse:
Fortgeschritten
Phoscur wird schon bald berühmt werdenPhoscur wird schon bald berühmt werden
Standard

Also lag es nicht am DOM? Gut zu wissen.
__________________
Phoscur ist offline   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
Rekursive Funktion funktioniert lokal, aber nicht remote? Anotherone PHP-Fortgeschrittene 1 21.06.2008 08:11
Rekursive Funktion bricht ab... duras666 PHP Tipps 2008 9 28.04.2008 11:36
Session funktioniert nicht bei session.use_cookies = Off Quagga PHP Tipps 2007 13 13.01.2007 18:27
funktion funktioniert nicht LP PHP Tipps 2006 4 19.09.2006 10:45
Lokal funktioniert alles -> auf Server fast nichts PsychoEagle Datenbanken 2 14.08.2006 08:43
In einer Funktion auf eine Funktion der Klasse zugreifen phpbeginner PHP Tipps 2005-2 2 28.07.2005 00:30
Kontakrformular funktioniert nur zum Teil PHP Tipps 2005-2 12 18.07.2005 11:24
Funktion in einer Funktion aufrufen? PHP Tipps 2005-2 11 14.06.2005 15:14
Problem mit einer rekursiven Funktion in einer Klasse ajo_silent PHP-Fortgeschrittene 6 13.06.2005 16:40
[Erledigt] Array-Übergabe in Funktion PHP Tipps 2005 1 08.05.2005 21:05
einfache mail funktion funktioniert nicht... PHP Tipps 2005 11 27.04.2005 20:25
funktion in klasse ruft funktion in anderer klasse auf phpfortgeschrittener PHP Tipps 2005 6 17.04.2005 17:47
Class -- Funktion Creativ PHP Tipps 2005 2 30.03.2005 23:10
Warum Funktioniert diese Funktion nich (mySQL) PHP Tipps 2005 10 04.03.2005 16:36
[Erledigt] Variablen in eine Funktion übernehmen PHP Tipps 2005 1 26.02.2005 17:19

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php teil nach, javascript funktion funktioniert nicht mehr?, javascript funktionsaufruf aus php geht nicht mehr, funktioniert nach, teil nicht mehr, javascript funktion funktioniert nicht mehr, leerspalte in php einfügen, setattribute \bricht ab\, änderungen im quelltext php, js funktion fehler, javascript nach 2. aufruf ist funktion nicht mehr da, input text onchange dauert ewig

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:40 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