Ankündigung

Einklappen
Keine Ankündigung bisher.

Wordpress-Seitentemplate läuft nicht mit PHP 7 - wie anpassen?

Einklappen

Neue Werbung 2019

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

  • Wordpress-Seitentemplate läuft nicht mit PHP 7 - wie anpassen?

    Hallo, ich habe leider nur ganz rudimentäre PHP-Kenntnisse, deshalb poste ich meine Frage hier. Auf meiner Wordpress-Website ist ein php-Template, das mal ein Webdesigner für mich gemacht hat, und dieses versagt leider, wenn ich meinen Server auf PHP 7 umstelle (statt PHP 5.6). Grund ist nicht schwer herauszufinden: Die mysql-Funktionen, die hier verwendet werden, gibt es nicht mehr. Wie kann man das ganze für PHP7 umprogrammieren?

    Hier Ist das Template:
    PHP-Code:
    <?php
    /**
    * Template Name: Branchenregister / Kaufda-Liste
    *
    * This is the most generic template file in a WordPress theme
    * and one of the two required files for a theme (the other being style.css).
    * It is used to display a page when nothing more specific matches a query.
    * E.g., it puts together the home page when no home.php file exists.
    * Learn more: http://codex.wordpress.org/Template_Hierarchy
    *
    * @package Quarkhanf
    * @since Quarkhanf 1.0
    */

    get_header();
    if (
    function_exists('sharing_display')) {
    remove_filter'the_content''sharing_display'19 ); }
    ?>

    <div id="primary" class="site-content row" role="main">

    <div class="col grid_7_of_12">

    <?php if ( have_posts() ) : ?>
    <?php 
    // Start the Loop ?>
    <?php 
    while ( have_posts() ) : the_post(); ?>

    <article id="post-<?php the_ID(); ?><?php post_class(); ?>>
    <?php if ( !is_front_page() ) { ?>
    <header class="entry-header">
    <h1 class="entry-title"><?php the_title(); ?></h1>
    <?php if ( has_post_thumbnail() && !is_search() && !post_password_required() ) { ?>
    <?php the_post_thumbnail
    'post_feature_full_width' ); ?>
    <?php 
    ?>
    </header>
    <?php ?>
    <div class="entry-content">
    <?php the_content(); ?>

    <?php

    $datenbank_link 
    = @mysql_connect("localhost""XXX""XXX");
    if (!
    $datenbank_link)
    {
    die(
    "Zur Zeit kann leider der Datenbankserver nicht erreicht werden. Bitte versuchen Sie es spaeter noch einmal.");
    }
    if (@!
    mysql_select_db("XXX"$datenbank_link)) {
    die(
    "Zur Zeit kann leider keine Verbindung zur Datenbank aufgebaut werden. Bitte versuchen Sie es spaeter noch einmal.");
    }
    if (!
    $datenbank_link) {
    die(
    "Zur Zeit ist leider keine Verbindung zur Datenbank moeglich. Bitte versuchen Sie es spaeter noch einmal. ".mysql_error());
    }
    # mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $datenbank_link);
    mysql_set_charset('utf8',$datenbank_link);

    print 
    '<table width="100%" border="0" cellspacing="3" cellpadding="3" align="left">
    <tr>
    <th><a href="?firma=U">/\</a><b> Firma </b><a href="?firma=D"> \/</a> </th>
    <th><b>Adresse</b></th>
    <th><a href="?plz=U">/\</a><b>PLZ</b><a href="?plz=D">\/</a></th>
    <th><a href="?ort=U">/\</a><b>Ort</b><a href="?ort=D">\/</a></th>
    <th>Land</th>
    </tr>'
    ;

    if (!isset(
    $_GET['plz']) && (!isset($_GET['firma'])) && (!isset($_GET['ort'])) ){
    $kaufSEL mysql_query("SELECT kaufda.KDID, kaufda.period, kaufda.periodend, kaufda.ID, kunden.KD_Firma, kunden.KD_Homepage, kunden.KD_Standard_Adresse, kunden.KD_Standard_PLZ, kunden.KD_Standard_Ort, kunden.KD_Land, kunden.KD_CompanyBrand FROM KAUFda AS kaufda LEFT JOIN kunden ON (kunden.KD_ID = kaufda.KDID) where kunden.KD_Land = 'Germany' ORDER BY kunden.KD_Standard_PLZ ASC");
    $kaufSEL2 mysql_query("SELECT kaufda.KDID, kaufda.period, kaufda.periodend, kaufda.ID, kunden.KD_Firma, kunden.KD_Homepage, kunden.KD_Standard_Adresse, kunden.KD_Standard_PLZ, kunden.KD_Standard_Ort, kunden.KD_Land, kunden.KD_CompanyBrand FROM KAUFda AS kaufda LEFT JOIN kunden ON (kunden.KD_ID = kaufda.KDID) where kunden.KD_Land != 'Germany' ORDER BY kunden.KD_Land ASC, kunden.KD_Standard_PLZ ASC");

    //if !isset $_GET

    if(isset($_GET['plz'])){
    if(
    $_GET['plz'] == 'U')
    $sort 'ASC'; }
    if(
    $_GET['plz'] == 'D')
    $sort 'DESC'; }

    $kaufSEL mysql_query("SELECT kaufda.KDID, kaufda.period, kaufda.periodend, kaufda.ID, kunden.KD_Firma, kunden.KD_Homepage, kunden.KD_Standard_Adresse, kunden.KD_Standard_PLZ, kunden.KD_Standard_Ort, kunden.KD_Land, kunden.KD_CompanyBrand FROM KAUFda AS kaufda LEFT JOIN kunden ON (kunden.KD_ID = kaufda.KDID) ORDER BY kunden.KD_Standard_PLZ $sort, kunden.KD_Firma ASC");
    }

    if(isset(
    $_GET['ort'])){
    if(
    $_GET['ort'] == 'U')
    $sort 'ASC'; }
    if(
    $_GET['ort'] == 'D')
    $sort 'DESC'; }

    $kaufSEL mysql_query("SELECT kaufda.KDID, kaufda.period, kaufda.periodend, kaufda.ID, kunden.KD_Firma, kunden.KD_Homepage, kunden.KD_Standard_Adresse, kunden.KD_Standard_PLZ, kunden.KD_Standard_Ort, kunden.KD_Land, kunden.KD_CompanyBrand FROM KAUFda AS kaufda LEFT JOIN kunden ON (kunden.KD_ID = kaufda.KDID) ORDER BY kunden.KD_Standard_Ort $sort, kunden.KD_Firma ASC");
    }

    if(isset(
    $_GET['firma'])){
    if(
    $_GET['firma'] == 'U')
    $sort 'ASC'; }
    if(
    $_GET['firma'] == 'D')
    $sort 'DESC'; }

    $kaufSEL mysql_query("SELECT kaufda.KDID, kaufda.period, kaufda.periodend, kaufda.ID, kunden.KD_Homepage, kunden.KD_CompanyBrand, kunden.KD_Standard_Adresse, kunden.KD_Standard_PLZ, kunden.KD_Standard_Ort, kunden.KD_Land FROM KAUFda AS kaufda LEFT JOIN kunden ON (kunden.KD_ID = kaufda.KDID) ORDER BY kunden.KD_Firma $sort, KD_Standard_PLZ ASC");
    }

    //$keintrag = '0';
    //$eintraege = mysql_num_rows($kaufSEL);
    function kaufda_ausgabe($bar) {
    $firma $bar['KD_CompanyBrand'];
    $shop_plz $bar['KD_Standard_PLZ'];
    $firstPLZ substr("$shop_plz"01);

    print 
    ' <tr>';

    if(
    $bar['KD_Homepage'] != ''){
    if (
    substr($bar['KD_Homepage'],0,7) == "http://") {
    print 
    '<td><a href="'.$bar['KD_Homepage'].'">'.$firma.'</a></td>';
    } else {
    print 
    '<td><a href="http://'.$bar['KD_Homepage'].'">'.$firma.'</a></td>';
    }
    } else {
    print 
    '<td>'.$firma.'</td>';
    }

    print 
    '<td>'.$bar['KD_Standard_Adresse'].'</td> ';
    print 
    '<td>'.$bar['KD_Standard_PLZ'].'</td> ';
    print 
    '<td>'.$bar['KD_Standard_Ort'].'</td>';
    print 
    '<td>'.$bar['KD_Land'].'</td>';
    print 
    '</tr>';
    }

    while(
    $kaufRES mysql_fetch_array($kaufSEL)){
    //print_r($kaufRES);
    kaufda_ausgabe($kaufRES);

    //while

    if (isset($kaufSEL2)) {
    while(
    $kaufRES mysql_fetch_array($kaufSEL2)){
    kaufda_ausgabe($kaufRES);
    //while
    //if

    print '</table>'?>

    </div><!-- /.entry-content -->
    <footer class="entry-meta">
    <?php edit_post_linkesc_html__'Edit''quark' ) . ' <i class="fa fa-angle-right"></i>''<div class="edit-link">''</div>' ); ?>
    </footer><!-- /.entry-meta -->
    </article><!-- /#post -->

    <?php endwhile; ?>

    <?php endif; // end have_posts() check ?>

    <?php
    if (function_exists('sharing_display')) {
    print 
    sharing_display(); }
    ?>

    </div> <!-- /.col.grid_8_of_12 -->
    <?php get_sidebar(); ?>

    </div> <!-- /#primary.site-content.row -->

    <?php get_footer(); ?>

  • #2
    Die mysql-Erweiterung von PHP ist noch oft im Internet zu sehen, jedoch wird in der offiziellen Dokumentation klar empfohlen, auf die Erweiterungen mysqli oder PDO umzusteigen. Die mysql_*-Funktionen sind veraltet und sollten nicht mehr benutzt werden.

    Seit PHP 5.3 gehört die veraltete mysql-Erweiterung nicht mehr zur Standard-Installation.
    Seit PHP 5.5 ist die mysql-Erweiterung offiziell als deprecated (= missbilligt) gekennzeichnet.
    Ab PHP 7 ist die Erweiterung entfernt worden.
    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


    • #3
      und bitte PHP-tags benutzen...

      [ PHP ] .. code .. [ /PHP ]
      (tags ohne Leerzeichen)
      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

      Kommentar


      • #4
        Für mich keine Ansätze zum "selber flicken" erkennbar, daher:

        [MOD: Verschoben von PHP-Einsteiger]
        The string "()()" is not palindrom but the String "())(" is.

        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Also, es gibt ja zwei andere mysql-APIs, Beispiel unten von http://php.net/manual/en/mysqlinfo.api.choosing.php – Muss ich dann „nur“ den folgenden Block auf mysqli oder PDO umschreiben und die folgenden mysql_query anpassen, und der Rest vom Skript bleibt wie er ist?

          PHP-Code:
          $datenbank_link = @mysql_connect("localhost""XXX""XXX");
          if (!
          $datenbank_link)
          {
          die(
          "Zur Zeit kann leider der Datenbankserver nicht erreicht werden. Bitte versuchen Sie es spaeter noch einmal.");
          }
          if (@!
          mysql_select_db("XXX"$datenbank_link)) {
          die(
          "Zur Zeit kann leider keine Verbindung zur Datenbank aufgebaut werden. Bitte versuchen Sie es spaeter noch einmal.");
          }
          if (!
          $datenbank_link) {
          die(
          "Zur Zeit ist leider keine Verbindung zur Datenbank moeglich. Bitte versuchen Sie es spaeter noch einmal. ".mysql_error());
          }
          # mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $datenbank_link);
          mysql_set_charset('utf8',$datenbank_link); 
          PHP-Code:
          <?php
          // mysqli
          $mysqli = new mysqli("example.com""user""password""database");
          $result $mysqli->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
          $row $result->fetch_assoc();
          echo 
          htmlentities($row['_message']);

          // PDO
          $pdo = new PDO('mysql:host=example.com;dbname=database''user''password');
          $statement $pdo->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
          $row $statement->fetch(PDO::FETCH_ASSOC);
          echo 
          htmlentities($row['_message']);

          // mysql
          $c mysql_connect("example.com""user""password");
          mysql_select_db("database");
          $result mysql_query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
          $row mysql_fetch_assoc($result);
          echo 
          htmlentities($row['_message']);
          ?>

          Kommentar


          • #6
            Zitat von hausl Beitrag anzeigen
            Für mich keine Ansätze zum "selber flicken" erkennbar, daher:

            [MOD: Verschoben von PHP-Einsteiger]
            Ich kann auch den Webdesigner wieder kontaktieren und einen Bezahlauftrag daraus machen, aber ich versuche eigentlich das selbst zu lösen. Echt hilfreich wäre eine Antwort auf meine Kernfrage, ob das Skript mit einer bzw. welcher der beiden neuen mysql-Funktionen genauso funktionieren wird, oder ob es komplett neu geschrieben werden muss.

            Kommentar


            • #7
              Mal davon abgesehen, dass das Script eine Frechheit ist (aber das ist wohl "guter Stil" unter Wordpress-Entwicklern: Wie es sein könnte / Wie es ist)... Zumindest das Problem mit den alten mysql_-Funktionen wird dadurch gelöst, ja.

              Kommentar


              • #8
                Zitat von rkr Beitrag anzeigen
                Mal davon abgesehen, dass das Script eine Frechheit ist (aber das ist wohl "guter Stil" unter Wordpress-Entwicklern: Wie es sein könnte / Wie es ist)... Zumindest das Problem mit den alten mysql_-Funktionen wird dadurch gelöst, ja.
                Ja, das dachte ich mir auch, als ich den Server auf PHP 7 umgestellt hatte und 1. feststellte, dass das Template nicht mehr funktioniert und dann 2. in den Code hineinschaute, der mir nicht wie ein strukturierter guter PHP Code aussieht. Aber die Datenbank, auf die da für eine Listenausgabe zugegriffen wird, ist auch konfus strukturiert. (Um den Designer ein bisschen in Schutz zu nehmen.)

                Kommentar

                Lädt...
                X