PHP Script ändern damit mysqli / PHP 7.2 funktioniert

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

cliodriver

Mitglied
so ... nach Durchsicht deiner Änderungen bin ich zum Schluss gekommen das ich diese auch schon mal versucht habe.

Doch durch deinen Denkanstoss hab ich nochmal drübergelesen und diesen teil mit dem Port entfernt

PHP:
 . ':' . $this->config['port']

nun funktioniert die Verbindung.

einzig im admin/pages müssen noch Änderungen gemacht werden. dies funktioniert noch nicht
 

lynx1974

Grünschnabel
Hallo, ich habe das gleiche Problem mit GuestCal 2.1.4 (Hosteurope stellt auf PHP7 um - installiertes Skript geht nicht mehr) und bin schon mal mit der o.g. Lösung etwas weiter gekommen.

Im weiteren habe ich jedoch im Admin-Bereich das Problem, dass die Einträge (Belegungen / Belegungsarten) beim ändern verschwinden (werden in DB garnicht gespeichtert oder gelöscht!?) - dagegen kann ich Objekte neu anlegen und bearabeiten ohne Probleme.

Irgendwie muss es mit der Eingabe der Beschreibungen in DB Tabellen classes_per_language und entries_per_language zu tun haben. Die Farben in classes werden auch nicht gespeichert. Ich komme aber nicht darauf was.

Hat jemand einen Tipp für mich wie ich hier weiterkomme?

LG
 
Zuletzt bearbeitet:

basti1012

Erfahrenes Mitglied
vieleicht solltest du mal den Code posten der dafür in frage kommt. Meistens ist das ja der mysql kram der mit php7 nicht mehr kompatibel ist.

Also kuck doch mal in Code nach wo gespeichert wird und suche den Datenbank kram da mal raus
 

lynx1974

Grünschnabel
Hi Basti, klar,

Datei objects.php (funktioniert)
PHP:
<?php
/**
* This file is part of GuestCal: http://guestcal.sourceforge.net/
*
* ©2012 dotplex e.K. / www.dotplex.de / info@dotplex.de
* Licenced under GPLv3 Open Source Licence: http://www.gnu.org/licenses/gpl-3.0.html
*/

$pageTitle .= ' - ' . __('adminObjects');

// Save or delete
if (isset ($_POST['object'])) {
    $post = $db -> mysql_real_escape_mixed ($_POST);
    if ($db -> idExists ('objects', $post['object'])) {
        $id = $post['object'];
        $db -> query ("DELETE FROM `objects_per_language` WHERE `object_id`=" . $id);
    }
    else
        $id = $db -> query ("INSERT INTO `objects` SET `id`=NULL", 'insert_id');
    foreach ($GLOBALS['langsActive'] as $lang)
        $db -> query ("INSERT INTO `objects_per_language` SET `name`='" . $post['name_' . $lang['abbr']] . "', `desc`='" . $post['desc_' . $lang['abbr']] . "', `language_id`=" . $lang['id'] . ", `object_id`=" . $id);
}
elseif (isset ($_GET['action']) && $_GET['action'] == 'del2' && $db -> idExists ('objects', $_GET['object'])) {
    $id = $_GET['object'];
    $db -> query ("DELETE `entries_per_language` FROM `entries_per_language` LEFT JOIN `entries` ON `entries`.`id`=`entries_per_language`.`entry_id` WHERE `entries`.`object_id`=" . $id);
    $db -> query ("DELETE `entries_static` FROM `entries_static` LEFT JOIN `entries` ON `entries`.`id`=`entries_static`.`entry_id` WHERE `entries`.`object_id`=" . $id);
    $db -> query ("DELETE `entry_returning` FROM `entry_returning` LEFT JOIN `entries` ON `entries`.`id`=`entry_returning`.`entry_id` WHERE `entries`.`object_id`=" . $id);
    $db -> query ("DELETE FROM `entries` WHERE `object_id`=" . $id);
    $db -> query ("DELETE FROM `objects_per_language` WHERE `object_id`=" . $id);
    $db -> query ("DELETE FROM `objects` WHERE `id`=" . $id);
}

