[Allegro] rset.php hat einen fehler, der nur unter php 5.x sichtbar wird

Jörg Oberfell oberfell at wlb-stuttgart.de
Sa Nov 12 11:55:55 CET 2011


Lieber Herr Lehmann,

>> Feldelement meint hier $erg[0], also das erste Element im Array $erg.
>> Die PHP-Meldung lässt sich mit folgendem PHP-Skript reproduzieren:
>> $erg = array();      // LEERES Array
>> if(substr($erg[0],0,2)=="i="){}
>>
>> Mit einem einelementigen Array, z. B.
>>      $erg = array("");      // Array mit einem Element (leerer String)
>>      if(substr($erg[0],0,2)=="i="){}
>> ist die Meldung dann weg.

>  also löst ihre zusätzliche zeile das problem?!
>  es gilt es auszuprobieren.


Das war nicht(!) als Lösung gedacht, sondern als Test, um die 
Fehlermeldung zu provozieren bzw. um zu zeigen, dass die Meldung im 
zweiten Beispiel [$erg = array("")] nicht mehr auftritt, denn im 
einelementigen Array kann problemlos auf das erste Element zugegriffen 
werden.


> ich rate/interpretiere: kommt ein "i="irgendwas oder kommt eben als
> nur mögliche alternative eben NICHTS, ist $erg leer. zu einfach?

Ich kann nicht beurteilen, was von acon zurückkommt, wenn KEIN Datensatz 
gefunden wird. Kommt dann wirklich nichts? Das ist natürlich 
Job-abhängig (mein rset.php sieht etwas anders aus), aber meistens steht 
in den Jobs doch irgendetwas wie "Nichts gefunden", und zumindest das 
müsste nachher in $erg stehen.


> ein anderer ansatz ist auch:
> wir geben explicit an dieser stelle gar keine fehlermeldungen raus!
> und zwar so: (seit gestern abend getestet)
>
> in der rset.php um ein "@" ergänzt
> if(substr(@$erg[0],0,2)=="i=").
>            ~
> ist das "kopf in den wüstensand stecken"?


Man müsste zunächst prüfen, ob semantisch gesehen eine leere Antwort 
gültig ist, oder aus semantischer Sicht einen Fehler bedeutet. Dann 
würde ich Folgendes vor die problematische Zeile setzen:

if (count($erg) == 0) {  // Ergebnis-Array ist leer
    //entweder leere Antwort oder aber Fehlermeldung ausgeben
}
else if (substr(@$erg[0],0,2)=="i="))
...


Viele Grüße,
Jörg Oberfell

-- 
**********************************************************************
    Jörg Oberfell
    Württembergische Landesbibliothek
    - IT-Abteilung -
    - Fachreferat Mathematik und Informatik -
    Konrad-Adenauer-Str. 8   D-70173 Stuttgart
    Postfach 105441          D-70047 Stuttgart
    Tel.: +49 (0)711 / 212 - 44 75
    Fax:  +49 (0)711 / 212 - 44 22
    E-Mail: oberfell at wlb-stuttgart.de
**********************************************************************





Mehr Informationen über die Mailingliste Allegro