Zum Inhalt springen

Problem: will nur ab und zu parameterannehmen!?!?

Erstellt am 25. August 2005 · 2 Antworten · letzte Antwort am 28. August 2005

Tags: PHP, Cache & Performance, Frage

andipesel ·

ich habe folgendes problem:

wie schon des öfteren erwähnt hatte ich probleme mit der parameterübergabe, nach einiger zeit hat sich dies gelegt und ich hatte auf einmal ein mysql_fetch_assoc() problem(hat sich rausgestellt das die typo datenbank instabil war!) und jetzt hab ich den warning wegbekommen und die parameterübergabe funktioniert nicht .....

hier ist der sourcecode:

<?php
/************************************************************************
*  Copyright notice
*  
*  (c) 2005 Andreas Pesel (ANDIpesel@gmx.at)
*  All rights reserved
*
*  This script is part of the TYPO3 project. The TYPO3 project is 
*  free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License, or
*  (at your option) any later version.
* 
*  The GNU General Public License can be found at
*  http://www.gnu.org/copyleft/gpl.html.
* 
*  This script is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  This copyright notice MUST APPEAR in all copies of the script!
***********************************************************************/
/** 
* Plugin 'Show Product' for the 'anzeige_prod' extension.
*
* @author	Andreas Pesel <ANDIpesel@gmx.at>
*/  
    
require_once(PATH_tslib."class.tslib_pibase.php");
    
class tx_anzeigeprod_pi1 extends tslib_pibase {
	var $prefixId = "tx_anzeigeprod_pi1";		// Same as class name
	var $scriptRelPath = "pi1/class.tx_anzeigeprod_pi1.php";	// Path to this script relative to the extension dir.
	var $extKey = "anzeige_prod";	// The extension key.
	/**
	 *
	 **/
    
	function main($content,$conf){
		$this->conf=$conf;
		$this->pi_setPiVarDefaults();
		$this->pi_loadLL();   
      
      /********************************************** 
      * Sichere Typo3 Methode fuer $_GET und $_POST *
      * Funktioniert noch nicht - Liefert bei       *
      * NullParameter Array mit ID zurueck          *
      * Loesung: SIEHE FORUM http://typo3.net/forum/*
      **********************************************/
      
    $check = t3lib_div::_GP('regnr');
    $typnr = t3lib_div::_GP('typnr');
    $liefnr = t3lib_div::_GP('liefnr');
    $kostnr = t3lib_div::_GP('kostnr');
    $pvornr = t3lib_div::_GP('pvornr');
    $show = t3lib_div::_GP('show');
    
    if($this->piVars['page']){
      $thispage = $this->piVars['page'];
    }else{
      $thispage = 1;
    }
    
    if(empty($check)){
      $anzahl = $GLOBALS['TYPO3_DB']->SELECTquery('*','tx_anzeigeprod_messtechnik','');
      $res = $GLOBALS['TYPO3_DB']->sql(TYPO3_db, $anzahl);
      $pages = $GLOBALS['TYPO3_DB']->sql_num_rows($res);
      
      $seiten = $pages/20;
      $seiten += 1;
      
      for($i=1; $i<= $seiten; $i++){
        if($thispage == $i)
          $seitenanzeigen = $seitenanzeigen."  <a href='index.php?".$GLOBALS['TSFE']->id."&".$this->prefixId."[page]=".$i."'> <b>$i</b></a>";
        else
          $seitenanzeigen = $seitenanzeigen."  <a href='index.php?".$GLOBALS['TSFE']->id."&".$this->prefixId."[page]=".$i."'> $i</a>"; 
      }
      if($thispage == 1){
        $start = 0;
      }else{
        $start = ($thispage * 20) - 20;
      }
        // SQL-query
      $query = $GLOBALS['TYPO3_DB']->SELECTquery('*','tx_anzeigeprod_messtechnik','','','reg_nr',''.$start.',20');
      $res = $GLOBALS['TYPO3_DB']->sql(TYPO3_db, $query);
      
        // Auslesen aus der Datenbank und speichern in einer Uebergangsvariable
      while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)){
        $produkt=$this->auslesen($produkt,$row['reg_nr'],$row['kostnr'],$row['typnr'],$row['liefnr'],$row['pvornr'],$thispage);
      } 
        