// Read objects
$array = $db -> select ("SELECT `id` FROM `objects` ORDER BY `id`");
if ($array) {
    foreach ($array as $row)
        $objects[$row['id']] = array ();
    $langs = array ();
    foreach ($GLOBALS['langsActive'] as $lang)
        $langs[] = $lang['id'];
    $array = $db -> select ("SELECT `object_id`, `language_id`, `name`, `desc` FROM `objects_per_language` WHERE `language_id`=" . implode (' OR `language_id`=', $langs));
    foreach ($array as $row)
        $objects[$row['object_id']][$row['language_id']] = array (
            'name' => $row['name'],
            'desc' => $row['desc']
        );
}
else
    $objects = array ();

// Create, edit or delete object
if (isset ($_GET['object']) && array_key_exists ($_GET['object'], $objects)) {
    $id = $_GET['object'];
}
else {
    $id = 0;
}
if (isset ($_GET['action']) && $_GET['action'] == 'del' && $id > 0) {
    $r .= '<h3>' . __('adminDeleteObject') . ' (' . $id . '):</h3>';
    $r .= '<p>' . __('adminDeleteObjectReally') . '</p>';
    $r .= '<p><input type="button" onclick="document.location=\'?page=objects&amp;action=del2&amp;object=' . $id . '\'" value="' . __('adminContinue') . '" /> <input type="button" onclick="document.location=\'?page=objects\'" value="' . __('adminCancel') . '" /></p>';
}
else {
    if ($id == 0) {
        $r .= '<h3>' . __('adminNewObject') . ':</h3>';
    }
    else {
        $r .= '<h3>' . __('adminEditObject') . ' (' . $id . '):</h3>';
    }
    // Form
    $r .= '<form action="?page=objects" method="post">';
    $r .= '<table>';
    foreach ($GLOBALS['langsActive'] as $lang) {
        $r .= '<tr><th>' . __('adminName') . ' (' . $lang['name'] . '):</th>';
        $r .= '<td><input type="text" name="name_' . $lang['abbr'] . '" size="30" maxlength="50"';
        if (isset ($objects[$id][$lang['id']]))
            $r .= ' value="' . $objects[$id][$lang['id']]['name'] . '"';
        $r .= ' /></td></tr>';
    }
    foreach ($GLOBALS['langsActive'] as $lang) {
        $r .= '<tr><th>' . __('adminDesc') . ' (' . $lang['name'] . '):</th>';
        $r .= '<td><textarea name="desc_' . $lang['abbr'] . '" rows="5" cols="50">';
        if (isset ($objects[$id][$lang['id']]))
            $r .= $objects[$id][$lang['id']]['desc'];
        $r .= '</textarea></td></tr>';
    }
    $r .= '</table>';
    $r .= '<p><input type="submit" value="' . __('adminSubmit') . '" /> <input type="button" onclick="document.location=\'?page=objects\'" value="' . __('adminCancel') . '" /><input type="hidden" name="object" value="' . $id . '" /></p>';
    $r .= '</form>';
}

// List objects
$r .= '<h3>' . __('adminObjects') . ':</h3>';
$r .= '<table>';
$r .= '<tr><th>' . __('adminNo') . '</th>';
foreach ($GLOBALS['langsActive'] as $lang) {
    $r .= '<th>' . __('adminName') . ' (' . $lang['name'] . ')</th>';
    $r .= '<th>' . __('adminDesc') . ' (' . $lang['name'] . ')</th>';
}
$r .= '</tr>';
foreach ($objects as $id => $content) {
    $r .= '<tr><td>' . $id . '</td>';
    foreach ($GLOBALS['langsActive'] as $lang) {
        $r .= '<td>';
        if (isset ($content[$lang['id']]))
            $r .= $content[$lang['id']]['name'];
        $r .= '</td><td>';
        if (isset ($content[$lang['id']]))
            $r .= shortenString ($content[$lang['id']]['desc']);
        $r .= '</td>';
    }
    $r .= '<td><a href="?page=objects&amp;object=' . $id . '">' . __('adminEdit') . '</a> | <a href="?page=objects&amp;object=' . $id . '&amp;action=del">' . __('adminDelete') . '</a></td>';
    $r .= '</tr>';
}
$r .= '</table>';

