kohmaier
Goto Top

PHP, an eine variable Zahl vorne Nullen hängen?

Hi,

Das Problem ist soweit mittels sprintf() gelöst.

Allerdings ist mein neues Problem nun, dass ab 009 nicht auf 010 springt sondern erst auf 001 und wieder auf 011. Im späteren Verlauf des Codes bzw. Programms wird die Nummer mit dem Datum verknüft und ausgegeben, vor der Ausgabe noch in einer Session gespeichert.

Also hier einmal die stark vereinfachte Routine:


$inhalt <- fopen(irgendwas.txt); #Zahl von TxT-Datei holen, angefangen bei n=1 und nach dem lesen wird n=n+1 gespeichert.

$inhalt = sprintf("%03d\n", $inhalt); #Nullen vornedrann

$rechnummer = $rechnummer."-".$datum; #Zahl mit Nullen und Datum verkünpfen

$_SESSION['r_id'] = $rechnummer; #Übergabe an die andere PHP-Datei
$rechnummer = $_SESSION['r_id'];

$html .= 'Nr.:&nbsp; '.$rechnummer.'</p>'; #Ausgabe


Najo, habe das auch mal mit einer If verzweigung versucht, um die jeweiligen "states" dementsprechend zu manipulieren, alos if( rechnummer < 10) dann häng vorne 2 Nullen drann usw. war aber nicht die Lösung von meinem Problem. Ich hab den verdacht das es bei der Sessionübergabe ein Problem gibt, bin noch nocht zum testen und debuggen gekommen. Vielleicht hat jemand von Euch eine Idee, würde mich freuen?

Gruß,
Phil

Content-Key: 481859

Url: https://administrator.de/contentid/481859

Ausgedruckt am: 28.03.2024 um 18:03 Uhr

Mitglied: em-pie
em-pie 05.08.2019 aktualisiert um 09:28:59 Uhr
Goto Top
Moin,

Je nach verwendetem DBMS kann man das direkt befindet SQL-Abfrage erledigen:

Für MS SQL kann man das REPLICATE() nutzen.
https://www.w3schools.com/sql/func_sqlserver_replicate.asp

Der erste Parameter wäre bei dir die „0“ und die Anzahl (zweiter Parameter) ermittelst du mit der Länge der Rechnungsnummer LEN()

Select
 REPLICATE(0, 3 - LEN(Rechnungsnummer))
From
 Invoices

MYSQL mag es ggf. ein Derivat für geben.


Alternativ die Zahl erst in PHP anpassen:
https://stackoverflow.com/questions/1699958/formatting-a-number-with-lea ...

Gruß
em-pie

P.S.
tue dir obendrein noch den Gefallen, und validiere die Werte zunächst. Nicht einfach Plain die Werte verwenden, die aus der DB/ einem Post/ einem Get kommen. Wenn dir jemand Murks mitgibt, kann das mal ganz schnell deine DB löschen.

P.P.S.
habe jetzt erst vernommen, dass du nicht von einer DB, sondern aus einer Textdatei kommst. Warum der Sprung 009 --> 001 -> 011 kommt, weiss ich nicht, dazu müssten man vermutlich deinen gesamten Code einmal Debuggen.
Mitglied: Kohmaier
Kohmaier 05.08.2019 aktualisiert um 11:29:26 Uhr
Goto Top
Hallo em-pie,

Das ich die R_Nummern über SQL generieren lasse wäre wirklich eine gute Idee, die Rechnungsnummern würde ich dann als primary key bzw. unique declarieren, da diese einmalig genau so wie die Kundennummer_id sein soll.

Das was mir noch kummer macht, ist die generierung der einzelnen Rechnungen per se, die Datenbank hängt nicht mit einem materiellen Warenwirtschaftssystem zusammen und die Rechnungsposten können von Standart einträgen abweichen.

Ein Textfeld habe ich mir gedacht, in der induviduelle Posten eingetragen werden können, scheint etwas umständlich zu sein, dazu muss auch gesagt werden das jede Rechnung manuell durch ein paar klicks erstellt sein soll.

Um standard Posten einzufühgen wäre eine Art Formular denkbar, ich frage mich nur ob da nicht die benutzerfreundlichkeit darunter leidet, wie würdest du es machen?

