Announcement

Collapse
No announcement yet.

innerHTML langsam???

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • innerHTML langsam???

    Hallo,

    diesmal geht es nicht darum, dass etwas nicht geht, sondern dass es langsam geht

    Code:
    function ajaxList(typ,bearbeiter){
       var tx= $('fi').value;
       var criterium = ($('radio_eins').checked == true)? "" : "hat";
    
          if (tx.length >2 || typ=="lastlistL" || typ=="lastlistK" || typ=="lastlistP"){
             with(new Ajx()){
                url="ajax/list.php";
                onOk = function handelOk(txt,xml){
                   $('haupt_list').style.visibility = "visible";
    	       $('haupt_list').innerHTML = txt;
                }
                onTm = function handelTm(){
             }
             tx = encodeURIComponent(tx);
             param = "bearbeiter="+bearbeiter+"&wort="+tx+"&typ="+typ+"&criterium="+criterium;
             makeQuery();
          }
       } else {
          $('haupt_list').style.visibility = "hidden";
          $('haupt_list_note').style.visibility = "hidden";
       }
    }
    Die rot eingefärbte Stelle ist die, die ewig dauert. Beispiel: Wenn ich nach "Müller" suche. Die Nach 4.36 Sekunden hat er das Ergebnis, welches aber erst nach 22.25 Sekunden angezeigt wird.

    Hierzu nochmal die Passage der Datei "ajax/list.php"

    PHP Code:
    case "lieferant_zuo":
       if (
    strlen($wort) > 2) {
          
    $nr strlen($wort) * 100;
          
    $order = ($criterium=="hat")? "ORDER BY L_Nachname ASC LIMIT 0,$nr" ORDER BY L_Nachname,L_Vorname ASC";
          
    $wort_l = ($criterium=="hat")? "WHERE L_Nachname LIKE '%$wort%' AND l.Lieferantart_Nr = la.lieferantart_Nr" "WHERE L_Nachname LIKE '$wort%' AND l.Lieferantart_Nr = la.lieferantart_Nr";
          
    $select_l "SELECT 'Lieferant' AS art, l.Lieferant_Nr AS Lieferant_Nr, l.L_Nachname AS L_Nachname, l.L_Vorname AS L_Vorname, l.L_Firma AS L_Firma, l.L_Ort AS L_Ort, l.L_Schwerpunkte AS L_Schwerpunkte, la.Lieferantart AS Lieferantart, la.bg AS bg FROM lieferant l, lieferantart la $wort_l";
          
    $wort_p = ($criterium=="hat")? "WHERE L_Nachname LIKE '%$wort%' AND p.L_Lieferantart_Nr = pa.lieferantart_Nr" "WHERE L_Nachname LIKE '$wort%' AND p.L_Lieferantart_Nr = pa.lieferantart_Nr";
          
    $select_p "SELECT 'Personal' AS art, p.Lieferant_Nr AS Lieferant_Nr, p.L_Nachname AS L_Nachname, p.L_Vorname AS L_Vorname, p.L_Firma AS L_Firma, p.L_Ort AS L_Ort, p.L_Schwerpunkte AS L_Schwerpunkte, pa.Lieferantart AS Lieferantart, pa.bg AS bg FROM personal p, personalart pa $wort_p";
          
    $query $select_l " UNION " $select_p " " $order;
          
    $db->query($query);
                
          while (
    $m $db->fobj()) {
             
    $i = ($i == 0)? 0;
             
    $firma = (strlen($m->L_Firma) > 25)? substr($m->L_Firma025)."..." $m->L_Firma;
             
    $ort = (strlen($m->L_Ort) > 20)? substr($m->L_Ort020)."..." $m->L_Ort;
             
    $schwer = (strlen($m->L_Schwerpunkte) > 10)? substr($m->L_Schwerpunkte010)."..." $m->L_Schwerpunkte;
             
    $tmp ="bg_".$i;
             
    $bg = $$tmp;
             if (
    $m->bg != NULL) {
                
    $bgcolor "background-color: $m->bg";
             } else {
                
    $bgcolor "";
             }

             
    $out .= "<tr class=\"$bg\" onmouseover=\"this.className='hauptlis_on';\" onmouseout=\"this.className='$bg';\" onclick=\"$('haupt_list_note').style.visibility='hidden';\" ondblclick=\"getElementById('div_anfrage_$m->Lieferant_Nr').style.display = 'block';\">
             <td style=\"border-left:1px solid #333333;padding-left:1px;width:100px\">
    $m->L_Nachname &nbsp;</td>
             <td style=\"border-left:1px solid #333333;padding-left:1px;width:100px\"> 
    $m->L_Vorname &nbsp;</td>
             <td style=\"border-left:1px solid #333333;padding-left:1px;width:150px\"> 
    $firma &nbsp;</td>
             <td style=\"border-left:1px solid #333333;padding-left:1px;width:100px\"> 
    $ort &nbsp;</td>
             <td style=\"border-left:1px solid #333333;padding-left:1px;width:100px\">"
    .trim($schwer)." &nbsp; </td>
             <td style=\"border-left:1px solid #333333;padding-left:1px;
    $bgcolor; width:200px\" onclick=\"hauptListNote('$bearbeiter','$m->Lieferant_Nr','noteLieferant');\" onmouseout=\"$('haupt_list_note').style.visibility='hidden'\">$m->Lieferantart &nbsp;</td>
             <td style=\"border-left:1px solid #333333;padding-left:1px;width:100px\"> 
    $m->art &nbsp;</td>
             </tr>
             <tr style=\"border: 1px solid black; background-color: lightblue; display: none;\" id=\"div_anfrage_" 
    $m->Lieferant_Nr "\"><td colspan=\"7\">
             <center><b>M&ouml;chten Sie eine Anfrage senden?</b></center>
             <table border=0><tr>
             <td style=\"width: 185px;\"><center><input type=\"button\" name=\"kyansel\" value=\"Abbrechen\" onClick=\"ajaxProjektZuo('
    $m->Lieferant_Nr','$bearbeiter','ABBRECHEN'); getElementById('div_anfrage_$m->Lieferant_Nr').style.display = 'none';\"></center></td>
             <td style=\"width: 180px;\"><center><input type=\"button\" class=\"del\" name=\"iie\" value=\"Nein\" onClick=\"ajaxProjektZuo('
    $m->Lieferant_Nr','$bearbeiter','NEIN'); getElementById('div_anfrage_$m->Lieferant_Nr').style.display = 'none';\"></center></td>
             <td style=\"width: 185px;\"><center><input type=\"button\" class=\"up\" name=\"hai\" value=\"Ja\" onClick=\"ajaxProjektZuo('
    $m->Lieferant_Nr','$bearbeiter','JA'); getElementById('div_anfrage_$m->Lieferant_Nr').style.display = 'none';\"></center></td>
             </tr></table>
             </td></tr>"
    ;
          }
       }
    break; 
    $out ist ja eigentlich die entscheidene Stelle, da er hier ja lange braucht, um den in das vorgegebene Div einzufügen.

    Habt ihr ne Idee, wie ich das ganze beschleunigen kann und wenn nicht, ne Bestätigung für meinen Chef, dass das nicht schneller geht?

  • #2
    Wie oft wird die while Schleife durchlaufen?

    An deiner Stelle würde ich an verschiedene Stellen im Code "echos" mit der verstrichenen Zeit einbauen; damit wärst du in der Lage, die Stelle zu finden, für die der Code so lange braucht.

    Comment

    Working...
    X