Navigation
  •    
Forum PHP & MySQL Brauche Hilfe bei einem Script
Hi, ich habe ein Free-Script gefunden. Funktionierte bisher auch wunderbar und ohne Probleme.
Durch den Umzug auf einen Server hab ich allerdings gerade nur Probleme mit dem Script und ich finde den Fehler nicht. (PHP und MYSQL sind nicht meine Stärke.)

Folgendes Problem:
Obwohl ich die selben Datein benutze und auch die Datenbank komplett übernommen habe, brachte er mir anfangs einen Fehler, dass ein Datenbankschlüssel keinen gültigen Standardwert hat. Diesen Wert habe ich nun auf "NULL" gestellt und der Fehler ist verschwunden. (Der Schlüssel dient nur der Aufzeichnung, wann sich wer einloggte.) Nun erhalte ich jedoch folgende Fehlermeldung:


A PHP Error was encountered
Severity: Warning
Message: Creating default object from empty value
Filename: models/comic.php
Line Number: 80


Die besagte Passage ist diese hier:

function __construct($id = NULL)
{
// Set language
$this->help_lang();

if (!is_null($id) && $comic = $this->get_cached($id))
{
parent::__construct();
foreach ($comic->to_array() as $key => $c)
{
$this->$key = $c;

// fill also the all array so result_count() is correctly 1
$this->all[0]->$key = $c;
}


Kann mir jemand sagen, woran das liegen könnte?

Antworten
Heyho,

Diesen Wert habe ich nun auf "NULL" gestellt und der Fehler ist verschwunden.
Message: Creating default object from empty value

Scheint ganz so als würde das zusammenhängen. Die Fehlermeldung besagt, dass ein Objekt mit einem leeren Standardwert erstellt wird. Da du den Standardwert auf "NULL" (= leer) gesetzt hat, liegt es wahrscheinlich daran. Ich kenne nicht genau den Datentyp, das Script oder sonst wie. Da du aber meinst, dass das der Wert ist, wann wer sich zuletzt einloggte, gehe ich davon aus, dass der Standardwert "0" sein sollte (Einfach 0 eintragen - Nicht NULL auswählen!).

Versuch's mal!

Liebe Grüße,
Feurigel

Hat leider nicht funktioniert.
Das Problem ist immernoch. Hier ist ein Link zum Code der Datei. Dort findest du auch die anderen Datein, die das Script benutzt.

https://github.com/FoolCode/FoOlSlide/blob/master/.../comic.php

Heyho,

leider kann ich dir hierbei nicht weiterhelfen, da es schwer ist, üner eim Script auszusagen, das man nicht kennt und nicht weiß wie die Datenbankstruktur davon aussieht. Für einen eigenen Test und Analyse fehlt mir zudem die Zeit.

Liebe Grüße,
Feurigel

Am Besten wendest Du Dich diesbzgl. mal an die Ersteller selbst, sofern diese ein Support-Forum o.ä. bereitstellen. (:

Da der Support nicht antwortet, wollte ich nun selbst ein einfaches Script schreiben.
Bin jedoch noch Neuling auf diesem Gebiet und habe nun ein Problem mit dem Ausgeben des Arrays.
Das Script soll einen Ordner auslesen, die Bilder in ein array schreiben und dieses dann ausgeben. Klappt auch ganz gut. Nur wollte ich nun, dass es nicht das ganze array auf einmal ausgibt, sondern pro Seite nur ein Bild und dann, wenn man auf das Bild klickt, das nächste ausgibt.

Wie muss ich den Code anpassen, dass es automatisch weiter hochzählt? Im Moment gibt es mir Bild 1 aus, klicke ich darauf gibt es Bild 2 aus. Nach Bild 2 gibt es aber nicht Bild 3 aus. Sondern lässt Bild 2 unverlinkt. Könnt ihr mir helfen?

Code


$Bilder = array();
$Ordner = ".";
$ende = array("png", "jpg");

$Lesen = opendir($Ordner);
while ($Datei = readdir($Lesen)) {
if(!is_dir($Datei)) {
if ($Datei != "..") {
if (strstr($Datei, ".")) {
$punkt = strrpos($Datei, ".");
$endung = strtolower(substr($Datei, $punkt + 1));

if (in_array($endung, $ende)) {
$Bilder[] = $Ordner . "/" . $Datei;
}
}
}
}
}
closedir($Lesen);

$anzahl = count($Bilder);
$weiter = next($Bilder);
$Nummer = 0;

for ($i = 1; $i <= 1; $i++) {
echo "<a href=$weiter><img src=$Bilder[$Nummer]></a>";
}

Hallöchen.

Code


$weiter = next($Bilder);

Code


echo "<a href=$weiter><img src=$Bilder[$Nummer]></a>";

Ist es nicht so, dass der Link direkt auf das Bild verweist? Und wenn man drauf klickt, dann landet man direkt auf das Bild, welches (logischerweise?) nicht verlinkt ist?

Liebe Grüße,
Feurigel

Ja. Also ich hätte ja gern, dass es wie z.b. bei Mangafox das nächste Bild im array anzeigt, wenn man auf das Bild klickt.
Aber ich weiß nicht genau wie ich das richtig umsetzen kann. Weißt du was ich meine?
Also du klickst auf Bild 1 -> Bild 2 wird angezeigt, klickst du auf Bild 2 -> Bild 3 wird angezeigt usw. bis es eben am Ende ankommt.

Huhu,

hatte mal vor Ewigkeiten solch ein Script gebastelt, dass in etwa so funktioniert - war ein ziemlich simpler "Manga Reader".

Die Datei heißt "manga.php". Die Variable $ordner gibt an, aus welchem Ordner die Bilder gelesen werden sollen. Dann kann über $_GET['serie'] ein Unterordner von $ordner geöffnet werden. Ein Beispielaufruf wäre z.B. "manga.php?serie=kekse", dann kann man alle Bilder im Ordner "/manga/kekse" durchklicken. Das Script sollte ziemlich einfach an die eigenen Bedürfnisse anzupassen sein, hoffe es hilft. o:

Code


<?php

// ein paar Einstellungen oder so

$ordner = "manga";

// - - - - - - - - - - - - - - - - //

echo "<div align='center'>";

if (isset($_GET['serie'])) {
$serie = htmlentities($_GET['serie'], ENT_QUOTES);
if (is_dir($ordner."/".$serie)) {
$pages = scandir($ordner."/".$serie);
echo "<b>".$serie."</b><br /><br />";
if (isset($_GET['seite'])) { $seite = htmlentities($_GET['seite'], ENT_QUOTES); } else { $seite = 1; }
$page = $seite + 1;
if (!file_exists($ordner."/".$serie."/".$pages[$page])) { $seite = 1; }
$prev = ""; $current = array("", "</a>"); $next = "";
if ($seite > 1) { $prev = "<a href='manga.php?serie=".$serie."&seite=".($seite - 1)."'><<</a>"; } else { $prev = " "; }
if ($seite < (count($pages) - 2)) { $current[0] = "<a href='manga.php?serie=".$serie."&seite=".($seite + 1)."'>"; } else { $current[0] = "<a href='manga.php?serie=".$serie."&seite=1'>"; }
if ($seite < (count($pages) - 2)) { $next = "<a href='manga.php?serie=".$serie."&seite=".($seite + 1)."'>>></a>"; } else { $next = " "; }
echo "<table width='100%'><tr><td align='center' valign='middle'>".$prev."</td><td align='center'>";
echo $current[0]."<img alt='".$serie." Seite ".$seite."' src='".$ordner."/".$serie."/".$pages[$page]."' />".$current[1];
echo "</td><td>".$next."</td></tr></table>";
}
}

echo "</div>";

?>

Hallo,

du musst dafür sorgen, dass nicht direkt das Bild geladen wird (also nicht direkt das Bild verlinken), sondern das Script - nur mit einem anderen Bild - geladen wird.

Zum Beispiel übergibst du deinem Script per GET eine Variable mit.

Das heißt, du fragst ab ob per GET eine Variable gesetzt wurde (und welche) und lädst damit das entsprechende Bild.
Code



if ( isset($_GET['bild']) && is_numeric($_GET['bild']) ) {
$Nummer = $_GET['bild'];
}
else {
$Nummer = 0;
}
Die aufgerufene Bildnummer wurde in $Nummer gespeichert. Wenn keine Bildnummer übergeben wurde oder eine "falsche", hat $Nummer die Zahl 0 - das würde das erste Bild entsprechen.

Dann lässt du es ausgeben und die Verlinkung sollte wieder auf das Script zeigen (und übergibt eine neue Variable), statt auf das Bild direkt zu verlinken.
Code



$next_Nummer = $Nummer + 1;
echo "<a href=?bild=$next_Nummer><img src=$Bild[$Nummer]></a>";
$next_Nummer enthält die Nummer des nächsten Bildes. Also würde der a-Tag das nächste Bild aufrufen (Das aktuelle Script wird mit der Variable aus $next_Nummer geladen - $next_Nummer wird dabei im Script unter $_GET['bild'] zwischengespeichert (siehe oben).)
Der Img-Tag lädt das aktuelle Bild.

Dann müsstest du noch paar Abfragen einbauen, nämlich wann der Zähler ($Nummer) wird "resettet" werden soll und was passiert, wenn eine nicht-existierende Nummer aufgerufen wird.

Aber ich hoffe, dass ich dir etwas helfen konnte.

Liebe Grüße,
Feurigel

Lädt...
 SchließenHinweis: Um Dir ein besseres Nutzererlebnis zu bieten, werden von uns sogenannte Cookies gesetzt. Durch die Nutzung unserer Website stimmst Du dem zu. Nähere Informationen findest Du in unserer Datenschutzerklärung.