Und wie würdest du eine Vorschau der gerade zu erstellenden Rechnung umsetzen, also zB. eine Rechnung entsprechend formatiert in einem kleinen Fenster ausgeben. Ein Export der Rechnung als .pdf oder .docx ist aktuell möglich, allerdings wäre es mir lieb auf den docx in zukunft zu verzichten und den schreibkram bereits in php erledigt zu haben.

str_pad hatte ich auch schon probiert, liefert exakt den gleichen Fehler wie sprintf und mein Wenn/Dann Algorithmus....???

P.P.S.
habe jetzt erst vernommen, dass du nicht von einer DB, sondern aus einer Textdatei kommst. Warum der Sprung 009 --> 001 -> 011 kommt, weiss ich nicht, dazu müssten man vermutlich deinen gesamten Code einmal Debuggen.

Jap, ich werde diesbezüglich noch ein paar Tests durchführen.

Hier ein Auszug:

<?php

$inhalt = 0;
$rechnungsnummer = 0;

//In $name den Wert der Session speichern
//$Rechnungsnummer_id = 

if ( isset($_POST['pdfsenden']) or  isset($_POST['word']) ) //if ( isset($_POST['Rechnungfertigmachen']))  
{
// Lesen der Datei
$dateinamen = "rechnungsnrzaehler.txt";  
$handle = fopen ($dateinamen, "r");  
$inhalt = fread ($handle, filesize ($dateinamen));
fclose ($dateinamen);

$inhalt = $inhalt + 1;

// Schreiben des neuen Wertes
$handle = fopen ("rechnungsnrzaehler.txt", "w");  
fwrite ($handle, $inhalt);
fclose ($dateinamen);

}
// Lesen der Datei
$dateinamen = "rechnungsnrzaehler.txt";  
$handle = fopen ($dateinamen, "r");  
$inhalt = fread ($handle, filesize ($dateinamen));
fclose ($dateinamen);



//$inhalt = sprintf("%d\n", $inhalt); 

$rechnungsnummer = $inhalt;


$zahl1="0";  

//$inhalt = sprintf("%03d\n", $inhalt); 
 
 
if( $rechnungsnummer < 10 )
{
	$rechnungsnummer  = $zahl1."0".$rechnungsnummer;  
}

if( $rechnungsnummer == 10 )
{	
	$rechnungsnummer  = $zahl1.$rechnungsnummer;
}

if( $rechnungsnummer > 10 &&  $rechnungsnummer < 100 )
{
	$rechnungsnummer  = $zahl1.$rechnungsnummer;
}

/* 
*/



//$datum = date("M.Y"); 

$datum = date("Y");  
$rechnungsnummer = $rechnungsnummer."-".$datum;  




if(isset($rechnungsnummer))
{
   $_SESSION['r_id'] = $rechnungsnummer;  
}



?>


P.P.S.
habe jetzt erst vernommen, dass du nicht von einer DB, sondern aus einer Textdatei kommst. Warum der Sprung 009 --> 001 -> 011 kommt, weiss ich nicht, dazu müssten man vermutlich deinen gesamten Code einmal Debuggen.

Nennt man das dann einen sql injection?


Vielen Dank schon mal für die Tipps!

Viele Grüße,
Phil
Mitglied: Dani
Dani 05.08.2019 um 20:34:52 Uhr
Goto Top
Moin,
Ich hab den verdacht das es bei der Sessionübergabe ein Problem gibt, bin noch nocht zum testen und debuggen gekommen. Vielleicht hat jemand von Euch eine Idee, würde mich freuen?
Es gibt in PHP die Funktion str_pad(). Damit solltest du die Prüfroutine sparen können und zugleich einen String aus der Integer machen. Somit dürfte auch die Sessionübergabe keine Rolle mehr spielen.


Gruß,
Dani
Mitglied: Kohmaier
Kohmaier 05.08.2019 um 20:56:04 Uhr
Goto Top
Ja ich weiß, liefert das selbe Resultat siehe meinen letzte Post ;)
Mitglied: Dani
Dani 05.08.2019 um 21:23:51 Uhr
Goto Top
Moin,
bei mir funktioniert es wie es soll. Nachstehend mein Beispiel Schnipsel:
<?php

$inhalt = 0;
$rechnungsnummer = 0;


// Lesen der Datei
$dateinamen = "rechnungsnrzaehler.txt";  
$handle = fopen ($dateinamen, "r");  
$inhalt = fread ($handle, filesize ($dateinamen));
fclose ($dateinamen);