      $content = '
        <table border="0" width="100%" cellpadding="2" cellspacing="1">
          <tr>
            <td width="25">'.$produkt.'</td>
            <td width="*%" valign ="top">
              <table border="0" width="100%" height="100%" cellpadding="3" cellspacing="1" bgcolor="#000000">
                <tr>
                  <td bgcolor="#FFFFFF" width="20%"><b>'.$this->pi_linkToPage('Messmittel',$GLOBALS['TSFE']->id,'_self',array($this->prefixId.'[show]'=>'mmittel')).'</b></td>
                  <td bgcolor="#FFFFFF" width="20%"><b>'.$this->pi_linkToPage('Abteilung',$GLOBALS['TSFE']->id,'_self',array($this->prefixId.'[show]'=>'abteilung')).'</b></td>
                  <td bgcolor="#FFFFFF" width="20%"><b>'.$this->pi_linkToPage('MM Typ',$GLOBALS['TSFE']->id,'_self',array($this->prefixId.'[show]'=>'mmtyp')).'</b></td>
                  <td bgcolor="#FFFFFF" width="20%"><b>'.$this->pi_linkToPage('Lieferant',$GLOBALS['TSFE']->id,'_self',array($this->prefixId.'[show]'=>'lieferant')).'</b></td>
                  <td bgcolor="#FFFFFF" width="20%"><b>'.$this->pi_linkToPage('Pvor Nr.',$GLOBALS['TSFE']->id,'_self',array($this->prefixId.'[show]'=>'pvor')).'</b></td>
                </tr>
                <tr>
                  <td bgcolor="#FFFFFF" width="100%" height="100%" colspan="5">
                    KEIN MESSMITTEL AUSGEW&Auml;HLT!
                  </td>
                </tr>
              </table>
            </td>
          </tr>
        </table>
      '."<br><br>Seite/n: " . $seitenanzeigen;
    }else{
      $anzahl = $GLOBALS['TYPO3_DB']->SELECTquery('*','tx_anzeigeprod_messtechnik','');
      $res = $GLOBALS['TYPO3_DB']->sql(TYPO3_db, $anzahl);
      $pages = $GLOBALS['TYPO3_DB']->sql_num_rows($res);
      
      $seiten = $pages/20;
      $seiten += 1;
      
      for($i=1; $i<= $seiten; $i++){
        if($thispage == $i)
          $seitenanzeigen = $seitenanzeigen."  <a href='index.php?".$GLOBALS['TSFE']->id."&".$this->prefixId."[page]=".$i."&regnr=$check&kostnr=$kostnr&typnr=$typnr&liefnr=$liefnr&pvornr=$pvornr&show=$show'> <b>$i</b></a>";
        else
          $seitenanzeigen = $seitenanzeigen."  <a href='index.php?".$GLOBALS['TSFE']->id."&".$this->prefixId."[page]=".$i."&regnr=$check&kostnr=$kostnr&typnr=$typnr&liefnr=$liefnr&pvornr=$pvornr&show=$show'> $i</a>"; 
      }
      if($thispage == 1){
        $start = 0;
      }else{
        $start = ($thispage * 20) - 20;
      }
        // SQL-query
      $query = $GLOBALS['TYPO3_DB']->SELECTquery('*','tx_anzeigeprod_messtechnik','','','reg_nr',''.$start.',20');
      $res = $GLOBALS['TYPO3_DB']->sql(TYPO3_db, $query);
      
        // Auslesen aus der Datenbank und speichern in einer Uebergangsvariable
      while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)){
        $produkt=$this->auslesen($produkt,$row['reg_nr'],$row['kostnr'],$row['typnr'],$row['liefnr'],$row['pvornr'],$thispage);
      }
      
      if(empty($show) || $show == "mmittel"){
        $result = mysql_query("SELECT * FROM tx_anzeigeprod_messtechnik WHERE reg_nr='$check'");
        
        $rows = mysql_num_rows($result);
        $cols = mysql_num_fields($result);
        
        if($rows>=0) {
           // Spaltenbeschriftung
          while($row = mysql_fetch_row($result))  {
            for($i=5; $i < $cols; $i++) {
             $anzeigen= $anzeigen."<tr>
                <td>".htmlentities(mysql_field_name($result, $i))."</td>
                <td>".htmlentities($row[$i])."</td>
              </tr>";
            }
          }
         }
          $anzeigen = "<p>".$this->pi_linkToPage('Eintrag bearbeiten','397','_self',array('regnr' => $check))."</p>
        <b>Messmittel:</b><br><table border='0' width='100%' cellpadding='5' cellspacing='0'>".$anzeigen."</table>";
     }elseif($show == "abteilung"){
        $result = mysql_query("SELECT * FROM abteilungen WHERE Kost_Nr='$kostnr'");
        
        $rows = mysql_num_rows($result);
        $cols = mysql_num_fields($result);
        
        if($rows>=0) {
           // Spaltenbeschriftung
          while($row = mysql_fetch_row($result))  {
            for($i=0; $i < $cols; $i++) {
             $anzeigen= $anzeigen."<tr>
                <td>".htmlentities(mysql_field_name($result, $i))."</td>
                <td>".htmlentities($row[$i])."</td>
              </tr>";
            }
          }
         }
          $anzeigen = "
        <b>Abteilung:</b><br><table border='0' width='100%' cellpadding='5' cellspacing='0'>".$anzeigen."</table>";
     }elseif($show == "mmtyp"){
        $result = mysql_query("SELECT * FROM mmtypen WHERE Typ_Nr='$typnr'");
        
        $rows = mysql_num_rows($result);
        $cols = mysql_num_fields($result);
        
        if($rows>=0) {
           // Spaltenbeschriftung
          while($row = mysql_fetch_row($result))  {
            for($i=0; $i < $cols; $i++) {
             $anzeigen= $anzeigen."<tr>
                <td>".htmlentities(mysql_field_name($result, $i))."</td>
                <td>".htmlentities($row[$i])."</td>
              </tr>";
            }
          }
         }
          $anzeigen = "
        <b>Messmittel Typ:</b><br><table border='0' width='100%' cellpadding='5' cellspacing='0'>".$anzeigen."</table>";
     }elseif($show == "lieferant"){
      $result = mysql_query("SELECT * FROM lieferanten WHERE Lief_Nr='$liefnr'");
        
        $rows = mysql_num_rows($result);
        $cols = mysql_num_fields($result);
        
        if($rows>=0) {
           // Spaltenbeschriftung
          while($row = mysql_fetch_row($result))  {
            for($i=0; $i < $cols; $i++) {
             $anzeigen= $anzeigen."<tr>
                <td>".htmlentities(mysql_field_name($result, $i))."</td>
                <td>".htmlentities($row[$i])."</td>
              </tr>";
            }
          }
         }
          $anzeigen = "
        <b>Lieferant:</b><br><table border='0' width='100%' cellpadding='5' cellspacing='0'>".$anzeigen."</table>";
     }elseif($show == "pvor"){
      $result = mysql_query("SELECT * FROM pruefvorschriften WHERE Pvor_Nr='$pvornr'");
        
        $rows = mysql_num_rows($result);
        $cols = mysql_num_fields($result);
        
        if($rows>=0) {
           // Spaltenbeschriftung
          while($row = mysql_fetch_row($result))  {
            for($i=0; $i < $cols; $i++) {
             $anzeigen= $anzeigen."<tr>
                <td>".htmlentities(mysql_field_name($result, $i))."</td>
                <td>".htmlentities($row[$i])."</td>
              </tr>";
            }
          }
         }
          $anzeigen = "
        <b>Pr&uuml;fvorschrift:</b><br><table border='0' width='100%' cellpadding='5' cellspacing='0'>".$anzeigen."</table>";
     }
        $anzeige = '
        <table border="0" width="100%" height="100%" cellpadding="3" cellspacing="1" bgcolor="#000000">
           <tr>
              <td bgcolor="#FFFFFF" width="20%">'.$this->pi_linkToPage('Messmittel',$GLOBALS['TSFE']->id,'_self',array('show'=>'mmittel','regnr' => $check,'kostnr' => $kostnr,'typnr' => $typnr,'liefnr' => $liefnr,'pvornr' => $pvornr,'tx_anzeigeprod_pi1[page]' => $thispage)).'</td>
              <td bgcolor="#FFFFFF" width="20%">'.$this->pi_linkToPage('Abteilung',$GLOBALS['TSFE']->id,'_self',array('show'=>'abteilung','regnr' => $check,'kostnr' => $kostnr,'typnr' => $typnr,'liefnr' => $liefnr,'pvornr' => $pvornr,'tx_anzeigeprod_pi1[page]' => $thispage)).'</td>
              <td bgcolor="#FFFFFF" width="20%">'.$this->pi_linkToPage('MM Typ',$GLOBALS['TSFE']->id,'_self',array('show'=>'mmtyp','regnr' => $check,'kostnr' => $kostnr,'typnr' => $typnr,'liefnr' => $liefnr,'pvornr' => $pvornr,'tx_anzeigeprod_pi1[page]' => $thispage)).'</td>
              <td bgcolor="#FFFFFF" width="20%">'.$this->pi_linkToPage('Lieferant',$GLOBALS['TSFE']->id,'_self',array('show'=>'lieferant','regnr' => $check,'kostnr' => $kostnr,'typnr' => $typnr,'liefnr' => $liefnr,'pvornr' => $pvornr,'tx_anzeigeprod_pi1[page]' => $thispage)).'</td>
              <td bgcolor="#FFFFFF" width="20%">'.$this->pi_linkToPage('Pvor Nr.',$GLOBALS['TSFE']->id,'_self',array('show'=>'pvor','regnr' => $check,'kostnr' => $kostnr,'typnr' => $typnr,'liefnr' => $liefnr,'pvornr' => $pvornr,'tx_anzeigeprod_pi1[page]' => $thispage)).'</td>
           </tr>
           <tr>
               <td bgcolor="#FFFFFF" width="100%" height="100%" colspan="5">
                 '.$anzeigen.'
               </td>
           </tr>
        </table>
        ';
      $content = '
          <table border="0" width="100%" cellpadding="2" cellspacing="1">
            <tr>
              <td width="25" valign ="top">'.$produkt.'</td>
              <td width="*%" valign ="top">'.$anzeige.'</td>
            </tr>
          </table>
        '."<br><br>Seite/n: " . $seitenanzeigen;
    }
        
    return $this->pi_wrapInBaseClass($content);
	}     
        
    // Funktion zum speichern der ausgelesenen Werte in die Content Variable
  function auslesen($orig, $text, $kostnr, $typnr, $liefnr, $pvornr, $page){
    $list = $orig."<a href='index.php?".$GLOBALS['TSFE']->id."&tx_anzeigeprod_pi1[page]=$page&regnr=$text&kostnr=$kostnr&typnr=$typnr&liefnr=$liefnr&pvornr=$pvornr&show=mmittel'>$text</a><br>";
    return $list;
  }
}

