[PHP] auf variable zugreifen

zerberos

Well-known member
ID: 58651
L
30 Mai 2006
75
0
Hallo,

ich habe eine Seite wo daten aus einer datenbank abgefragt werden und nach verschiedenen kriterien sortiert werden kann.

das ganze wird in einer variable $result gespeichert.

jetzt hab ich in der selben php datei einen button der auf eine function zum erzeugen einer pdf datei verweist.

in dieser function wird eine andere php seiten includet.

nur jetzt hab ich das problem das ich nachdem ich sortiert habe und mir das sortierte ergebnis angezeigt habe und dann auf den pdf erzeugen button drücke in der includeten datei keinen zugriff auf die variable

hab schon versucht das ganze in einer session zu speichern. aber das hat auch nicht geklappt

mitarbeiter-betrieb.php
PHP:
<?
session_start();
include 'sessionhelpers.inc.php';
include 'connect.php';

// Prüfung ob man eingeloggt ist
if (!logged_in())
    {
    	echo 'nicht eingeloggt ';
    }
else
	{
		// Abfrage des Datensatzes
		$result = mysql_query("SELECT `id`, `betrieb`, `funktion`, `kstelle`, `nachname`, `vorname`, `schule`, `azeit`, `stunden`, `fschein` FROM `mitarbeiter` ORDER BY id");
		$result2 = mysql_query("SELECT DISTINCT `betrieb` FROM `mitarbeiter`");
			
		if (isset($_POST['submit']))
			{
				$result = mysql_query("SELECT `id`, `betrieb`, `funktion`, `kstelle`, `nachname`, `vorname`, `schule`, `azeit`, `stunden`, `fschein` FROM `mitarbeiter` WHERE `betrieb`='".$_POST[select1]."' ORDER BY '".$_POST[select2]."'");
                $_SESSION['pdfvar'] = $result;			
			}
		
		if (isset($_POST['pdfmaker']))
			{
			pdf();
			}
		
		?>
			<div align="center">
 			<table border="1" cellspacing="0" cellpadding="0">
 				<tr>
 					<form name="form1" method="post" action="mitarbeiter-betrieb.php">
					 Betrieb:
					<select name="select1">
					<?
					while($row=mysql_fetch_row($result2)){
					echo "<option value=".$row[0].">".$row[0]."</option>";
					}
					?>
					 </select>
  						Sortieren nach: 
						<select name="select2">
  							<option value="id">id</option>
  							<option value="funktion">Funktion</option>
							<option value="kstelle">Kostenstelle</option>
							<option value="nachname">Nachname</option>
							<option value="vorname">Vorname</option>
							<option value="stunden">Arbeitsstunden</option>
							<option value="fschein">Führerschein</option>
  						</select>
						<input type="submit" name="submit" value="Go">
						<input type="submit" name="pdfmaker" value="PDF erzeugen!">
					</form>
				
			</tr>
  				<tr bgcolor="#999999">
    				<td>ID</td>
    				<td>Betrieb</td>
    				<td>Funktion</td>
    				<td>Kostenstelle</td>
    				<td>Nachname</td>
  					<td>Vorname</td>
    				<td>Schule</td>
    				<td>Arbeitszeit</td>
   					<td>Stunden</td>
    				<td>Führerschein</td>
  				</tr>
<?		
		while($row = mysql_fetch_array($result))
			{
				echo  "<tr bgcolor='#CCCCCC'>"; 
				echo    "<td> ".$row['id']."</td>";
				echo    "<td> ".$row['betrieb']."</td>";
				echo    "<td> ".$row['funktion']."</td>";
				echo    "<td> ".$row['kstelle']."</td>";
				echo    "<td> ".$row['nachname']."</td>";
				echo    "<td> ".$row['vorname']."</td>";
				echo    "<td> ".$row['schule']."</td>";
				echo    "<td> ".$row['azeit']."</td>";
				echo    "<td> ".$row['stunden']."</td>";
				echo    "<td> ".$row['fschein']."</td>";
				echo   "</tr>";
			}
			
			echo "</table>";
			echo "</div>";
}

function pdf()
{
$name = "Betrieb";
include ('pdf-maker.php');
}

?>

pdf-maker.php
PHP:
<?
define('FPDF_FONTPATH','fpdf\font\\');
include ('fpdf\fpdf.php');
include ('connect.php');