$inhalt += 1;

// Schreiben des neuen Wertes
$handle = fopen ("rechnungsnrzaehler.txt", "w");  
fwrite ($handle, $inhalt);
fclose ($dateinamen);

$rechnungsnummer = str_pad($inhalt, 10, "0", STR_PAD_LEFT);  

$datum = date("Y");  
echo $rechnungsnummer."-".$datum;  
?>
Getestet unter PHP 7.2 und Apache2.

Resultat:
0000000009-2019
0000000010-2019
0000000011-2019


Gruß,
Dani
Mitglied: Kohmaier
Kohmaier 05.08.2019 um 23:11:13 Uhr
Goto Top
Hey, danke dir vielmals für den Debugg-Test!

Kannst du bitte noch versuchen $rechnungsnummer via Session auf ein anderes PHP Skript zu übergeben und dann mit diesem die Ausgabe von der Variable zu generieren?

Habe da einen Verdacht, den ich noch nicht begründen kann. :/

Grüße,
Phil
Mitglied: Dani
Dani 06.08.2019 um 19:33:00 Uhr
Goto Top
Moin,
Kannst du bitte noch versuchen $rechnungsnummer via Session auf ein anderes PHP Skript zu übergeben und dann mit diesem die Ausgabe von der Variable zu generieren?
die nächste Tage leider nicht - bin unterwegs.

Habe da einen Verdacht, den ich noch nicht begründen kann. :/
Der wäre?


Gruß,
Dani
Mitglied: Kohmaier
Kohmaier 12.08.2019 um 00:50:12 Uhr
Goto Top
Keine Problem.

Zitat von @Dani:

Habe da einen Verdacht, den ich noch nicht begründen kann. :/
Der wäre?

Entweder wird da etwas bei der Session-Übergabe durcheinander gebracht oder mit der Ausgabe
$html .= 'Nr.:&nbsp; '.$rechnummer.'</p>'; #Ausgabe  
stimmt etwas nicht, letzteres wird dann als docx ausgegeben und kann in Word zusätzlich bearbeitet werden.

Naja, evtl. komm ich die Woche nochmal selber zum testen, wenn du aber nochmal paar minütchen Zeit hast würd mich das sehr freuen^^

Grüße
Mitglied: Dani
Dani 12.08.2019 um 21:14:02 Uhr
Goto Top
Moin,
Naja, evtl. komm ich die Woche nochmal selber zum testen, wenn du aber nochmal paar minütchen Zeit hast würd mich das sehr freuen^^
könntest du mir dein Versuch zur Verfügung stellen? Dann hätte ich schon mal ein Gerüst und könnte dort den Fehler suchen.
Ansonsten wirst du dich gedulden müssen. Muss kurzfristig zwei Kollegen vertreten und so wie es aussieht, wird das ne heiße Woche... face-confused


Gruß,
Dani
Mitglied: Kohmaier
Kohmaier 12.08.2019 aktualisiert um 22:15:48 Uhr
Goto Top
Danke dir, hab es dir per pn geschickt

Gruß,
Phil
Mitglied: Dani
Dani 14.09.2019 um 10:18:21 Uhr
Goto Top
Moin,
jetzt habe ich endlich Zeit für dich bzw. dein Problem. face-wink
Kannst du bitte die Dateien in eine ZIP-Datei packen und hier bzw. via PN zu kommen lassen? Bin ehrlich gesagt zu faul, alles zusammen zu suchen und anzulegen. face-confused


Gruß,
Dani
Mitglied: Kohmaier
Kohmaier 14.09.2019 um 21:57:09 Uhr
Goto Top
Hi, oke ich kann hier Code einfügen aber als Datei weiß ich gerade nicht wie das funktioniert?

Wenn du es als Datei präferierst, kannst du mir gerne auch einen Filehoster deiner Wahl empfehlen oder deine Email, ansonsten poste ich es erst mal hier rein. Selbst bei den PN finde ich keine Option welche einen Dateiaustausch zulässt?


Datei1: Rechnungsnummer erzeugen

<?php

$inhalt = 0;
$rechnungsnummer = 0;


