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

Begonnen von k00ni, 16. Mai 2007, 21:57:09

Vorheriges Thema - Nächstes Thema

k00ni

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. /uploads/emoticons/icon_e_wink.gif.3167d127940f44558fbf1ccd9b6d60a9.gif\" alt=\";-)\" />
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\'];
}

k00ni

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

k00ni

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*.  /uploads/emoticons/icon_e_biggrin.gif.1a84f5257b36e14b36d04985314f877f.gif\" alt=\":-D\" />
[ot]*gähn* ... Der Männertag kann kommen. Erstmal schön grillen und hoffen, dass es nicht regnet... *bet* [/ot]

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

otti_mania


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
[/quote]
Nimm doch einfach dem K00ni sein fixing das läuft ja ohne fehler!

Gruß Otti




#########WICHTIG###########


if (IQ > Raum - °C) echo $post


   else exit ();


##########################




http://www.ottimania.de\" rel=\"external nofollow\">http://www.ottimania.de/banner1.gif\" alt=\"banner1.gif\">


Powie

... 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  /uploads/emoticons/icon_e_surprised.gif.a8707b3f35a569cb4cfe563fc72ef78d.gif\" alt=\":-o\" />

otti_mania

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

Gruß Otti




#########WICHTIG###########


if (IQ > Raum - °C) echo $post


   else exit ();


##########################




http://www.ottimania.de\" rel=\"external nofollow\">http://www.ottimania.de/banner1.gif\" alt=\"banner1.gif\">


k00ni

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.[/quote]
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.[/quote]
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 ?  /uploads/emoticons/icon_e_surprised.gif.a8707b3f35a569cb4cfe563fc72ef78d.gif\" alt=\":-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[/quote]
Erkläre das mal bitte etwas genauer. Denn eigentlich haste das ja bis jetzt schon drin, jedenfalls teilweise.
 
k00ni

Powie

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  /uploads/emoticons/icon_e_surprised.gif.a8707b3f35a569cb4cfe563fc72ef78d.gif\" alt=\":-o\" />

k00ni

Habe aber noch eine andere Denke. Die ID der root Kategorie wäre vielleicht sogar egal, sie wäre durch catid=0 gekennzeichnet [/quote]
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 ... [/quote]
Wie funktioniert es denn ?

Powie

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.  /uploads/emoticons/icon_e_surprised.gif.a8707b3f35a569cb4cfe563fc72ef78d.gif\" alt=\":-o\" />
so wirds werden /uploads/emoticons/icon_e_smile.gif.4a0acefcb917340d2c82e5239c009e6e.gif\" alt=\":)\" />

k00ni

die ID = 0 kann es nicht geben, das erlaubt mySQL nicht. [/quote]
Hab ich glaub ich so auch nicht geschrieben bzw. gemeint.
Somit erlaubt es mir auch das nachträglich zu implementieren.[/quote]
Ich freue mich drauf.

all your base are belong to us