Php/Mysql manchmal kein Ergebniss mit gleicher Abfrage

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

  • Php/Mysql manchmal kein Ergebniss mit gleicher Abfrage

    Hallo miteinander?

    Ich logge (absicht war einem bot 404 zurück zugeben) auf unserem Webserver (Shop) Seitenaufrufe mit, wo die Seiten eventl. keinen Inhalt von der DB mehr haben /also nicht mehr existent sind und gebe dem Bot 404 zurück.

    Mittlerweile sind viel zu viele Seiten geloggt mit 404 die einen Inhalt haben.

    Folgendes passiert:

    Manchmal bringt die Query die die Seite mit Inhalt füllt keinen Result.
    Wenn ich die Seite gleich nochmal aufrufe funktioniert es.
    Die Datenmenge ist nicht klein aber wird normalerweise und 1 Sek. geschafft.



    Kann mir jemand helfen?


    Gruß
    Christian

  • #2
    Code?

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Klar kann ich ihn schicken. Aber nochmal - ich glaube nicht das es an dem Script liegt. Das Script wird am Tag bestimmt 2000 mal ausgeführt und ca 20x kommt kein Result auch wenn keine Einschränkungen gemacht werden.
      Es sind auch keine Felder im Ergebniss (das prüfe ich mittlerweile).

      PHP-Code:
      $strQuery  "SELECT main.*,DATEDIFF(CURDATE(), date(erstellt)) AS zeit,
                  ( select min(originalprice) from tbl_prices where main.id = tbl_prices.product_id) AS originalprice ,
                  ( select min(price) from tbl_prices where main.id = tbl_prices.product_id) AS price,
                  ( select count(*) from tbl_prices where main.id = tbl_prices.product_id) AS pricecounter from main
                  where 1 "
      ;

      if (
      $CatID 0) {
          
      $strQuery .= " AND catid = ".$CatID;
          }
      if (
      strlen($mainCategory)>0) {
          
      $strQuery .= " AND cat1_convert = '".$mainCategory."' ";
          } 

      if (
      strlen($Category)>0) {
          
      $strQuery .= " AND cat2_convert = '".$Category."' ";
          }
      if (
      strlen($subCategory)>0) {
          
      $strQuery .= " AND cat3_convert = '".$subCategory."' ";
          }
      if (
      strlen($Color)>0) {
          
      $strQuery .= " AND color = '".$Color."' ";
          }
      if (
      strlen($searchtxt)>0) {    
          
      include(
      "include/searchtxt.inc.php");

      }  
      if (
      strlen($producer)>0) {
          
      $strQuery .= " AND nameconvert = '".addslashes($producer)."' ";
          }
      if ((
      _SHOWOFFERS==0) AND ($special==0)) {
          
      $strQuery .= " AND specialprice = 0 ";
          }
      if (
      $special==1) {
          
      $strQuery .= " AND specialprice = 1 ";
          }
      if (
      $news==1) {
          
      $strQuery .= " AND DATEDIFF(CURDATE(), date(erstellt)) < ".  _HOWOLDNEWS;
          } 

      if (
      $sizesearch 0) {
          
      $strQuery .= " AND id in (Select Artnr from tbl_gr left join tbl_sizecalc on tbl_sizecalc.size = tbl_gr.bezeichner where tbl_sizecalc.display ='$sizesearch' and tbl_gr.menge > 0) "// Nur mit bestand
      }            
      if (
      $highprice>0) {
                      
      $strQuery .= " AND id in (Select tbl_prices.product_id  from tbl_prices where price between ".$lowprice." and ".$highprice.")";
                  }

      if (
      strlen($wide) > 0) {            
                      
      $strQuery .= " AND weite ='$wide' "// weite eingrenzen
      }
      if (
      strlen($heelform) > 0) {            
                      
      $strQuery .= " AND absatzform ='$heelform' "// absatz eingrenzen
      }
      if (
      strlen($heelsize) > 0) {
          
      $heelfrom = (int) substr($heelsize,0,strpos($heelsize,','));
          
      $heelto = (int) substr($heelsize,strpos($heelsize,',')+1,strlen($heelsize));
          
          if ((
      $heelfrom==0) or ($heelto==0)) {
              
                     if (
      $heelfrom==0$strQuery .= " AND absatz <= $heelto ";
                     if (
      $heelto==0$strQuery .= " AND absatz >= $heelfrom ";
              
              
          } else {
          
                      
      $strQuery .= " AND absatz between $heelfrom and $heelto "// absatz eingrenzen
      }
      }


          
      $strQuery .= "  group by  id";

        
      if (
      strlen($sortField)>0) { 
          
      $strQuery .= "  ORDER BY $sortField $sortOrder, ordernr"// nach Rang sortiert
      } else {
          
          
      $strQuery .= "  ORDER BY  erstellt,ordernr Desc"// nach Rang sortiert
          
      }

      //echo $strQuery;

      $dbAbfrage = @MysqlQuery($strQuery);

      if (
      mysql_num_rows($dbAbfrage)>0){

      while(
      $row = @mysql_fetch_object($dbAbfrage)) { 
          
      $arr_maincat[$row->maincategorytxt] = $row->maincat_convert;
          
      $arr_cat1[$row->categorytxt1] = $row->cat1_convert;
          
      $arr_cat2[$row->categorytxt2] = $row->cat2_convert;
          
      $arr_cat3[$row->categorytxt3] = $row->cat3_convert;
          
      $arr_producer[$row->name] =   $row->nameconvert;    
          
      $arr_colors[] = $row->color;
          
      $arr_prices[] = $row->price;
          
      $arr_absatz[] = $row->absatz;
          
      $arr_absatzform[] = $row->absatzform;
          
      $arr_weite[] = $row->weite;

      }

      uasort($arr_producer,'cmp');

      $arr_colors clean_array(array_unique($arr_colors));
      sort($arr_colors);

      $arr_prices array_unique($arr_prices);
      sort($arr_prices);

      $arr_absatz clean_array(array_unique($arr_absatz));
      sort($arr_absatz);


      $arr_absatzform clean_array(array_unique($arr_absatzform));
      sort($arr_absatzform);


      $arr_weite array_unique($arr_weite);
      $arr_weite clean_array($arr_weite);


      sort($arr_weite);



      mysql_data_seek($dbAbfrage0); 

           
      $intMaxRows mysql_num_rows($dbAbfrage); // Maximale Anzahl
           
      $intFieldcount mysql_num_fields($dbAbfrage);
            if (
      $intMaxRows 0) {
              
               
      $intPages = (floor(($intMaxRows 1) / $LISTLENGTH));
               
      $intCurrentPage = (int) $pg;
               
      $intPosition 0;
               
      $intCursor $intNavCursor = ($pg == 0) ? $pg $LISTLENGTH;
               
      // Navigation vorbereiten
               
      while($arrRS mysql_fetch_assoc($dbAbfrage)) {
                   
      $nItemID = (int) @mysql_result($dbAbfrage$intNavCursor 1"itemid");
                   
      $cItemID = (int) @mysql_result($dbAbfrage$intNavCursor"itemid");
                   
      $pItemID = (int) @mysql_result($dbAbfrage$intNavCursor 1"itemid");
                   
      $intNavCursor++;
                   if (
      $cItemID == 0) break; // letzte Reihe ausblenden
                   
      $arrNavigation[$cItemID] = array($pItemID$nItemID);
               }
                 
      $strNavigation urlencode(serialize($arrNavigation));
               
      mysql_data_seek($dbAbfrage$intCursor); // Zeiger erneut setzen
               
      }

      $artikelcounter $intMaxRows;  


      Zuletzt geändert von Jedimen; 19.10.2012, 16:56.

      Kommentar


      • #4
        ... und wenn Du möchtest, dass jetzt noch jemand antwortet, verwende einfach die PHP BBCodes dieses Forums, um den PHP Code für jedermann lesbar zu machen. So wird Dir hier garantiert niemand antworten ...
        MM Newmedia | MeinBlog

        Kommentar


        • #5
          Wurde geändert - Danke.

          Kommentar

          Lädt...
          X