if ( isset($_POST['pdfsenden']) or  isset($_POST['word']) )  
{

// Lesen der Datei
$dateinamen = "rechnungsnrzaehler.txt";  
$handle = fopen ($dateinamen, "r");  
$inhalt = fread ($handle, filesize ($dateinamen));
fclose ($dateinamen);

$inhalt = $inhalt + 1;


// Schreiben des neuen Wertes
$handle = fopen ("rechnungsnrzaehler.txt", "w");  
fwrite ($handle, $inhalt);
fclose ($dateinamen);

}
// Lesen der Datei
$dateinamen = "rechnungsnrzaehler.txt";  
$handle = fopen ($dateinamen, "r");  
$inhalt = fread ($handle, filesize ($dateinamen));
fclose ($dateinamen);




$rechnungsnummer = $inhalt;


$zahl1="0";  

//$inhalt = sprintf("%03d\n", $inhalt); 
 
 
if( $rechnungsnummer < 10 )
{
	$rechnungsnummer  = $zahl1."0".$rechnungsnummer;  
}

if( $rechnungsnummer == 10 )
{	
	$rechnungsnummer  = $zahl1.$rechnungsnummer;
}

if( $rechnungsnummer > 10 &&  $rechnungsnummer < 100 )
{
	$rechnungsnummer  = $zahl1.$rechnungsnummer;
}

/* 
*/



$datum = date("Y");  
$rechnungsnummer = $rechnungsnummer."-".$datum;  


if(isset($rechnungsnummer))
{
   $_SESSION['r_id'] = $rechnungsnummer;  
}


?>



Datei2: Rechnungsnummer als Word Dukoment generieren


<?php
    header("Content-type: application/vnd.ms-word");  

	header("Expires: 0");//no-cache  
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");//no-cache  

	require('inc/db.php'); //Für die Kundendaten wie Adresse...  

	setlocale(LC_TIME, "de_DE.utf8");  


$aMonthNamesDE = [
    'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni',  
    'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'];  


$dt = new DateTime();

$monate = array(1=>"Januar",  
                2=>"Februar",  
                3=>"M&auml;rz",  
                4=>"April",  
                5=>"Mai",  
                6=>"Juni",  
                7=>"Juli",  
                8=>"August",  
                9=>"September",  
                10=>"Oktober",  
                11=>"November",  
                12=>"Dezember");  



$html .= '<br>'.$aMonthNamesDE[$dt->format('n')-1].' ';  




if(!isset($_SESSION['k_id']))  
{
//die("Bitte erst einloggen");  
}

if(!isset($_SESSION['r_id']))  
{
//die("Bitte erst einloggen");  
}


$kundennummer_id = $_SESSION['k_id'];  
$rechnungsnummer = $_SESSION['r_id'];  

$anrede1 = $_SESSION['anrede1_id'];  
$anrede2 = $_SESSION['anrede2_id'];  

$vorname1 = $_SESSION['vorname1_id'];  
$nachname1 = $_SESSION['nachname1_id'];  

$nachname2 = $_SESSION['nachname2_id'];  

$straße = $_SESSION['straße'];  
$hausnummer = $_SESSION['hausnummer'];  

$plz_id = $_SESSION['plz_id'];  
$Stadt = $_SESSION['stadt_id'];  

$urkundenrolle = $_SESSION['urkunde_id'];  
$projektname = $_SESSION['projektname'];  

$urkundenrolle = $_SESSION['urkunde_id'];  
$projektname = $_SESSION['projektname'];  

$objektstraße = $_SESSION['objektstraße'];  
$objektplz_id = $_SESSION['objektplz_id'];			  

$kaufpreis = $_SESSION['kaufpreis'];  

$rechnungs_nummer = $rechnungsnummer;

$rechnungs_datum = date("d.F Y");  






$rechnungs_footer = "<br><br>";  
$rechnungs_footer2 = "<br><br>";  







$html .= '<br><br><br><br>';  


$html .= '<br>'.$vorname1.' '.$nachname1.'';  
$html .= '<br>'.$straße.' '.$hausnummer.'';  
$html .= '<br>'.$plz_id.' '.$Stadt.'<br>';  



$html .= '<br><br><br><br><br><br>';  



$html .= '<p align="right">  '.date("d.").''.$aMonthNamesDE[$dt->format('n')-1].''.date(".Y").'</p>'; //Rechnungsdatum  



$html .= '<br><br><br>';  

$einmonat = (time() - (31 * 24 * 3600));



