Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Notice: Undefined variable

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Notice: Undefined variable

    Hallo zusammen,

    ich habe folgendes Problem: Bei Klick auf eine Grafik soll sich ein neues Fenster öffnen und die Grafik soll vergrößert dargestellt werden. Dies ist aber nicht der Fall, jedenfalls wird diese Fehlermeldung ausgegeben:Notice: Undefined variable: soll2 in (Pfad) on line 309. Das gleich Problem gilt auch für soll3, jedoch NICHT für soll4, da meckert er nicht.
    Wie kann ich diese Fehlermeldung umgehen? Wo liegt das Problem mit soll2 und soll3 ?
    Ich hoffe jemand kann mir helfen, bin Einsteiger und werde alleine damit nicht fertig
    Code:
    <?php
      include '../../../lib/php/portal/connect.php';
      include '../../../lib/php/portal/session.php';
      include '../../../lib/jpgraph/src/jpgraph.php';
      include '../../../lib/jpgraph/src/jpgraph_bar.php';
      include '../../../lib/jpgraph/src/jpgraph_line.php';
      include '../config.php';
      
    
    	
    	
    	
        
    	error_reporting(E_ALL);
      
      $month_count = 0; //Anzahl der darzustellenden Monate
      
      function calc_next_date($date)
      {
        $_month = substr($date,4,2);
        $_year = substr($date,0,4);
        $_next_date = 0;
        
        if($_month == 12)
        {
          $_next_date = $_year+1 . "01";
        } 
        elseif($_month == 01)
        {
          $_next_date = $_year . "02";
        }
        else
        {
          $_next_date = $date + 1;
        }
        
        return $_next_date; 
      }
      
      function calc_prev_date($date)
      {
        $_month = substr($date,4,2);
        $_year = substr($date,0,4);
        $_prev_date = 0;
        
        if($_month == "12")
        {
          $_prev_date = $_year . "11"; 
        } 
        elseif($_month == "01")
        {
          $_prev_date = $_year-1 . "12";
        }
        else
        {
          $_prev_date = $date - 1;
        }
        
        return $_prev_date;
      }
    	
    	$ziel = $cfg["ppm_ziel"]; 
    	
    	if ($_GET['start'] && $_GET['ende'] && $_GET['abt']) {
    		$start = $_GET['start'];
    		$ende = $_GET['ende'];
    	}
    
    	else 
      {
    		$start = 200407;
    		$ende = 200501;
    	}
    	$team = $_GET['abt'];
    	if ($team == "QKT1")
      {
    		$sql_abt = "team LIKE '1%' AND";
    	}
    	elseif($team == "QKT2")
      {
    		$sql_abt = "team LIKE '2%' AND";
    	}
    	elseif ($team == "AbtGesamt")
      {
    		$sql_abt = "";
    	}
    	else
      {
    		$sql_abt = "team = '$team' AND";
    	}
    	$werk = $_GET['werk'];
            if ( $werk == "Alle Werke"){
                $sql_werk = "";
            }else{
                $sql_werk = "AND werk = '$werk'";
            }
    	
    
    	$i = 0;
    	$y = array();
    	$y2 = array();
    	$datum = array();
    	$soll = array();
    	$max = array();
    	$end = $start;
    	 
      if($ende > $start)
      {
        while ($end <= $ende)
    	
    		
    		{
    		
    		
    		
    		$result2 = mysql_query("	SELECT (sum(t_bea_fk1+t_bea_fk2)/sum(t_gel))*1000000 as ppm
      									FROM ".$cfg['datatable']." 
      									WHERE $sql_abt zeitraum 
      									='$end'$sql_werk");
    									
    									
    		
    		$result = mysql_query("	SELECT (sum(t_bea_fk1+t_bea_fk2)/sum(t_gel))*1000000 as ppmol 
      									FROM ".$cfg['datatable']." 
      									WHERE $sql_abt zeitraum 
      									BETWEEN '$start' and '$end' $sql_werk");
    							
    									
    									
    									
    		
    									
    		$res2 = mysql_fetch_assoc($result2);
    		
    	    $res = mysql_fetch_assoc($result);
    		
    		
    		$y[$i] = round($res2['ppm']);
      		$max[$i] = round($res2['ppm']);
      		$y2[$i] = round($res['ppmol']);
    		$datum[$i] = $end;
    	     
    	 	// Hochsetzen des Zeitraumes;wenn Jahr12, dann Jahr++01
      		if (substr($end,4,2) == "12")
          {
      			$jahr = 0;
      			$tmp = "01";
      			$end = substr_replace($end,'01',4,2);
      			$jahr = (int)substr($end,0,4);
      			$jahr++;
      			$jahr = "".$jahr;
      			$end = substr_replace($end,$jahr,0,4);
      		}
      		else 
          {
      			$end++;
      		}
      		if (($end<=200901) && ($end<=200909))
    		{
    			$soll[$i] = $ziel;
    			$soll2[$i] = '';
    			$soll3[$i] = '';
    			$soll4[$i] = '';
    			if($end > $ende) 
    			{	
    				$soll2[$i] = $cfg["ppm_ziel_09"];$soll2[$i+1] = $cfg["ppm_ziel_09"];
    			}
    			else
    			{
    				$soll[$i+1] = $ziel;
    			}
    			if ($end>= 200910)
    			{
    				//$soll[$i] = $cfg["ppm_ziel_09"]; $soll[$i+1] = $cfg["ppm_ziel_09"];
    			}
    		}
    		elseif (($end<=$ende) && ($end<=200911))
    		{
    			
    			$soll2[$i] = $cfg["ppm_ziel_09"]; //Neue Ziellinie 2009
    			
    		}
      	If (($end <= 200910)) //neue Ziellinie 2010
      	{
    			$soll3[$i] = '';
      	}
      	elseif(($end<=$ende) && ($end<=201009))
      	{
      		$soll3[$i]= $cfg["ppm_ziel_10"]; $soll3[$i+1] = $cfg["ppm_ziel_10"];
      	}
      	
      		if(($end <= 201009))
      	{
      		$soll4[$i] = '';
      	}
      	else
      	{
      		$soll4[$i]= $cfg["ppm_ziel_10_2"]; $soll4[$i+1] = $cfg["ppm_ziel_10_2"];
      	}
      	
      	
      		$i++;
    		
          $month_count++;
      	}
      	
      	
      	//Ende While
        
      	if(max($max) < $ziel) 
        {
      		$maximum = $ziel*1.1;
      	}
      	else 
        {
      		$maximum = max($max)*1.1;
      	}							
    
     
      
      
      
      
    	  $ydata1 = $soll;	// Ziel
    	  $ydata2 = $y;		// ppm nicht kumuliert
    	  $ydata3 = $y2;	// ppm ohne Logistik
    //	  $ydata4 = $soll2;	// Ziel 09
    //	  $ydata5 = $soll3; //neues Ziel 2010
    //	  $ydata6 = $soll4; //neues Ziel ab 201009
    //  
    //	  
        
    	  $datax = $datum;
    
    	$graph = new Graph(800,560,"auto");
    	$graph->SetScale("textint");
    	$graph->title->Set(''.$_GET['abt'].' Zeitraum: '.$start.' - '.$ende.'');
      	$graph->yaxis->SetColor("black");
        $graph->yaxis->SetFont(FF_ARIAL,FS_NORMAL,10); 
        $graph->yaxis->title->SetFont(FF_ARIAL,FS_BOLD,14); 
        $graph->yaxis->SetTitle('ppm','middle');
        $graph->yaxis->SetTitlemargin(60);
      	$graph->xaxis->SetColor("black");
        $graph->xaxis->title->SetFont(FF_ARIAL,FS_BOLD,12);
        $graph->xaxis->SetFont(FF_ARIAL,FS_NORMAL,10);  
        $graph->xaxis->SetTitle('Zeitraum','middle');
        $graph->xaxis->SetTitlemargin(5);
      	$graph->xaxis->SetTickLabels($datax);
        
        //Drehung der Labels "x-Achse" um 45 Grad 
        //falls mehr als 12 Monate angezeigt werden
        if($month_count >= 13)
        {
          $graph->xaxis->SetTextLabelInterval(2);
          //$graph->xaxis->SetFont(FF_ARIAL);
          //$graph->xaxis->SetLabelAngle(45); 
        }
        
      	$graph->ygrid->SetFill(true,'#CDE0FE@0.5','#ECF3FF@0.5');
      	$graph->ygrid->Show();
      	$graph->xgrid->Show();
      	$graph->yscale->SetAutoMin(0);
      	$graph->yscale->SetAutoMax($maximum);
      	$graph->SetMarginColor('grey');
      	$graph->SetFrame(false);
      
      	
      
      	// Linie Q-ppm kum.
      	$lineplot2 = new LinePlot($ydata3);
      	$lineplot2->SetColor("chartreuse3");
      	$lineplot2->SetWeight(2);
      	$lineplot2->value->Show(); // Werte werden im Graphen angezeigt
      	$lineplot2->value->SetFormat('%0.0f');
        $lineplot2 ->value->SetColor("dimgray","darkred");
    	
    	$lineplot2->SetLegend("Q-ppm kumuliert");
      
      	 
        // Linie Q-ppm Einzelmonate
    	 $bplot = new BarPlot($ydata2);
    	 $bplot->SetWidth(0.6);
    	 $bplot->SetFillGradient("navy","lightsteelblue",GRAD_VER);
    	 $bplot->SetColor("navy");
         $bplot->value->Show(); 
         $bplot->value->SetColor("white","darkred");
    	 $bplot->value->SetFormat('%0.0f');
    	 $bplot->SetValuePos("bottom");
    	 $bplot->SetLegend("Q-ppm Einzelmonat");
         
    	 
    	 if(count($ydata1)>0){
    		 // Linie Ziel
    		$lineplot1 = new LinePlot($ydata1);
    		$lineplot1->SetColor("darkorange");
    		$lineplot1->SetWeight(2);
    	
    	//	$lineplot1->SetBarCenter();
    	}
    	
    	if(count($soll2)>0){
    		// Linie Ziel
      		$lineplot4 = new LinePlot($soll2);
      		$lineplot4->SetColor("darkorange");
      		$lineplot4->SetWeight(2);
    
    	}
      if(count($soll3)>0){
    		// Linie Ziel
    		$lineplot5 = new LinePlot($soll3);
    		$lineplot5->SetColor("darkorange");
    		$lineplot5->SetWeight(2);
    		$lineplot5->SetLegend("Ziel");
    	}
    	
      if(count($soll4)>0)
      	{
    		// Linie Ziel
    		$lineplot6 = new LinePlot($soll4);
    		$lineplot6->SetColor("darkorange");
    		$lineplot6->SetWeight(2);
    		
    	}
    	
    	// Add the plot to the graph
    	$graph->Add($bplot);
      	$graph->Add($lineplot2);
    	
    	if(count($ydata1)>0){
    //		$graph->Add($lineplot1);
    	}
    	if(count($soll2)>0){
    //		$graph->Add($lineplot4);
      	}
    	if(count($soll3)>0){
    //		$graph->Add($lineplot5);
      	}
      	if(count($soll4)>0){
    //		$graph->Add($lineplot6);
      	}
    
      	
        
      	//Legend	
        $graph->legend->Pos(0.13,0.07,"left","top");
        $graph->legend->SetColumns(3);
      	$graph->legend->SetFillColor('white');
      	$graph->legend->SetFrameWeight(0);
      	$graph->legend->SetShadow('lightgray',0);
        $graph->legend->SetFont(FF_ARIAL,FS_NORMAL,10);
      
      	// Display the graph
      	$graph->Stroke();
       }
       
       /* Ueberpruefung ob nur ein Monat dargestellt werden soll */ 
       elseif($start == $ende)
       {
          
          $query = "SELECT (sum(t_bea_fk1+t_bea_fk2)/sum(t_gel))*1000000 as ppmol FROM ".$cfg['datatable']." WHERE $sql_abt zeitraum = $start $sql_werk";
    	  $result = mysql_query($query); 
    	  $query2 = "SELECT (sum(t_bea_fk1+t_bea_fk2)/sum(t_gel))*1000000 as ppm
      									FROM ".$cfg['datatable']." 
      									WHERE $sql_abt zeitraum 
      									='$end' $sql_werk";
    	  $result2 = mysql_query( $query2);	
    
      
               
      	  $res = mysql_fetch_assoc($result);
          $res2 = mysql_fetch_assoc($result2);
          $y_ppm = array();
          $y_ppmol = array();
          $xaxis_skala = array();
         
          $y_ppm[] =  round($res2['ppm']); // ppm 
          $y_ppmol[] = round($res['ppmol']);	// ppm ohne Logistik
    	  $y_ppmol[] = round($res['ppmol']);
          $xaxis_skala[] = $start;
    	  
        
    	  if($start<=200901){
    	 	 $y_ziel=array($cfg["ppm_ziel"],$cfg["ppm_ziel"]);
    	  }elseif ($start<=200909)
    	  {
    	  	 $y_ziel=array($cfg["ppm_ziel_09"],$cfg["ppm_ziel_09"]);
    	  }
    	  elseif ($start<=200909) 
    	  	  {
    	  	 $y_ziel=array($cfg["ppm_ziel_10"],$cfg["ppm_ziel_10"]);
    	  }
       elseif ($start<=200909) 
    	  	  {
    	  	 $y_ziel=array($cfg["ppm_ziel_10_2"],$cfg["ppm_ziel_10_2"]);
    	  }
    	  
    	  
    	  if((max($y_ppm[0],$y_ppmol[0])) * 1.1>  $y_ziel[0]){
    	  	 $yaxis_skala = (max($y_ppm[0],$y_ppmol[0])) * 1.1;
    	   }else{
    	   	  	 $yaxis_skala = $y_ziel[0] * 1.1;
    	   }
        // echo $_GET['abt'];
    	  //var_dump($y_ziel);
          //Formatierung des Graphen
    
    	$graph = new Graph(800,560,"auto");
    	$graph->SetScale("textint");
    	$graph->title->Set(''.$_GET['abt'].' Zeitraum: '.$start.' - '.$ende.'');
      	$graph->yaxis->SetColor("black");
        $graph->yaxis->SetFont(FF_ARIAL,FS_NORMAL,10); 
        $graph->yaxis->title->SetFont(FF_ARIAL,FS_BOLD,14); 
        $graph->yaxis->SetTitle('ppm','middle');
        $graph->yaxis->SetTitlemargin(60);
      	$graph->xaxis->SetColor("black");
        $graph->xaxis->title->SetFont(FF_ARIAL,FS_BOLD,12);
        $graph->xaxis->SetFont(FF_ARIAL,FS_NORMAL,10);  
        $graph->xaxis->SetTitle('Zeitraum','middle');
        $graph->xaxis->SetTitlemargin(5);
      	$graph->xaxis->SetTickLabels($xaxis_skala);
      	$graph->ygrid->SetFill(true,'#CDE0FE@0.5','#ECF3FF@0.5');
      	$graph->ygrid->Show();
      	$graph->xgrid->Show();
      	$graph->yscale->SetAutoMin(0);
      	$graph->yscale->SetAutoMax($yaxis_skala);
      	$graph->SetMarginColor('grey');
      	$graph->SetFrame(false);
          
          
          //Balken ppm
          $bplot_ppm = new BarPlot($y_ppm);
          $bplot_ppm->SetFillGradient("navy","lightsteelblue",GRAD_VER);
          $bplot_ppm->SetColor("navy");
          $bplot_ppm->SetValuePos("top");
          $bplot_ppm->value->Show();
          $bplot_ppm->value->SetFormat('%0.0f');
          $bplot_ppm->SetLegend("Q-ppm");
          $graph->Add($bplot_ppm);
          
          
          // Linie Ziel
    		  $lplot = new LinePlot($y_ziel);
    		  $lplot->SetColor("darkorange");
    		  $lplot->SetWeight(2);
    		  $lplot->SetLegend("Ziel");
    		  $graph->Add($lplot);
    
    
          
          //$bplot_ppmol->SetWidth(0.2); 
    	  	$bplot_ppmol = new LinePlot($y_ppmol);
    	   	$bplot_ppmol->SetColor("chartreuse3");
      		$bplot_ppmol->SetWeight(2);
      		$bplot_ppmol->value->Show(); // Werte werden im Graphen angezeigt
      		$bplot_ppmol->value->SetFormat('%0.0f');
        	$bplot_ppmol ->value->SetColor("dimgray","darkred");
    	
    		$bplot_ppmol->SetLegend("Q-ppm kumuliert");
    
          $graph->Add($bplot_ppmol);
          
    
          //Legend
       		$graph->legend->Pos(0.13,0.07,"left","top");
       		$graph->legend->SetColumns(3);
      		$graph->legend->SetFillColor('white');
      		$graph->legend->SetFrameWeight(0);
      		$graph->legend->SetShadow('lightgray',0);
       		$graph->legend->SetFont(FF_ARIAL,FS_NORMAL,10);
          
          $graph->Stroke();
       }
      
    ?>

  • #2
    Die Notizen sollten die Ausgabe des Bildes nicht verhindern.

    Allerdings kann ich bei deinem gepostetem Code ad hoc nix finden wo das Bild auch ausgegeben/dargestellt wird?

    Kommentar


    • #3
      Zitat von stroke8 Beitrag anzeigen
      Wo liegt das Problem mit soll2 und soll3 ?
      Du willst auf soll2 zugreifen, obwohl die Variable nicht in jedem Fall definiert wurde. Initialisiere sie am Anfang, oder stelle sicher, dass sie in jedem Fall vorhanden ist.
      [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

      Kommentar


      • #4
        Ja. Wenn du wenig Ahnung hast, was du tust, kannst du vermutlich auch einfach error_reporting(0) setzen, um etwaige Fehler stumpf nicht anzuzeigen. Das ist letztlich aber natürlich nicht zu empfehlen, weil dann im Endeffekt eben unerwünschte Dinge passieren könnten, ohne dass du das mitbekommst.

        Ansonsten: $graph->Stroke() gibt das Ding wohl aus. Wenn das ein Bild erzeugt (also Daten in einem Image-Format wie PNG), dann zerschießen vorangehende Notices, die ja auch an den Client geschickt werden, die Ausgabe schon, weil der Client dann eben versucht, diese lesbaren Strings als PNG-Daten oder dergleichen zu interpretieren. Das führt dann in der Regel zu „Bild kann nicht angezeigt werden, weil es Fehler enthält“.

        PS: Wer sich fragt, warum der Code in #1 so seltsam formatiert ist: Tabs zur Einrückung sind klasse.

        Kommentar


        • #5
          Danke für die schnelle Antwort, ich habe error_reporting 0 gesetzt und siehe da, die Grafik wird wieder angezeigt. Super!

          Kommentar


          • #6
            Na dann, allzeit gute Fahrt
            [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
            [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

            Kommentar


            • #7
              Zitat von stroke8 Beitrag anzeigen
              Danke für die schnelle Antwort, ich habe error_reporting 0 gesetzt und siehe da, die Grafik wird wieder angezeigt. Super!
              Was ist daran super, wenn du Warnings ignorierst?
              Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

              Kommentar

              Lädt...
              X