Seite 1 von 1

we:listview type="sql" - defekt oder Fehler im Code?

Verfasst: Do 8. Apr 2021, 17:55
von mediavantis
Hallo zusammen,
in einer WE 9.0.7.1 (aktuelle Nightly)
habe ich aus einer 8er Version folgendes übernommen (da funktionierte es einwandfrei):

Code: Alles auswählen

<we:var name="UserID" nameto="MID" to="global" />
<we:listview type="sql" name="statusUser" select="*" from="tblWebUser" where="id=$MID">
	<we:repeat>
		<we:field name="Username" />
	</we:repeat>
</we:listview>
Hier sagt mir das Fehlerlog folgendes:

MYSQL-ERROR
Fehler: 1064
Detail: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1
Info:
Query: SELECT * FROM tblWebUser WHERE id=

MYSQL-ERROR
Fehler: 1064
Detail: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'LIMIT 0,100000000' at line 1
Info:
Query: SELECT * FROM tblWebUser WHERE id= LIMIT 0,100000000

Also trage ich testweise die mir bekannte ID hart rein und checke nochmals:

Code: Alles auswählen

<we:var name="UserID" nameto="MID" to="global" />
<we:listview type="sql" name="statusUser" select="*" from="tblWebUser" where="id=94">
	<we:repeat>
		<we:field name="Username" />
	</we:repeat>
</we:listview>
Daraufhin folgende Fehlermeldung:
Return value of we_listview_sql::f() must be of the type string, int returned

Also wandele ich vor der LV die Variable in einen String um:

Code: Alles auswählen

<we:var name="UserID" nameto="MID" to="global" />
<?php
$newMID = strval($GLOBALS['MID']);
?>
<we:listview type="sql" name="statusUser" select="*" from="tblWebUser" where="id=$newMID">
	<we:repeat>
		<we:field name="Username" />
	</we:repeat>
</we:listview>
Das will WE auch nicht haben und meldet trotzdem folgendes:
Return value of we_listview_sql::f() must be of the type string, int returned

Habe ich doch einen Fehler eingebaut, der mir partout nicht auffallen will, oder ist es vielleich doch ein Bug in der LV type"sql"?

Re: we:listview type="sql" - defekt oder Fehler im Code?

Verfasst: Do 8. Apr 2021, 19:26
von mokraemer
Mit

Code: Alles auswählen

<we:var name="UserID" nameto="MID" to="global" />
mußt du

Code: Alles auswählen

<we:listview ..where="\$MID">
schreiben.

Die Meldung
Return value of we_listview_sql::f() must be of the type string, int returned
ist ein kleiner Bug, hab ich grad korrigiert (wg. Uploader Bug am besten bis Montag warten)

Re: we:listview type="sql" - defekt oder Fehler im Code?

Verfasst: Fr 9. Apr 2021, 10:07
von mediavantis
@mokraemer

Vielen Dank für die Antwort. Das aktuelle Nightly habe ich eingespielt.

Allerdings schlägt diese von Dir angegebene Vorgehensweise leider auch fehl:

Code: Alles auswählen

<we:listview ..where="\$MID">
Wenn ich das richtig verstanden habe, benötigt die WHERE doch eine Angabe, aus welcher Tabellenspalte er den Wert heranziehen soll!?
Das muss ja nicht zwingend die ID sein, sondern könnte ja auch (bezogen auf die Tabelle tblWebUser) die Spalte Username sein.

Muss dann nicht zwangsläufig folgendes stehen?

Code: Alles auswählen

<we:listview ..where="id=xx"> //oder
<we:listview ..where="Username=xx">
Ich bin jetzt mal alle Möglichkeiten durchgegangen, und zwar:

Code: Alles auswählen

<we:listview ..where="$MID"> //schlägt fehl
<we:listview ..where="id=\$MID"> //schlägt fehl
<we:listview ..where="id=MID"> //schlägt fehl

<we:listview ..where="id=94"> //funktioniert
Könnte es nicht doch sein, dass das Attribut "where" eine Variable nicht verarbeiten kann?

Re: we:listview type="sql" - defekt oder Fehler im Code?

Verfasst: Fr 9. Apr 2021, 13:25
von NilSole
Hallo Ulrich,

Seit WE9 muss vor globalen Variablen innerhalb von WE-Tags ein '\' stehen (das war früher auch schon so gedacht, ging aber trotzdem).

Folglich sollte es so laufen

Code: Alles auswählen

<we:var name="UserID" nameto="MID" to="global" />
<we:listview type="sql" name="statusUser" select="*" from="tblWebUser" where="id=\$MID">
	<we:repeat>
		<we:field name="Username" />
	</we:repeat>
</we:listview>

Re: we:listview type="sql" - defekt oder Fehler im Code?

Verfasst: Fr 9. Apr 2021, 13:32
von mediavantis
Hallo Nils,

schon klar, und ich habe es ja getestet:

Code: Alles auswählen

<we:listview ..where="$MID"> //schlägt fehl
<we:listview ..where="id=\$MID"> //schlägt fehl <----- siehe hier
<we:listview ..where="id=MID"> //schlägt fehl
<we:listview ..where="\$MID"> // auch diese Variante

<we:listview ..where="id=94"> //funktion
Aber es funktioniert nicht...

Re: we:listview type="sql" - defekt oder Fehler im Code?

Verfasst: Fr 9. Apr 2021, 14:25
von mokraemer
@Urlich: ich hab doch geschrieben, das es dazu ein Update braucht.

Re: we:listview type="sql" - defekt oder Fehler im Code?

Verfasst: Fr 9. Apr 2021, 14:34
von mediavantis
@mokraemer
Oh, ok, sorry,
Dann hatte ich Deine Antwort
ist ein kleiner Bug, hab ich grad korrigiert
wohl falsch interpretiert und angenommen, dass hättest du in diesem Moment schon in die Nightly.

Ok, ich warte ;-)

Re: we:listview type="sql" - defekt oder Fehler im Code?

Verfasst: Fr 9. Apr 2021, 16:27
von mokraemer
ja, ist auch in der nightly. das fixt den we:field Fehler

Re: we:listview type="sql" - defekt oder Fehler im Code?

Verfasst: Fr 9. Apr 2021, 17:34
von mediavantis
Vielen Dank!

mit der SVN 13102 klappt es jetzt prima!