und Datei classes.php (funktioniert nicht)

PHP:
<?php
/**
* This file is part of GuestCal: http://guestcal.sourceforge.net/
*
* ©2012 dotplex e.K. / www.dotplex.de / info@dotplex.de
* Licenced under GPLv3 Open Source Licence: http://www.gnu.org/licenses/gpl-3.0.html
*/

$pageTitle .= ' - ' . __('adminClasses');

// Save or delete
if (isset ($_POST['class'])) {
    if ($db -> idExists ('classes', $_POST['class'])) {
        $id = $_POST['class'];
        $db -> query ("UPDATE `classes` SET `color`='" . mysqli_real_escape_string ($_POST['color']) . "' WHERE `id`=" . $id);
        $db -> query ("DELETE FROM `classes_per_language` WHERE `class_id`=" . $id);
    }
    else
        $id = $db -> query ("INSERT INTO `classes` SET `color`='" . mysqli_real_escape_string ($_POST['color']) . "'", 'insert_id');
    foreach ($GLOBALS['langsActive'] as $lang)
        $db -> query ("INSERT INTO `classes_per_language` SET `name`='" . mysqli_real_escape_string ($_POST['name_' . $lang['abbr']]) . "', `content`='" . mysqli_real_escape_string ($_POST['content_' . $lang['abbr']]) . "', `language_id`=" . $lang['id'] . ", `class_id`=" . $id);
}
elseif (isset ($_GET['action']) && $_GET['action'] == 'del2' && $db -> idExists ('classes', $_GET['class'])) {
    $id = $_GET['class'];
    $db -> query ("DELETE `entries_per_language` FROM `entries_per_language` LEFT JOIN `entries` ON `entries`.`id`=`entries_per_language`.`entry_id` WHERE `entries`.`class_id`=" . $id);
    $db -> query ("DELETE `entries_static` FROM `entries_static` LEFT JOIN `entries` ON `entries`.`id`=`entries_static`.`entry_id` WHERE `entries`.`class_id`=" . $id);
    $db -> query ("DELETE `entry_returning` FROM `entry_returning` LEFT JOIN `entries` ON `entries`.`id`=`entry_returning`.`entry_id` WHERE `entries`.`class_id`=" . $id);
    $db -> query ("DELETE FROM `entries` WHERE `class_id`=" . $id);
    $db -> query ("DELETE FROM `classes_per_language` WHERE `class_id`=" . $id);
    $db -> query ("DELETE FROM `classes` WHERE `id`=" . $id);
}

// Read classes
$array = $db -> select ("SELECT `id`, `color` FROM `classes` ORDER BY `id`");
if ($array) {
    foreach ($array as $row)
        $classes[$row['id']] = array ('color' => $row['color']);
    $langs = array ();
    foreach ($GLOBALS['langsActive'] as $lang)
        $langs[] = $lang['id'];
    $array = $db -> select ("SELECT `class_id`, `language_id`, `name`, `content` FROM `classes_per_language` WHERE `language_id`=" . implode (' OR `language_id`=', $langs));
    foreach ($array as $row)
        $classes[$row['class_id']][$row['language_id']] = array (
            'name' => $row['name'],
            'content' => $row['content']
        );
}
else
    $classes = array ();