$pdf =& new FPDF(L);

$pdf->AddPage();
$pdf->SetFont('Arial','B','10');
$pdf->Write(10,"Auswertung Mitarbeiter nach $name");
$pdf->Ln();
$pdf->Ln();
$pdf->Cell(10,7,'ID',1);
$pdf->Cell(50,7,'Betrieb',1);
$pdf->Cell(50,7,'Funktion',1);
$pdf->Cell(17,7,'K-Stelle',1);
$pdf->Cell(30,7,'Nachname',1);
$pdf->Cell(30,7,'Vorname',1);
$pdf->Cell(30,7,'Schule',1);
$pdf->Cell(25,7,'Arbeitszeit',1);
$pdf->Cell(17,7,'Stunden',1);
$pdf->Cell(25,7,'Führerschein',1);
$pdf->Ln();

//$result = mysql_query("SELECT `id`, `betrieb`, `funktion`, `kstelle`, `nachname`, `vorname`, `schule`, `azeit`, `stunden`, `fschein` FROM `mitarbeiter` WHERE `betrieb`='".$_POST[select1]."' ORDER BY '".$_POST[select2]."'");
	
	while( $row=mysql_fetch_array($_SESSION['pdfvar']) )
		{
$pdf->Cell(10,7,$row['id'],1);
$pdf->Cell(50,7,$row['betrieb'],1);
$pdf->Cell(50,7,$row['funktion'],1);
$pdf->Cell(17,7,$row['kstelle'],1);
$pdf->Cell(30,7,$row['nachname'],1);
$pdf->Cell(30,7,$row['vorname'],1);
$pdf->Cell(30,7,$row['schule'],1);
$pdf->Cell(25,7,$row['azeit'],1);
$pdf->Cell(17,7,$row['stunden'],1);
$pdf->Cell(25,7,$row['fschein'],1);
$pdf->Ln();
		}

$pdf->Output('datei.pdf');
?>

Fehler momentan:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Programme\xampp\htdocs\personal\pdf-maker.php on line 27
 
Hallo, hab jetzt folgendes eingefügt in die function pdf()

PHP:
echo $result;
$res = mysql_query($result);
echo mysql_error();

jetzt kommt folgender fehler:
Query was empty
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Programme\xampp\htdocs\personal\pdf-maker.php on line 27

Ist doch das was ich vermutet habe oder? das die variable $result nach dem ersten ausführen nicht gespeichert wird und somit die pdf funktion beim späteren drücken auf den button keinen zugriff mehr darauf hat bzw die lehr ist

Nur wie behalte ich den Wert in der $result im system?
 
zerberos schrieb:
Nur wie behalte ich den Wert in der $result im system?
Guck dir doch mal den obigen Code genauer an:
$result = mysql_query(...);
$_SESSION
['pdfvar'] = $result;
while( $row=mysql_fetch_array($_SESSION['pdfvar']) )
Du kannst doch nicht ein Datenbankergebnis-Handle in der Session speichern und erwarten, dass es nach Scriptendigung noch funktioniert :LOL: Wenn ein Script zu Ende is, werden automatisch alle DB-Verbindungen geschlossen, ergo auch die Handles alles ungültig.

Leg doch einfach den Querystring in der Session-Variable ab und ruf mysql_query() im zweiten Script auf.
 
hmm jo.

das problem ist ja der user lädt das script

Dann wird die Datenbank ausgelesen

Dann kann der das ganze sortieren lassen wenn er will.

Und wenn das sortierte ergebniss angezigt wird hat er noch die möglichkeit das sortierte ergbniss in nen pdf zu packen
 
Im Prinzip musst du folgendes machen:
PHP:
// Sortierparameter einstellen und Query builden
$querystring="SELECT .... FROM ... $orderby $limits";
$res=mysql_query($querystring);

// PDF ? Oder normal HTML ?
if(isset($_GET['dopdf']) && $_GET['dopdf']==1)
{
  $pdf=new pdf();
  $pdf->layout_stuff();
  // Ergebnis als PDF ausgeben
  while($row=mysql_fetch_array($res))
    $pdf->add_line($row);
  $pdf->output();
}
else
{
  output_table_header_4_page();
  // Ergebnis als HTML ausgeben
  while($row=mysql_fetch_array($res))
    output_table_line($row);
  output_footer_4_page();
}
// Abfrage freigeben
mysql_free_result($res);