$html .= 'Leistungszeitraum:&nbsp; '.$aMonthNamesDE[$dt->format('n')-2].' '.date(Y).'</p>';  
$html .= '<br><br>';  



$html .= '<b>Rechnung:&nbsp; '.$rechnungs_nummer.'</b></p>';  
$html .= '<br>';  

$html .= '<b>Urk. Rolle Nr.:&nbsp; '.$urkundenrolle.'</b><br>';  
$html .= '<br>';  

$html .= '<b>Bauvorhaben:&nbsp; '.$objektstraße.', '.$objektplz_id.' '.$projektname.'</b><br>';  
$html .= '<br>';  





$html .= '<br>';  

/**/

if( $nachname2 !== '' )  
{
	if( $nachname1 !== $nachname2 )
	{
		if( $anrede1 =  "Herr" )  
		{
			$html .= '<b>Sehr geehrte '.$anrede2.' '.$nachname2.' und '.$anrede1.' '.$nachname1.'</b>';   //'.$nachname1.', sehr geehrte Frau '.$nachname2.'</b>';  
		}else
		{
			$html .= '<b>Sehr geehrte '.$anrede1.' '.$nachname1.' und '.$anrede2.' '.$nachname2.'</b>';  
			//$html .= '<b>Sehr geehrte '.$nachname1.', sehr geehrter  '.$nachname2.'</b>';  
		}
	
	}else
	{
		if( $anrede1 ==  "Herr" )  
		{
			$html .= '<b>Sehr geehrte '.$anrede2.' und '.$anrede1.' '.$nachname1.'</b>';   
			//$html .= 'debug';  
		}
		if( $anrede1 == "Frau" && $anrede2 == "Frau" )  
		{
			$html .= '<b>Sehr geehrte '.$anrede2.' und '.$anrede1.' '.$nachname1.'</b>';   
		}
		if( $anrede1 == "Herr" && $anrede2 == "Herr" )  
		{
			$html .= '<b>Sehr geehrter '.$anrede2.' und '.$anrede1.' '.$nachname1.'</b>';   
		}
	}
}


if( $nachname2 == '' )  
{
	if( $anrede1 ==  "Herr" )  
	{
		$html .= '<b>Sehr geehrter Herr '.$nachname1.'</b>';  
		//$html .= 'debug2';  
	}
	else
	{
		$html .= '<b>Sehr geehrte Frau '.$nachname1.'</b>';  
	}
}




$html .= '<br><br><br>';  


$html .= '<br>Die Kaufpreisfälligkeit liegt vor.';  
$html .= '<br>Bitte überweise Sie die xx Kaufpreisrate von xx %';  


$html .= '<br><br><br>';  


$html .= '<b>Kaufpreis:&nbsp; '.$kaufpreis.' €</b></p>';  
$html .= '<br>';  

$html .= '<p align="right">-----------------------------------<span class="tab">  </span><span class="tab">   </span></p>';  
$html .= '<br>';  

$html .= '<p align="right">-----------------------------------<span class="tab">  </span><span class="tab">   </span></p>';  
$html .= '<br>';  

$html .= '<p align="right">-----------------------------------<span class="tab">  </span><span class="tab">   </span></p>';  



$html .= '<br><br><br><br><br>';  



$html .= nl2br($rechnungs_footer);
$html .= nl2br($rechnungs_footer2);



$doc_body = "$html";  


    echo "<html>";  
    echo "$doc_body";  
    echo "</html>";  


$filename = "Rechnung" . "-" . $rechnungs_datum . ".doc";  
header('Content-disposition: attachment; Filename='.$filename);  



?>
Mitglied: Dani
Dani 18.09.2019 um 11:46:53 Uhr
Goto Top
Moin,
Selbst bei den PN finde ich keine Option welche einen Dateiaustausch zulässt?
Du hast natürlich recht. Das geht hier leider nicht. Hab ich glatt mit einerr Plattform verwechselt... face-sad
Meine geschäftliche E-Mailadresse möchte ich an der Stelle ungern herausgeben. face-wink

Ich hab nun nun die datei1.php und datei2.php bei mir angelegt. Was mir noch nicht klar ist, welche Datei ruft die andere auf? Ich konnte weder eine Form mit GET/POST finden noch eine session_start().