// Create, edit or delete class
if (isset ($_GET['class']) && array_key_exists ($_GET['class'], $classes)) {
    $id = $_GET['class'];
}
else {
    $id = 0;
}
if (isset ($_GET['action']) && $_GET['action'] == 'del' && $id > 0) {
    $r .= '<h3>' . __('adminDeleteClass') . ' (' . $id . '):</h3>';
    $r .= '<p>' . __('adminDeleteClassReally') . '</p>';
    $r .= '<p><input type="button" onclick="document.location=\'?page=classes&amp;action=del2&amp;class=' . $id . '\'" value="' . __('adminContinue') . '" /> <input type="button" onclick="document.location=\'?page=classes\'" value="' . __('adminCancel') . '" /></p>';
}
else {
    if ($id == 0) {
        $r .= '<h3>' . __('adminNewClass') . ':</h3>';
    }
    else {
        $r .= '<h3>' . __('adminEditClass') . ' (' . $id . '):</h3>';
    }
    // Form
    $r .= '<form action="?page=classes" method="post">';
    $r .= '<table>';
    foreach ($GLOBALS['langsActive'] as $lang) {
        $r .= '<tr><th>' . __('adminName') . ' (' . $lang['name'] . '):</th><td><input type="text" name="name_' . $lang['abbr'] . '" size="30" maxlength="30"';
        if (isset ($classes[$id][$lang['id']]['name']))
            $r .= ' value="' . $classes[$id][$lang['id']]['name'] . '"';
        $r .= ' /></td></tr>';
    }
    foreach ($GLOBALS['langsActive'] as $lang) {
        $r .= '<tr><th>' . __('adminCellContent') . ' (' . $lang['name'] . '):</th><td><input type="text" name="content_' . $lang['abbr'] . '" size="2" maxlength="2"';
        if (isset ($classes[$id][$lang['id']]['content']))
            $r .= ' value="' . $classes[$id][$lang['id']]['content'] . '"';
        $r .= ' /></td></tr>';
    }
    $r .= '<tr><th>' . __('adminColor') . '</th><td><input type="text" name="color" size="6" maxlength="6"';
    if (isset ($classes[$id]['color']))
        $r .= ' value="' . $classes[$id]['color'] . '"';
    $r .= ' /></td></tr>';
    $r .= '</table>';
    $r .= '<p><input type="submit" value="' . __('adminSubmit') . '" /> <input type="button" onclick="document.location=\'?page=classes\'" value="' . __('adminCancel') . '" /><input type="hidden" name="class" value="' . $id . '" /></p>';
    $r .= '</form>';
}

// List classes
$r .= '<h3>' . __('adminClasses') . ':</h3>';
$r .= '<table>';
$r .= '<tr><th>' . __('adminNo') . '</th>';
foreach ($GLOBALS['langsActive'] as $lang) {
    $r .= '<th>' . __('adminName') . ' (' . $lang['name'] . ')</th>';
}
foreach ($GLOBALS['langsActive'] as $lang) {
    $r .= '<th>' . __('adminCellContent') . ' (' . $lang['name'] . ')</th>';
}
$r .= '<th>' . __('adminColor') . '</th>';
$r .= '</tr>';
foreach ($classes as $id => $values) {
    $r .= '<tr><td>' . $id . '</td>';
    foreach ($GLOBALS['langsActive'] as $lang) {
        $r .= '<td>';
        if (isset ($values[$lang['id']]['name']))
            $r .= $values[$lang['id']]['name'];
        $r .= '</td>';
    }
    foreach ($GLOBALS['langsActive'] as $lang) {
        $r .= '<td>';
        if (isset ($values[$lang['id']]['content']))
            $r .= $values[$lang['id']]['content'];
        $r .= '</td>';
    }
    $r .= '<td style="background-color: #' . $values['color'] . '">' . $values['color'] . '</td>';
    $r .= '<td><a href="?page=classes&amp;class=' . $id . '">' . __('adminEdit') . '</a> | <a href="?page=classes&amp;class=' . $id . '&amp;action=del">' . __('adminDelete') . '</a></td>';
    $r .= '</tr>';
}
$r .= '</table>';
 

lynx1974

Grünschnabel
Kann es sein dass PHP7 die mysqli_real_escape_string ($_POST['color']) in der SQL Query nicht mag?

PHP:
 $db -> query ("UPDATE `classes` SET `color`='" . mysqli_real_escape_string ($_POST['color']) . "' WHERE `id`=" . $id);
 

cliodriver

Mitglied
Genau, mysqli_real_escape_string mit den () entfernen



edit: mein Kalender ( GuestCal 2.1.4) läuft ebenfalls auf hosteurope
 
Zuletzt bearbeitet:

basti1012

Erfahrenes Mitglied
in der ersten datei die du gepostet hast in Zeile 13 ist noch mysql ohne I drinne.

was sagt den deine Fehlerkonsole noch so ?
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…