Jump to content
Sign in to follow this  
k00ni

[pSys-Modul: Galerie] Probleme wenn nur Nutzung der Standardkategorie (catid=0)

Recommended Posts

Hallo,


folgendes fehlerhaftes Verhalten ist mir gerade aufgefallen. Wenn man das Skript einfach installiert, dann wird keine Kategorie angelegt. Lädt man nun Bilder hoch, so werden die zwar der Standardkategorie (Name: Übersicht) zugeordnet.


Das führt aber zu einem Luftschuss, denn im Skript wird folgendes abgefragt (bild.php, Zeile 60)

 

$sqlbefehl = "Select * FROM $tab_picat where id = '$thiscat'";

 

Hier kommt aber ein leerer Datensatz zurück. Da ja zwar im Adminbereich eine Kategorie angezeigt wird, diese aber nicht existiert.


Habe dies gerade bei unserem Testsystem festgestellt: Bei der Ausgabe aller Werte die so verwendet werden, bis sie an die Funktion CreateImage übergeben werden, kommt zum Vorschein, dass die Variable $pisize ohne Wert ist. Sie wird folgendermaßen definiert:

 

$pisize = $bildcat['zoomsize'];

 

Nur leider ist das Array ja leer, siehe oben beim SQL. ;-)


Der Otti meinte, dies wäre ein bekannter Fehler. Ich denke, viele merken dass nicht, da sie anfangs sofort erstmal die Kategorie bearbeiten und somit den Fehler umgehen. Denn dann wird eine Kategorie angelegt, obwohl sie ja scheinbar schon *existiert* und die Bilder werden sauber zugeordnet.


Mein Vorschlag wäre einfach, dass man einen Standardwert setzt, falls kein richtiger Wert übergeben wurde. In der bild.php ca. bei Zeile 77 folgenden Code

 

// Zoom Grösse prüfen uns setzen
if ($_SESSION['pisize'] == "") 
{
$pisize = $bildcat['zoomsize'];
} 
else 
{
$pisize = $_SESSION['pisize'];
}

 

durch folgende ersetzen

 

// Zoom Grösse prüfen uns setzen
if ($_SESSION['pisize'] == "") 
{

if ($bildcat['zoomsize'] > 0)
{
$pisize = $bildcat['zoomsize'];
}
else
{
$pisize = 400;
}

} 
else 
{
$pisize = $_SESSION['pisize'];
}

Share this post


Link to post
Share on other sites

Update:


Habe gerade noch etwas entdeckt. Und zwar kann man Bilder trotz der oben beschriebenen Änderung der bestehenden Kategorie noch einer "nicht"-existierenden Kategorie zuordnen (catid=0). Und zwar habe ich wie oben geschrieben die Kategorie: Übersicht geändert.


Nun lade ich ein Bild hoch und wähle die zuzuordnende Kategorie. Dort steht dann immer noch "Übersicht" drin, aber auch "Übersicht / ". Ordne ich das Bild nun der Kategorie "Übersicht" zu, so wird beim Eintragen des Bildes in die Tabelle bei catid, "0" eingetragen. Nehme ich hingegen die, vorhin, geänderte "Übersicht /", dann läufts ohne Probleme.


Scheinbar eliminiert er den Eintrag im Adminbackend nicht. Bitte mal checken. Ich tippe auf unzureichende Abfragen. Man könnte auch hier wieder bei der Drop-Down-Box sich nur alle existierenden Kategorien anzeigen lassen. Irgendwie stibitzt er dort noch die "Übersicht" mit rein.



Grüße

Share this post


Link to post
Share on other sites

Ein (weiterer) schwerer Fehler ist uns aufgefallen. Ich weiß nicht, in wie weit Powie am Modul "Galerie" am werkeln ist, aber da gibt es ein paar kleine Stellen, die das Skript fast unbenutzbar machen!


Und zwar trat bei uns der Fehler auf, wenn man bei einem Bild unten auf "Weiter" oder "Zum Ende" klickte, auf eine Seite mit haufenweise Fehlermeldungen kam.