Gruß,
Dani
Mitglied: Kohmaier
Kohmaier 18.09.2019 aktualisiert um 15:50:22 Uhr
Goto Top
Ok, hatte ich vergessen mit zu posten, sry! Die Session wird seperat gestartet und die Knden-Daten aus der DB gelesen... die Zeilen können für den Test raus, siehe weiter unten.


Die db.php

<?php
session_start();

// Zeit bis zum »timeout« in Sekunden
$session_timeout = 1800; // 1800 Sek./60 Sek. = 30 Minuten
if (!isset($_SESSION['last_visit'])) {  
  $_SESSION['last_visit'] = time();  
  // Aktion der Session wird ausgeführt
}
if((time() - $_SESSION['last_visit']) > $session_timeout) {  
  session_destroy();
  // Aktion der Session wird erneut ausgeführt
}
$_SESSION['last_visit'] = time();  



error_reporting(E_ALL);
// error_reporting(0);

$db = new mysqli('localhost', 'philo', 'eraser#62', 'zugangsdaten');  
$db1 = new mysqli('localhost', 'philo', 'eraser#62', 'kontakte');  

$db2 = new mysqli('localhost', 'philo', 'eraser#62', 'kunden2');  

$db->set_charset('utf8');  
$db1->set_charset('utf8');  

$db2->set_charset('utf8');  

if ($db->connect_errno){
    die('keine db');  
}

if ($db1->connect_errno){
    die('keine db');  
}

if ($db2->connect_errno){
    die('keine db');  
}

function bereinigen($inhalt='') {  
    $inhalt = trim($inhalt);
    $inhalt = htmlentities($inhalt, ENT_QUOTES, "UTF-8");  
    return($inhalt);
}
?>



Diese Sessions brauchst du zum reinen testen eigentlich nicht, hatte vergessen diese raus zunehmen....

$kundennummer_id = $_SESSION['k_id'];  


$anrede1 = $_SESSION['anrede1_id'];  

$anrede2 = $_SESSION['anrede2_id'];  

$vorname1 = $_SESSION['vorname1_id'];  

$nachname1 = $_SESSION['nachname1_id'];  

$nachname2 = $_SESSION['nachname2_id'];  

$straße = $_SESSION['straße'];  

$hausnummer = $_SESSION['hausnummer'];  

$plz_id = $_SESSION['plz_id'];  

$Stadt = $_SESSION['stadt_id'];  

$urkundenrolle = $_SESSION['urkunde_id'];  

$projektname = $_SESSION['projektname'];  

$urkundenrolle = $_SESSION['urkunde_id'];  

$projektname = $_SESSION['projektname'];  

$objektstraße = $_SESSION['objektstraße'];  

$objektplz_id = $_SESSION['objektplz_id'];			  


Achja, noch mal Danke das du mir hilfst aber opfere bitte nicht all zu viel Zeit mit diesem Problem hier, eigentlich sollten Die echnungsnummern noch mit in die DB implementiert werden und falls der primary key auf die Rechnungsnummer fällt, wird der Nummergenerator evtl. nicht mehr benötigt.

Ich erwähne das hier als Randnotiz, weil es noch nicht sicher ist, wohin die Reise mit der Software geht^^
Mitglied: Dani
Dani 18.09.2019 um 16:02:52 Uhr
Goto Top
Moin,
ich frage einmal andersherum:
Wie rufst du aus/von datei1.php die datei2.php auf? Ich finde in datei1.php kein Formular, welches ein POST Request an datei2.php schickt. Irgendwie muss die Rechnungsnummer ja übergeben werden.


Gruß,
Dani
Mitglied: Kohmaier
Kohmaier 18.09.2019 um 16:39:50 Uhr
Goto Top
Ah ok...

in der index.php ist ein Button, dort wird word.php aufgerufen(siehe mein vorletzter Post)

	if ( isset($_POST['word']) )  
    {
        //echo "klick!"; 
        //ob_end_clean();
        //$pdf->Output($pdf_name, 'I'); 
        //header('location: rechnung2word.php'); 
		header('location: word.php');  
    }



Um die Daten aus der DB zu lesen und in die Session zu überführen wird dbconfig.php aufgerufen, dort werden dann die Sessions generiert

<?php
//require('inc/db.php'); 
?>


<?php

//$kundennummer_id="0"; 
//echo "k_id: ", $kundennummer_id ."<br><br>"; 

