Sprungnavigation: Startseite [Mac:ctrl+alt+0] Navigation [Mac:ctrl+alt+1] Inhalt [Mac:ctrl+alt+2] Kontakt [Mac:ctrl+alt+3] Sitemap [Mac:ctrl+alt+4]

Individuelle und interaktive Websites im Zürcher Oberland and all over the world.

PHP 7: Lösungen bei der Umstellung.

+/-

Weisse Seiten

Die erste Seite auf php7 umgestellt. <?php  phpinfo(); ?> klappte. Resultat: Nur eine weisse Seite. Kein Quelltext. Keine Fehlermeldung... Hier zeige ich meine häufigsten Fehlermeldungen und deren Lösung.


 

⇒ Fehlermeldungen

Bei mir lief das nicht mehr automatisch. Folgende Funktion customError2 kommt jetzt für php7 zu form_func.php

<?php
function customError2($errno$errstr$errfile$errline) {
  echo 
"<b>Error:</b> [".$errno."] ".$errstr."<br />";
  echo 
"<b>Wo?</b> [".$errline."] on ".$errfile."<br />";
}
?>

Nach der Datenbankverbindungsaufnahme in dbh_login.php folgt der Aufruf der Funktion customError2:

<?php
set_error_handler
("customError2");
error_reporting(-1); // Melde alle PHP Fehler
?>


 

⇒ Undefinierte Variablen

PHP7 lässt keine "Schlampereien" mehr zu. Alle Variablen müssen initialisiert werden. Auch wenn das offiziell nicht steht oder vor PHP 7 noch so war.

Error: [8] Undefined variable: meldung1 Wo? [32] on /home/www/webXYZ/html/buchhaltung/voreinstellungen/index_i.php

Lösung:

<?php $meldung1 ''?>

Bei Variablen von Formulardaten mache ich das so:

<?php
$bh_id 
= isset($_REQUEST['bh_id']) ? $_REQUEST['bh_id'] : -1// b uch h altungs id
?>

Mit PHP7 soll das auch so gehen:

<?php
$bh_id
= isset($_REQUEST['bh_id']) ?? -1// b uch h altungs id
?>

Mein alter Dreamweaver macht das allerdings nicht mit.


 

⇒ Fix non-numeric value warning in PHP 7.1

Diese Fehlermeldung wurde ausgelöst:

Error: [2] A non-numeric value encountered Wo? [264] on /home/www/webXYZ/html/buchhaltung/ausgabe/index_i.php

Ursache ist die Zeile $betrag_tot4 += $b1;

<?php
foreach ($e2 as $ds4) { 
            
$b1 = !empty($ds4['betrag']) && is_numeric($ds4['betrag']) ? (int)$ds4['betrag'] : 0;
            
$betrag_tot4 += $b1
    } 
// ende foreach
?>

Als Lösung habe ich nur gefunden, dass ich die Datenbank mit der Funktion SUM() abfragen kann, um die Summe des Totalbetrags zu erhalten.

$auswahl = $dbh->prepare(SELECT SUM(betrag) AS betragssumme FROM '.DATA.' WHERE bh_data_aktiv = :bh_data_aktiv 
AND datum_zeit_a <= :dza AND datum_zeit_a >= :dzb ORDER BY datum_zeit_a ASC'); 
$auswahl->execute(array(':bh_data_aktiv' => '1', ':dza' => $endtime_db, ':dzb' => $starttime_db));
$arr1 = $auswahl->fetch();
$betrag_tot4 = $arr1['betragssumme'];
echo '

Totalbetrag: '.number_format($betrag_tot4, 2, '.', '\'').'

';

Den "non-numeric value"-Fehler habe ich nur so weggebracht.


 

⇒ $_SERVER['PHP_SELF']

So viele Male habe ich $_SERVER['PHP_SELF'] gebraucht... - war ja echt praktisch.

<?php
<form action="<?php echo $_SERVER['PHP_SELF'];?>" id="kategorie" method="post">
?>

Geht in PHP 7 nicht mehr:

The requested URL /buchhaltung/voreinstellungen/Error: [8] Undefined index: PHP-SELF
Error: [33] on /home/www/webXYZ/html/buchhaltung/voreinstellungen/index_i2.php
was not found on this server.

Diese Definitionen habe ich unter anderem in der define.php

<?php
define
("WEBSITE","https://www.beatmuhr.com/"true);
define("ORDNER","buchhaltung/"true); // nach Websitenamen bis zum Ordner mit den Menus bzw. bh
define("WEBSITE_ORDNER",WEBSITE."".ORDNERtrue); // WEBSITE + ORDNER
?>

Lösung: So ersetze ich $_SERVER['PHP_SELF'] durch den WEBSITE_ORDNER und dem vollständigen Pfad:

<?php
<form action="<?php echo WEBSITE_ORDNER."voreinstellungen/index.php";?> ?>" id="kategorie" method="post">
?>


 

⇒ mysql_query

Geht in PHP7 gar nicht mehr. Tipp: mit der Suchfunktion danach suchen.

Lösung: Mein MySQL Code-Creator für PDO


 

spotlight

scheinwerfer symbol für spotlight
+/-

Etwas zu meiner Arbeitsweise

Ich "fliege" am Seitenbeginn verschiedene Seiten ein.

<?php
require_once('/home/www/webXYZ/html/buchhaltung/bh/inc/define.php');
require_once(
SERVER_PFAD.'/bh/inc/form_func.php');
require_once(
SERVER_PFAD.'/bh/inc/dbh_login.php'); // incl. login
?>

Die Dateien define.php, form_func.php und dbh_login.php werden links erwähnt.