Diese sahen ungefähr so aus:

 

Warning: getimagesize() [function.getimagesize]: Unable to access /srv/www/htdocs/web6/html/ottimania/media/galerie/56. in /srv/www/htdocs/web6/html/ottimania/mod/galerie/functions.inc.php on line 119

Warning: getimagesize(/srv/www/htdocs/web6/html/ottimania/media/galerie/56.) [function.getimagesize]: failed to open stream: No such file or directory in /srv/www/htdocs/web6/html/ottimania/mod/galerie/functions.inc.php on line 119

Warning: Division by zero in /srv/www/htdocs/web6/html/ottimania/mod/galerie/functions.inc.php on line 125

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /srv/www/htdocs/web6/html/ottimania/mod/galerie/functions.inc.php on line 143

Warning: imagesx(): supplied argument is not a valid Image resource in /srv/www/htdocs/web6/html/ottimania/mod/galerie/functions.inc.php on line 144

Warning: imagesy(): supplied argument is not a valid Image resource in /srv/www/htdocs/web6/html/ottimania/mod/galerie/functions.inc.php on line 144

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /srv/www/htdocs/web6/html/ottimania/mod/galerie/functions.inc.php on line 144

Warning: imageinterlace(): supplied argument is not a valid Image resource in /srv/www/htdocs/web6/html/ottimania/mod/galerie/functions.inc.php on line 152

Warning: imagejpeg(): supplied argument is not a valid Image resource in /srv/www/htdocs/web6/html/ottimania/mod/galerie/functions.inc.php on line 166

Warning: getimagesize() [function.getimagesize]: Unable to access /srv/www/htdocs/web6/html/ottimania/cache/tmpimg.tmp in /srv/www/htdocs/web6/html/ottimania/mod/galerie/functions.inc.php on line 240

Warning: getimagesize(/srv/www/htdocs/web6/html/ottimania/cache/tmpimg.tmp) [function.getimagesize]: failed to open stream: No such file or directory in /srv/www/htdocs/web6/html/ottimania/mod/galerie/functions.inc.php on line 240

Warning: imagesx(): supplied argument is not a valid Image resource in /srv/www/htdocs/web6/html/ottimania/mod/galerie/functions.inc.php on line 276

Warning: imagesy(): supplied argument is not a valid Image resource in /srv/www/htdocs/web6/html/ottimania/mod/galerie/functions.inc.php on line 277

Warning: imagecopymerge(): supplied argument is not a valid Image resource in /srv/www/htdocs/web6/html/ottimania/mod/galerie/functions.inc.php on line 336

Warning: imagejpeg(): supplied argument is not a valid Image resource in /srv/www/htdocs/web6/html/ottimania/mod/galerie/functions.inc.php on line 339

 

Anbei, er lud immer eine 56.jpg. :gaga:


Das Testen an sich brachte keine Fortschritte, denn einerseits dachten wir, dass er beim Klick auf "Weiter" das nächste Bild nicht läd, weil es eventuell nicht existiert. Manchmal wurde es angelegt, manchmal nicht. Wiederum brach uns ab und an der Fehler einfach alles ab. :gaga:



Wie auch immer. Folgendes führte nun zu einem fehlerfreien Skript.


Zeile 18 und 19

 

//$bc = $_GET['bc']; 
//$showcat = $_GET['showcat']; 

 

Warum diese beiden auskommentiert wurden, kann ich nicht nachvollziehen Wir haben sie wieder ent-kommentiert (kann man dass so sagen? ^^ ), denn wie soll er sonst die übergebenen Variablen $bc und $showcat speichern? Im Skript wird ja immer mit $bc oder $showcat gearbeitet und nicht mit $_GET ['bc'].


Also muss diese Zeile so aussehen:

 

$bc = $_GET['bc']; 
$showcat = $_GET['showcat']; 

 


Zeile 30 ff.


Dies ist mir das größte Rätsel gewesen. Folgendes steht in den Zeilen.

 

$bc = $bild['sort'];		
$showcat = $bild['catid'];

 


Vorher gab es folgende SQL-Abfrage:

 