//if( !isset($_SESSION['k_id'])) 
{
   //die("dbconfig.inc keine k_id session"); //Damit beenden wir den weiteren Scriptablauf    
}

//if( !isset($_SESSION['o_id'])) 
{
   //die("dbconfig.inc keine o_id session"); //Damit beenden wir den weiteren Scriptablauf    
}


//In $kundennummer_id den Wert der Sessionvariable speichern

if( isset($_SESSION['k_id']))  
{
	$kundennummer_id = $_SESSION['k_id'];  
}

if( isset($_SESSION['o_id']))  
{
	$objekt_id = $_SESSION['o_id'];  
}

//echo "k_id: ", $kundennummer_id; 
?>


<?php

    //echo "<h1>Rechnung</h1>"; 
	

    if ( isset($_GET['kundennummer_id']))  
	{
		
		//$id_einlesen = (INT) $_GET['kundennummer_id']; 
		//$id_einlesen = $_SESSION['k_id']; 
		
		$id_einlesen = $kundennummer_id;
		
	}

		//echo "<h1>Daten anzeigen von Kunden-ID: $id_einlesen</h1>"; 

        if ($id_einlesen > 0)
		{
			
			#der select iat fehlerhaft, da er die objekt id's nicht richtig referenziert! 
			//$dseinlesen = $db2->prepare("SELECT kunden.kundennummer_id, kunden.anrede1, kunden.anrede2, kunden.vorname1, kunden.nachname1, kunden.nachname2, kunden.straße, kunden.hausnummer, kunden.plz_id, ort.Stadt, urkunde.urkundenrolle, objekt.projektname FROM ort, urkunde, objekt, kunden WHERE objekt.objekt_id = 1 AND kundennummer_id = ? AND kundennummer_id = urkunden_id AND ort.plz_id = kunden.kundennummer_id "); 


			if ($objekt_id > 0)  // isset($_SESSION['o_id'])) 
			{
				$dseinlesen = $db2->prepare("SELECT kunden.kundennummer_id, kunden.anrede1, kunden.anrede2, kunden.vorname1, kunden.nachname1, kunden.nachname2, kunden.straße, kunden.hausnummer, kunden.plz_id, ort.Stadt, urkunde.urkundenrolle, objekt.projektname, urkunde.kaufpreis, urkunde.wohneinheit, objekt.straße, objekt.plz_id FROM ort, urkunde, objekt, kunden WHERE objekt.objekt_id = $objekt_id AND objekt.objekt_id = urkunde.objekt_id AND kunden.kundennummer_id = urkunde.kundennummer_id AND kunden.kundennummer_id = ? AND ort.plz_id = kunden.plz_id;");  
			}


	#Alte Konfig!!!		
			/*
			$dseinlesen = $db2->prepare("SELECT kunden.kundennummer_id, kunden.anrede1, kunden.anrede2, kunden.vorname1, kunden.nachname1, kunden.nachname2,  
			kunden.straße, kunden.hausnummer, kunden.plz_id, ort.Stadt, urkunde.urkundenrolle, objekt.projektname FROM ort, urkunde, 
			objekt, kunden WHERE objekt.objekt_id = 1 AND kunden.kundennummer_id = urkunde.urkunden_id AND kunden.kundennummer_id = ? 
			AND ort.plz_id = kunden.plz_id;"); 
			*/


			$dseinlesen->bind_param('i', $id_einlesen);  
            $dseinlesen->execute();
            
			
			$dseinlesen->bind_result($kundennummer_id, $anrede1, $anrede2, $vorname1, $nachname1, $nachname2, $straße, $hausnummer, $plz_id, $Stadt, $urkundenrolle, $projektname, $kaufpreis, $wohneinheit, $objektstraße, $objektplz_id);
            
			$dseinlesen->fetch();
			
			while ($dseinlesen->fetch())
			{
                 //echo "<li>"; 
                 //echo $id ." / ". $vorname . " ". $nachname; 
				
            }//$kundennummer_id = $datensatz;
			
			
			
			if ( isset($_POST['pdfsenden']) or  isset($_POST['word'])) //if ( isset($_POST['Rechnungfertigmachen']))  
			{

			
				if(isset($anrede1))
				{
				   $_SESSION['anrede1_id'] = $anrede1;  
				}
				
				if(isset($anrede2))
				{
				   $_SESSION['anrede2_id'] = $anrede2;  
				}
				
				if(isset($vorname1))
				{
				   $_SESSION['vorname1_id'] = $vorname1;  
				}
				
				if(isset($nachname1))
				{
				   $_SESSION['nachname1_id'] = $nachname1;  
				}
				
				if(isset($nachname1))
				{
				   $_SESSION['nachname2_id'] = $nachname2;  
				}
				
				if(isset($straße))
				{
				   $_SESSION['straße'] = $straße;  
				}
				
				if(isset($hausnummer))
				{
				   $_SESSION['hausnummer'] = $hausnummer;  
				}
				
				if(isset($plz_id))
				{
				   $_SESSION['plz_id'] = $plz_id;  
				}
				
				if(isset($Stadt))
				{
				   $_SESSION['stadt_id'] = $Stadt;  
				}
				
				if(isset($urkundenrolle))
				{
				   $_SESSION['urkunde_id'] = $urkundenrolle;  
				}
				
				if(isset($projektname))
				{
				   $_SESSION['projektname'] = $projektname;  
				}
				
				if(isset($kaufpreis))
				{
				   $_SESSION['kaufpreis'] = $kaufpreis;  
				}

				if(isset($wohneinheit))
				{
				   $_SESSION['wohneinheit'] = $wohneinheit;  
				}				

				if(isset($objektstraße))
				{
				   $_SESSION['objektstraße'] = $objektstraße;  
				}
				
				if(isset($objektplz_id))
				{
				   $_SESSION['objektplz_id'] = $objektplz_id;  
				}						

			
			
			}
			/*
			echo "<p>ID: <b> $kundennummer_id </b><br>"; 
			echo "Anrede:  <b> $anrede1 </b><br>"; 
            echo "Vorname: <b> $vorname1 </b><br>";           
            echo "Nachname: <b> $nachname1 </b><br>"; 
			echo "PLZ: <b> $plz_id </b><br>"; 
            echo "Stadt: <b> $Stadt </b><br>"; 
			echo "Urkundenrolle: <b> $urkundenrolle </b><br>"; 
			
			*/
			
			//echo "test"; 
		}