if (defined("TYPO3_MODE") && $TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/anzeige_prod/pi1/class.tx_anzeigeprod_pi1.php"])	{
	include_once($TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/anzeige_prod/pi1/class.tx_anzeigeprod_pi1.php"]);
}   
    
?>

ich weiß ich mixe hier typo sql und normales sql, hat aber funktioniert, er will einfach nicht die parameter übernehmen ...

kann es sein das ich da irgendwo was mit dem cache machen muss? weil manchmal hat er es ein einziges mal angenommen und dann wieder für ne ganze zeit nichts ....

mehr hab ich nicht gmacht..
plugin hab ich mit dem kickstarter initialisiert.
hab keine extra einstellungen gemacht, was komisch ist, ich benutze nämlich das testsite-3.7 package und die vorinstallierten seiten funktionieren soweit ich das seh mit den paramterübergabe, und die anderen plugins(newloginbox) funktionieren auch.

formulare mit POST funktionieren, er möchte aber keine GET ankzeptieren.

hoffe das hilft euch, und ihr helft mir!!

andipesel ·

hi,

hier noch einige infos ...
damals als mir die fehlermeldung angezeigt wurde, war dies wegen folgender tabellen:

cache_hash,
cache_pages,
cache_pagesection

als ich dann die tabellen aktualisiert habe, hat er mir die fehlermeldung nicht mehr angezeigt(mysql_fetch_assoc())
aber meine plugins haben nicht mehr funktioniert, die parameterübergabe funktionierete nicht ...

jetzt, bin ich drauf gekommen wenn ich einen link anklicke, macht er beim ersten mal nichts, wenn ich aber gleich danach den cache in typo lösche, und dann nochmal auf wiederholen klicke geht es.

also, wie kann ich es verhindern das was im cache gespeichert wird???

es muss doch irgendwie möglich sein,

danke