Dort wurde folgendes getan: Wenn eine $id übergebene wurde, dann hat er alle Daten aus der Tabelle "pibild" ausgelesen und in die verschiedensten Variablen zwischengespeichert, u.a. auch in $bc und $showcat.

Wurde hingegen sowohl $bc und $showcat übergeben, so tat er das Gleiche wie, wenn $id übergeben wurde: er las nochmal alle aus der Tabelle aus.



Und hier ist der Knackpunkt. Denn entweder er speichert sie fehlerhaft oder die Spalten, die er in den Variablen $bc und $showcat zwischenspeichert haben keine Werte oder eine von beiden hat nur einen. Jedenfalls waren diese dann immer leer. So richtig kann ich mir diese Stelle auch nicht erklären.



Man umgeht dieses Fehlverhalten, indem man einfach die Variablen $bc und $showcat nur dann setzt, wenn auch eine ID übergeben wurde. Denn dann werden diese sauber mit Werten aus der Tabelle gefüllt. Also folgendermaßen:


if ($id != "") 
{
$bc = $bild['sort'];
$showcat = $bild['catid'];
}

 

Wie gesagt, wenn keine $id übergeben wurde und es wurde sowohl $bc als auch $showcat übergeben, dann werden die anfangs zwischengespeichert und brauchen ja nicht wieder geändert werden. Bei Powies jetziger Version 0.6.1beta im CVS ist dies aber noch der Fall.


Frage mich warum hier noch nichts darüber geschrieben wurde. Wahrscheinlich nutzen viele diese Version noch nicht, weshalb keiner es bisher gemeldet hatte.


In der Version 0.5.5beta ist dieses Problem aber noch nicht aufgetreten! Ich nehme an, es wurde beim Testen etwas *übersehen*. :-D


[ot]*gähn* ... Der Männertag kann kommen. Erstmal schön grillen und hoffen, dass es nicht regnet... *bet* [/ot]

Share this post


Link to post
Share on other sites

Die Fehler kommen einfach daher das ich die Blätterfunktion in den Kategorien umgebaut habe. Früher konnte man über den Einstieg auf ein einzelnes Bild nicht in der zugehörigen Galerie blättern, das ist jetzt ermöglicht. Allerdings habe ich da etwas mit der catid = 0 übersehen .


will be fixed

Share this post


Link to post
Share on other sites
Original von Powie

Die Fehler kommen einfach daher das ich die Blätterfunktion in den Kategorien umgebaut habe. Früher konnte man über den Einstieg auf ein einzelnes Bild nicht in der zugehörigen Galerie blättern, das ist jetzt ermöglicht. Allerdings habe ich da etwas mit der catid = 0 übersehen .


will be fixed



Nimm doch einfach dem K00ni sein fixing das läuft ja ohne fehler!

Share this post


Link to post
Share on other sites

... ich habe da noch andere Probleme mit, die daraus resultieren das es für die Übersicht keinen Kategorie Datensatz gibt. Unter "Neue Bilder" wirst du deshalb keine Bilder aus der Root Kategorie finden. Leider ist es nicht möglich einen Datensatz mit ID = 0 anzulegen. Daraus resultierend überlege ich mir gerade wie ich dieses Problem löse. Kooni hatn zwar das eine Problem gelöst, aber nich nicht den generellen Workaround geschaffen.

Zumal das ja in allen anderen Kategorie Bäumen der anderen Module das gleiche ist.

Eine Lösung wäre zum Beispiel das die ID = 1 die Root Kategotrie ist.


... ich überlege also gerade wieso ich die verschiedenen Bäzume nicht ganz auflöse und einen "Stammbaum" generiere in dem jeweils alle anderen Unterkategorien enthalten sind :-o

Share this post


Link to post
Share on other sites

Hallo Powie,


nur mal sone frage wenn das Problem im pSys vorhanden ist dann warscheinlich auch im pImages oder?


wenn du jetzt hin gehst und das so änderst dann bedeutet das doch beim nächsten Update von pSys oder pImages das ne menge Datenbanken dann korrupt wären oder nicht?


