Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Probleme im IE, FireFox klappt

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Probleme im IE, FireFox klappt

    Hallo!

    Ich habe im FireFox mit meinem Script keine Probleme.

    Das Script soll eine Anfrage an eine MySQL Datenbank schicken und das Ergebniss ausgeben.

    Folgendes sind meine Scripte:

    nachrichten_ausgabe.php (Bekommt via $_POST oder $_GET die Variable "user" mit dem jeweiligen Username)
    PHP-Code:
    <?php

    $time 
    time();
    $datum date("d.m.Y",$time);
    $uzeit date("H:i:s",$time);

    $db =  mysql_connect(localhost,**,**);
        
    if (
    $_GET['user'])
        {    
    $userl strtolower($_GET['user']);
        }
        else
        {    
    $userl strtolower($_POST['user']);
        }
        
    if (
    $_GET['mark'])
        {    
    $sql "UPDATE nachrichten SET status = '1' WHERE id = '".$_GET['mark']."'";
            
    $res mysql_db_query(intranet,$sql);

        }
    if (
    $_GET['read'])
        {    
    $sql "UPDATE nachrichten SET status = '1' WHERE touser = '".$userl."'";
            
    $res mysql_db_query(intranet,$sql);

        }
    ?>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="Pragma" content="no-cache" />
    <title>Nachrichten</title>
    <script type='text/javascript' src='nachrichten_ajax.js'></script>
    <link rel="stylesheet" href="style.css" type="text/css" />
    </head>
    <body>

    <table width="100%" border="0" cellpadding="0" cellspacing="0">
     <tbody>
      <tr>
       <td width='33%' align='left'><?= $datum ?></td>
       <td width='34%' align='center'><font size='1'><a href='nachrichten_ausgabe.php?read=true&user=<?= $userl ?>' target='ausgabe'>Alle als gelesen markieren</a></font></td> 
       <td width='33%' align='right'>Loginzeit: <?= $uzeit ?></td>
      </tr>
     </tbody>
    </table>

    <table width="100%" border="0" cellpadding="20" cellspacing="20">
     <tr>
      <td valign="middle" style="border: 1px solid #666666;background-color:#FFFFFF;">


    <?
    # NACHRICHTEN AUSLESEN ANFANG
    if ($user)
        {
    echo "<div id='eingabe' name='eingabe'>

    <input type='hidden' name='search' id='search' size='10' class='Feld2' value='".$user."' />
     <div id='suggestions' class='suggestionsBox' style='z-index:3;'>
      <div id='ajaxresultate' class='suggestionList'>";
     
        
    echo "</div></div></div>";
        }
        else
        {    echo "Error: Kein User angemeldet";
        }
    # NACHRICHTEN AUSLESEN ENDE                    
    ?>

      </td>
     </tr>
    </table>

    <?
    mysql_close($db);    
    ?>
    </body>
    </html>
    nachrichten_suche.php
    PHP-Code:
    <?php
                $dbhost         
    "localhost";
                
    $dbuser         "**";
                
    $dbpass         "**";    
                
    $datenbank         "intranet";
                
    $dbtable         "nachrichten";
                
                
    mysql_connect($dbhost,$dbuser,$dbpass) or 
                die (
    "Keine Verbindung moeglich");
                
                
    mysql_select_db($datenbank) or
                die (
    "Die Datenbank existiert nicht");
                
                        
    $sql "SELECT * FROM ".$dbtable." WHERE (touser = '".$_GET['search']."' OR user = '".$_GET['search']."') ORDER BY id DESC LIMIT 0,5";
                        
    $res mysql_query($sql);
                        
    $rows mysql_num_rows($res);
                        
    $userl $_GET['search'];

                        echo 
    "<table width='100%' border='0' cellpadding='0' cellspacing='0'><tbody>";
                        
                        if (!
    $rows)
                            {    echo 
    "<tr>
                                       <td colspan='2' align='center'>Es sind keine Nachrichten vorhanden.</td>
                                     </tr>"
    ;
                            }
                            else
                                {    echo 
    "<tr>
                                           <td colspan='2'><hr width='100%' color='black'></td>
                                         </tr>"
    ;
                        for(
    $i=0$i<$rows$i++)
                            {    
    $id mysql_result($res,$i,"id");
                                
    $user strtolower(mysql_result($res,$i,"user"));
                                
    $touser strtolower(mysql_result($res,$i,"touser"));
                                
    $time date("d.m.Y H:i:s",mysql_result($res,$i,"time"));
                                
    $message utf8_encode(mysql_result($res,$i,"message"));
                                
    $status utf8_encode(mysql_result($res,$i,"status"));
                                        
                                if (
    $user !== $userl)
                                    {    echo 
    "<tr bgcolor='#EEEEEE'><td><b>von $user</b> ($time Uhr)<br /><i>$message</i></td>";
                                    }
                                    else
                                    {    echo 
    "<tr><td><b>an $touser</b> ($time Uhr)<br /><i>$message</i></td>";
                                    }
                                       
                                if (
    $status == "0" AND $user !== $userl
                                    {    echo 
    "<td width='45'><a href='nachrichten_ausgabe.php?mark=$id&user=$userl' target='ausgabe'><img src='./images/del.gif' border='0' /></a> | <a href='nachrichten_eingabe.php?to=$user&user=$userl' target='eingabe'><img src='./images/reply.gif' border='0' /></a></td>";
                                    }
                                    else if (
    $user !== $userl)
                                    {    echo 
    "<td width='45'>&nbsp;</td>";
                                    }                
                                
                                echo 
    "</tr>
                                     <tr>
                                       <td colspan='2'><hr width='100%' color='black'></td>
                                     </tr>"
    ;
                            
                            }
                            
                                }
                        echo 
    "</tbody></table>";
    ?>
    nachrichten_ajax.js
    Code:
    	var zeitintervall ;
    	var xhr ;
    	var wiederholung ;
    	
    	window.onload = function () 
    		{	
    		wiederholung = window.setTimeout('tasteneingabe()',100);
    		setInterval('time()',5000);
    		
    		if ( window.XMLHttpRequest ) 
    				{	xhr = new XMLHttpRequest() ; // Alle Mozilla-basierten Browser
    				}
    				else if ( window.ActiveXObject ) 
    					{	xhr = new ActiveXObject( "Microsoft.XMLHTTP" ) ; // der liebe gute IE :)
    					}
    		}
    	
    	function time() 
    		{	wiederholung = window.setTimeout('tasteneingabe()',5000);
    		}
    			
    	function tasteneingabe () 
    		{	clearTimeout( zeitintervall ) ;
    			zeitintervall = setTimeout( "neuesuche()", 100 ) ;
    		}
    	
    	function neuesuche () 
    		{			sendeajaxanfrage ( document.getElementById( "search" ).value ) ;
    		}
    
        function sendeajaxanfrage (search) 
    		{	xhr.open( "GET", "nachrichten_suche.php?search=" + search, true ) ;
    			xhr.onreadystatechange = ajaxverbindung ;
    			xhr.send( null ) ;
    		};
    
    	function ajaxverbindung () 
    		{	if ( xhr.readyState == 4 ) 
    				{ 	var input = document.getElementById( "search" ) ;
    					input.style.backgroundImage = "none";
    					
    					var div = document.getElementById( "ajaxresultate" ) ;
    					div.innerHTML = xhr.responseText ;
    					
    					var div = document.getElementById( "ajaxresultate" ) ;
    					div.style.display = "inline" ;
    										
    					var diva = document.getElementById( "suggestions" ) ;
    					diva.style.display = "inline" ;
    				}
    		}
    Die Datenbank heißt nachrichten (Tabelle: intranet) und es sind folgende Felder vorhanden:
    * id
    * user
    * time
    * message
    * touser
    * status

    Das komisch ist im FireFox funktioniert alles ohne Probleme.
    Im InternetExplorer funktioniert es teilweise, das heißt wenn ich in die Seite einsteige dann scheint es zu funktionieren nur nach einiger Zeit fehlern Datenbank-Einträge.

    Was habe ich falsch gemacht?
    DANKE!!


  • #2
    Am besten schmeißt du mal den Debugger vom IE an, der zeigt dir vielleicht nen Fehler auf!

    Kommentar


    • #3
      immer wenn ich den Browsercache leere ohne die Seite zu aktualisieren werden alle Datensätze angezeigt ...
      Im Debugger seh ich nichts ...

      Kommentar


      • #4
        Dass der IE beim Anfordern von Ressourcen per XMLHttpRequest mit Methode GET ein Cache-Problem hat, ist altbekannt.

        Und die Faustregel ist, dass man für Daten verändernde Requests POST nehmen sollte.

        Kommentar


        • #5
          Okay und wie sende ich dann via POST argumente mit?

          Code:
          xhr.open( "POST", "nachrichten_suche.php?search=" + search, true ) ;
          geht natürlich nicht...

          die Änderung in der nachrichten_suche.php ist klar, einfach $_GET durch $_POST ersetzten.

          Kommentar


          • #6
            Zitat von bartenbach Beitrag anzeigen
            Okay und wie sende ich dann via POST argumente mit? [...] geht natürlich nicht...
            Nee, aber mal selber im Netz informieren geht ganz bestimmt.

            Kommentar


            • #7
              so ich habe jetzt geschaut und gefunden:

              Code:
                  function sendeajaxanfrage (search) 
              		{	xhr.open( "POST", "nachrichten_suche.php", true ) ;
              			xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
              			xhr.send( "search=" + search );
              			xhr.onreadystatechange = ajaxverbindung ;
              		}
              ich hoffe jetzt das es damit klappt - ich lass das Script jetzt mal ne Zeit laufen!
              Danke bisher!!

              Kommentar

              Lädt...
              X