// Beispiel für Daten aus zwei Tabellen
	/*
    echo "<h1>Rechnung</h1>"; 
	

	
    //if ( isset($_GET['kundennummer_id'])) { 
      //  $id_einlesen = (INT) $_GET['kundennummer_id']; 
		
		$id_einlesen = $kundennummer_id;
		
		echo "<h1>Daten anzeigen von Kunden-ID: $id_einlesen</h1>"; 
		
        
        if ($id_einlesen > 0) {
            $dseinlesen = $db2->prepare("SELECT kunden.kundennummer_id, kunden.vorname1, kunden.nachname1, ort.Stadt FROM kunden LEFT JOIN ort ON kunden.plz_id = ort.plz WHERE kundennummer_id = ? "); 
            $dseinlesen->bind_param('i', $id_einlesen); 
            $dseinlesen->execute();
            $dseinlesen->bind_result($kundennummer_id, $vorname1, $nachname1, $Stadt);
            
			$dseinlesen->fetch();
			
			while ($dseinlesen->fetch())
			{
                 //echo "<li>"; 
                 //echo $id ." / ". $vorname . " ". $nachname; 
				
            }//$kundennummer_id = $datensatz;
			
			echo "<p>ID: <b> $kundennummer_id </b><br>";           
            echo "Vorname: <b> $vorname1 </b><br>";           
            echo "Nachname: <b> $nachname1 </b><br>";           
            echo "Anmerkung: <b> $anmerkung </b><br>"; 
			
		}
	}
	*/
?>
Mitglied: Kohmaier
Kohmaier 18.09.2019 aktualisiert um 17:15:08 Uhr
Goto Top
Desweiteren ist dbconfig im index includiert, wird also bei jedem aufruf mit aufgerufenm, damit werden auch dementsprechend zur Kunden_id die entsprechenden Daten und Sessions geladen.

Man kann aus einem Menu auswählen quasi, man selctiert im Browser den Kunden für welchen die Rechnung erstellt wird... ich hoffe es wird damit etwas verständlicher, sry musste mich auch wieder reindenken...

index.php

include('inc/dbconfig.inc.php');  

Naja, ist schon nen Weilchen her als ich das implementierte^^