weil in den Datenbanken gibt es immernoch das alte System mit id=0!


Gruß Otti

Share this post


Link to post
Share on other sites

Hallo,


ist etwas verzwickt. Ich selbst grüble nun schon eine Weile, wie man das am Besten angehen kann. Ich versuche es mal schrittweise.


Unter "Neue Bilder" wirst du deshalb keine Bilder aus der Root Kategorie finden.


Dies könnte man doch lösen, indem man eine neue Abfrage hinzupackt, die nur die Bilder mit der Katid = 0 abfragt.

 




Dazu vielleicht dann folgende Abfrage:


$sqlbefehl = "Select * 
FROM $tab_pibild 
where status='view'  and catid ='0'
order by b.time desc
LIMIT $pitopbilder";

 

Je nachdem noch anpassen.



Leider ist es nicht möglich einen Datensatz mit ID = 0 anzulegen.


Hierzu würde ich sagen. Verweigere im Admin das hinzufügen von Bildern zur Kategorie mit der ID 0. Zu überlegen wäre, wie das aussieht bei Leuten, die Bilder in der Kategorie 0 haben, da sie diese dann nicht um neue bereichern können. Andererseits würdest du diesen Fehler bei allen Leuten verhindern, da somit jeder gezwungen wird, entweder die bestehende Kategorie zu ändern oder gleich eine Neue anzulegen.


Da komm ich auch gleich zum nächsten Punkt. Das man dort bereits eine (scheinbar) bestehende Kategorie sieht, würde ich generell rausschmeißen. Was dich damals dazu geritten hat ? :-o


Zu dem Problem mit der fehlerhaften Anzeige von Bildern, die der Kat-ID 0 zugeordnet sind, könnte man wie schon oben beschrieben, mit einer festen Bildgröße begegnen, die einfach genommen wird, wenn keine Zoomgröße aus der Tabelle abgefragt werden kann. Somit umgeht man die Fehlermeldungen. Diese Größe könnte man ja in der config ablegen. So nach der Art: Wenn keine Bildgröße angegeben wurde, diese Standardgröße nutzen.


.. ich überlege also gerade wieso ich die verschiedenen Bäzume nicht ganz auflöse und einen "Stammbaum" generiere in dem jeweils alle anderen Unterkategorien enthalten sind


Erkläre das mal bitte etwas genauer. Denn eigentlich haste das ja bis jetzt schon drin, jedenfalls teilweise.



k00ni

Share this post


Link to post
Share on other sites

pImage funktioniert anders ...


Habe aber noch eine andere Denke. Die ID der root Kategorie wäre vielleicht sogar egal, sie wäre durch catid=0 gekennzeichnet :-o

Share this post


Link to post
Share on other sites
Habe aber noch eine andere Denke. Die ID der root Kategorie wäre vielleicht sogar egal, sie wäre durch catid=0 gekennzeichnet


Es geht doch nicht um die ID an sich, sondern darum, dass du die Größen der Bilder aus der Tabelle ausliest, weshalb es ja zu Fehlern kommt, da es keinen Datensatz mit ID = 0 gibt. Was ist dann in diesem Falle mit deiner Übersicht-Kategorie, mit ID 0?


pImage funktioniert anders ...


Wie funktioniert es denn ?

Share this post


Link to post
Share on other sites

die ID = 0 kann es nicht geben, das erlaubt mySQL nicht. Ich sage ja, die ID ist genrell eigentlich egal, wenn die root Kategorie mit subcat = 0 gekennzeichnet ist, dann ist sie es eben. Und alle anderen werden dieser untergeordnet, egal welche ID sie hat. Somit erlaubt es mir auch das nachträglich zu implementieren. :-o


so wirds werden :)

Share this post


Link to post
Share on other sites
die ID = 0 kann es nicht geben, das erlaubt mySQL nicht.


Hab ich glaub ich so auch nicht geschrieben bzw. gemeint.


Somit erlaubt es mir auch das nachträglich zu implementieren.


Ich freue mich drauf.

Share this post


Link to post
Share on other sites
Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...