0 votes
in SoSci Survey (dt.) by s126344 (280 points)
edited by SoSci Survey

Hallo,

ich habe eine Randomisierung von Fragen mit zwei Zetteln und insgesamt 4 Möglichkeiten mittels eines PHP-Codes erstellt.
In jenem sind auch je Möglichkeit ein Bild eingefügt. Manchmal, so z.B. in Fall elseif ($zahl ==2) wird kein Bild abgebildet und es entsteht eine wirre Reihenfolge der Fragen, wie sie so nicht im PHP- Code steht. Dazu habe ich auch der Fragebogenseite zwischen den einzelnen Fragen folgende Fehlermeldung erhalten:

Items in der nachfolgenden Fragen werden auf dieser Seite schon weiter oben angezeigt. Dies führt fast zwangsläufig zu Datenverlust! Falls Sie eine Frage mehrfach benötigen, legen Sie bitte eine Kopie der Frage an. Betroffen sind folgende Items: P006_01, P006_02, P006_03, P006_04, P006_05, P006_06, P006_07, P006_08, P006_09, P006_10.

Mein verwendeter PHP-Code ist folgender:

$zahl = value ('IA06x01');// Auslesen der gezogenen Zufallszahl
 
// Grafikdatei in Abhängigkeit von der Zufallszahl in einen Platzhalter schreiben
if ($zahl == 1) 
{
question('B008');
replace('%Insektenburger%', '1Insektenburger_Bugfoundation.png');html('<p><p style="text-align: center;margin-top: 2px; margin-bottom: 0px;" style="max-width: 45%" style="max-height:60%"><img src="%Insektenburger%"></p>');
question('B007');
question('B006');
question('B001');
question('B002');
question('B003');
question('B004');
question('B009');
question('B005');
question('B010');
question('B011');
} elseif ($zahl == 2) 
{ 
question('G007');
replace('%Insektenburger%', 'Insektengranola_SnackInsects.png');html('<p><p style="text-align: center;margin-top: 2px; margin-bottom: 0px;" style="max-width: 45%" style="max-height:60%><img src="%Insektenburger%"></p>');
question('G008');
question('G006');
question('G001');
question('G002');
question('G003');
question('G004');
question('G009');
question('G005');
question('G010');
question('G011');
} elseif ($zahl == 3) 
{
question('P007');
replace('%Insektenburger%', 'Insektenpasta_plumentofoods.png');html('<p><p style="text-align: center;margin-top: 2px; margin-bottom: 0px;" style="max-width: 45%" style="max-height:60%><img src="%Insektenburger%"></p>');
question('P007');
question('P006');
question('P001');
question('P002');
question('P008');
question('P006');
question('P001');
question('P002');
question('P003');
question('P004');
question('P009');
question('P005');
question('P010');
question('P011');
} elseif ($zahl == 4) 
{
question('R007');
replace('%Insektenburger%', '1Insektenproteinriegel_Swarmprotein.jpg');html('<p><p style="text-align: center;margin-top: 2px; margin-bottom: 0px;" style="max-width: 45%" style="max-height:60%><img src="%Insektenburger%"></p>');
question('R008');
question('R006');
question('R001');
question('R002');
question('R003');
question('R004');
question('R010');
question('R005');
question('R011');
question('R009');
question('R012');
}

Vielen Dank schonmal.

by s126344 (280 points)
Der vollständige code für das Einbinden der Bilder, der oben nicht richtig angezeigt wird, ist folgender:

replace('%Insektenburger%', '1Insektenburger_Bugfoundation.png');html('<p><p style="text-align: center;margin-top: 2px; margin-bottom: 0px;" style="max-width: 45%" style="max-height:60%"><img src="%Insektenburger%"></p>');
by SoSci Survey (306k points)
Tipp: Verwenden Sie den Knopf {}, um Code als solchen zu formatieren. Ich habe das oben einmal geändert.
by SoSci Survey (306k points)
Eine wichtige Frage: Unterscheiden sich die Fragen aus G0, B0, P0 und R0 oder sind das jeweils dieselben Fragen?

Und: Weshalb verwenden Sie replace(), wenn Sie das html() dann ohnehin einbinden? Wird das Bild auf folgenden Seiten erneut angezeigt?
by SoSci Survey (306k points)
Vielleicht eine kurze Antwort schonmal zum HTML-Code, der ist nicht ganz korrekt:

<p><p style="text-align: center;margin-top: 2px; margin-bottom: 0px;" style="max-width: 45%" style="max-height:60%"><img src="%Insektenburger%"></p>

Oder anders geschrieben:

<p>
  <p style="text-align: center;margin-top: 2px; margin-bottom: 0px;" style="max-width: 45%" style="max-height:60%">
    <img src="%Insektenburger%">
  </p>

Zum ersten ist das erste <p> überflüssig bzw. nicht abgeschlossen. Dann haben Sie im zweiten <p> zweimal das "style"-Attribut, wovon der Browser nur eines verwendet. Zum Dritten geben Sie im <p> (Absatz) eine Breite und Höhe ein, aber ich denke, Sie meinen eigentlich das Bild, also müsste es heißen:

<img src="1Insektenburger_Bugfoundation.png" style="max-width: 45%; max-height: 60%">

Das "max-height" macht auch nur dann Sinn, wenn Sie das Bild in einem Element mit fester Höhe verwenden.
by s126344 (280 points)
B0, G0, P0 und R0 haben die gleichen Items, jedoch ist der Text (Inhalt) immer individuell für jedes der vier Möglichkeiten, weshalb ich die nicht duplizieren kann.

Erhlich gesagt, kann ich nicht erklären, warum ich das so gemacht habe, aber nur so hat es, nach langem Tüfteln, funktioniert zu Anfang.

Es sind insgesamt vier unterschiedliche Bilder, die jeweils je Möglichkeit varrieren und zu je einer Möglichkeit je ein Bild gehört.

Die Bilder sollen von Bildüberschriften (bspw. B008)  und Bildunterschriften (bspw. B007) umgeben sein, deshalb habe ich es auch probiert, mit margin-top und margin-bottom. Aber irgendwie ist immer noch so viel Abstand zwischen dem Bild und jeweils der Bilder Überschrift (also B008)...

1 Answer

0 votes
by SoSci Survey (306k points)

B0, G0, P0 und R0 haben die gleichen Items, jedoch ist der Text (Inhalt) immer individuell für jedes der vier Möglichkeiten, weshalb ich die nicht duplizieren kann.

Eventuell möchten SIe es mit einer Rubrik lösen und Platzhalter in den Item-Texten verwenden. Wenn das möglich ist, würde es Ihre Auswertung vermutlich deutlich vereinfachen.

Wenn Sie das replace() nicht brauchen, dann lassen Sie es weg, um etwas Komplexität zu reduzieren. Also statt:

replace('%Insektenburger%', '1Insektenproteinriegel_Swarmprotein.jpg');html('<p><p style="text-align: center;margin-top: 2px; margin-bottom: 0px;" style="max-width: 45%" style="max-height:60%><img src="%Insektenburger%"></p>');

Einfach nur

html('<p style="text-align: center; margin-top: 2px; margin-bottom: 0px; max-width: 45%;"><img src="1Insektenproteinriegel_Swarmprotein.jpg"></p>');

Dabei sah ich auch, dass ein Anführungszeichen hinter dem max-height fehlte. Womöglich war schon das dafür verantwortlich, dass es nicht funktionierte. Bitte tauschen Sie das einmal aus und testen Sie, ob das Problem damit behoben ist.

by s126344 (280 points)
Hallo,
zu der (ersten) Fehlermeldung ist mir gerade auch selbst aufgefallen, dass im Fall der Möglichkeit 3 (P0) drei Fragen Doppelt im PHP-Code standen - dies habe ich geändert. Jetzt kommt das nicht mehr. Danke erstmal ;)


Ich habe nun Ihren letzten PHP-Code (ohne replace () ) eingebaut. Die Bilder werden nun normal eingebaut, aber im Fall der Möglichkeit 3 wird das Bild z.B. NICHT in der Mitte angezeit, sondern linksbündig. (Im Fall von Möglichkeit 1 ist das Bild jedoch mittig.) Ich habe 2 Bilder (Möglichkeit 1 und 4), die quadratisch sind und 2 Bilder (Möglichkeit  2 und 3), die länglich sind. Ist das vllt das Problem?

Außerdem wird bei den besagten Beispielen in der Anzeige (trotz des Befehls margin-top und margin-bottom bei der Einbindung des html-Codes für das Bild) immer noch ein großer Abstand zwischen der Bildüberschrift (bspw. P007) und dem Bild, sowie der Bildunterschrift (bspw. P008) gelassen, sodass das Bild nicht vernünftig von Bildüberschrift und Bildunterschrift eingebunden wird. Gibt es da vllt andere px-Werte, die man eingeben muss oder ähnliches?
Ich bin leider total überfragt und kenne mich damit gar nicht aus. Vllt. können Sie mir da noch einmal helfen, bitte.
by SoSci Survey (306k points)
> im Fall der Möglichkeit 3 wird das Bild z.B. NICHT in der Mitte angezeit, sondern linksbündig. (Im Fall von Möglichkeit 1 ist das Bild jedoch mittig.

Dann wird dort entweder unterschiedliche HTML-Code verwendet oder die Bilder sind unterschiedlich groß. Ohnehin würde ich zum Zentrieren der Bilder einen anderen HTML-Code empfehlen:

<p style="text-align: center;"><img src="1Insektenproteinriegel_Swarmprotein.jpg" style="width: 320px; max-width: 100%"></p>

> Außerdem wird bei den besagten Beispielen in der Anzeige (trotz des Befehls margin-top und margin-bottom bei der Einbindung des html-Codes für das Bild) immer noch ein großer Abstand zwischen der Bildüberschrift (bspw. P007) und dem Bild, sowie der Bildunterschrift (bspw. P008) gelassen

Wo ist in Ihrem HTML-Code denn die Bildüber- und -unterschrift?
by s126344 (280 points)
Die Bildunter- und Überschriften habe ich jeweils als question P007 und question P008 im Testformat jeweils vor und nach dem html code für das Bild eingebunden.
Ist das nicht richtig?
by SoSci Survey (306k points)
Das kommt darauf an, was in diesen Texten genau steht. Was haben Sie dort jeweils als Darstellungsmodus ("HTML-Code") und als Inhalt eingetragen? Es ist durchaus plausibel, dass Sie dort einfach einen Abstand eingestellt haben.

Wenn Sie keinen mehrsprachigen Fragebogen haben, dann können Sie die Bildüber- und -unterschriften auch einfach ins HTML zum Bild packen:

<div style="width: 320px; max-width: 100%; margin: 1em auto">
  <div>Bildüberschrift</div>
  <img src="1Insektenproteinriegel_Swarmprotein.jpg" style="max-width: 100%"></div>
  <div>Bildunterschrift</div>
</div>
by s126344 (280 points)
Wenn ich Ihren html Code verwende

<p style="text-align: center;"><img src="1Insektenproteinriegel_Swarmprotein.jpg" style="width: 320px; max-width: 100%"></p>

, dann wird mir im Fragebogen folgende Fehlermeldung angezeigt. Im PHP-Code trat ein Fehler auf.

Fehler im Fragebogen: Befehl oder String (Text) nicht abgeschlossen

    Hinter einem Befehl wie z.B. question() steht kein Strichpunkt oder
    ein String (Text in Anführungszeichen) ist nicht abgeschlossen oder
    im String selbst kommt ein Anführungszeichen vor, z.B. html('Mach's besser!'); – in diesem Fall stellen Sie dem Anführungszeichen einen Backslash (\) voran.
    Möglicherweise stimmen die öffnenenden und schließenden geschweiften Klammern für Anweisungsblöcke auch nicht überein.
by s126344 (280 points)
Oder muss ich vor das <p   noch html hinschreiben?
by s126344 (280 points)
Danke, ich probiere das jetzt mal. Muss ich anstatt Bildüberschrift dann (in meinem Fall) question P007 in den Code schreiben?

Es tut mir wirklich leid, dass ich so viele Fragen stelle, aber ich habe leider kein großes Verständnis für Programmiersprachen und Informatik. Danke vielmals.
by s126344 (280 points)
<div align="center"><br /></div>

<p class="sceditor-nlf" align="center"><font size="2">Der Burgerbratling des Insekten-Burgers besteht zu ca. 30% aus Buffalowürmern<i><br /> (Alphitobius diaperinus)</i> und ausgewählten vegetarischen Zutaten
(u.a. Zwiebeln, Gewürze usw.).</font><!--StartFragment--><!--EndFragment--></p>

<!--EndFragment-->

<p><br /></p>



Das steht in meinem html-Code für die Bildüberschrift (als Beispiel für alle anderen auch).
by SoSci Survey (306k points)
Bitte vergessen Sie die Funktion html() um den HTML-Code herum nicht:

html('
<div style="width: 320px; max-width: 100%; margin: 1em auto">
  <div>Bildüberschrift</div>
  <img src="1Insektenproteinriegel_Swarmprotein.jpg" style="max-width: 100%"></div>
  <div>Bildunterschrift</div>
</div>
');

> Das steht in meinem html-Code für die Bildüberschrift

Da haben Sie Abstände vom <p> und dann nochmal eine Extra-Zeile vom <p><br /></p>
by s126344 (280 points)
> Das steht in meinem html-Code für die Bildüberschrift

Da haben Sie Abstände vom <p> und dann nochmal eine Extra-Zeile vom <p><br /></p>Ok, würde es was bringen, wenn ich dann die Extrazeile vom <p><br /></p> herausnehme aus dem Code?

Und, muss ich das in Ihrem verwendeten Code statt <div>Bildunterschrift</div>
<div>questionP007>/div> hinschreiben?
Weil das Wort Bildunterschrift existiert so in meinem Fragebogen nicht, oder hat das damit nichts zu tun?
by s126344 (280 points)
Ich habe diesen Code nun angewendet. Jedoch ist die Seite jetzt leider viel zu breit (breiter ald die anderen im Fragebogen), das Bild ist viel zu klein und von den angderen Fragen quasi abgeschnitten.

Eigentlich wollte ich nur, dass unter nach question ('P007') (= Bildüberschrift) das Bild folgt und danach question ('P008') (=Bildunterschrift).

Nun steht aber über dem Bild ,,Bildüberschirft'' und unter dem Bild auch ,,Bildunterschrift''.

Ich weiß, Sie haben sicherlich viel zu tun und es ist auch sicherlich nicht Ihre Aufgabe, aber könnte ich Ihnen evtl. den Pretest-Link zukommen lassen und Ihnen die Seite nennen, auf welcher sich die Problematik befindet, sodass Sie einmal sehen können, was ich meine ?

Sicherlich gibt es da eine schnelle Lösung für, nur ich selbst komme an diesem Punkt einfach nicht weiter, leider.

Vielen lieben Dank im Voraus schonmal.
by SoSci Survey (306k points)
Ja, posten Sie gerne einen Pretest-Link - bitte direkt (!) zur betroffenen Seite. Danke.
by s126344 (280 points)
by s126344 (280 points)
$zahl = value ('IA06x01');// Auslesen der gezogenen Zufallszahl
 
// Grafikdatei in Abhängigkeit von der Zufallszahl in einen Platzhalter schreiben
if ($zahl == 1)
{
html('
<div style="width: 320px; max-width: 100%; margin: 1em auto">
  <div><p align="center"><b>Bitte schauen Sie sich die folgende Abbildung des Insekten-Burgers an.</b></p>
<div align="center"><br /></div>
</div>
  <img src="Insektenburger_Bugfoundation.png" style="max-width: 90%"></div>
  <div><p class="sceditor-nlf" align="center"><font size="2">Der Burgerbratling des Insekten-Burgers besteht zu ca. 30% aus Buffalowürmern<i><br /> (Alphitobius diaperinus)</i> und ausgewählten vegetarischen Zutaten (u.a. Zwiebeln, Gewürze usw.).</font><!--StartFragment--><!--EndFragment--></p>
</div>
</div>
');
question('B006');
question('B001');
question('B002');
question('B003');
question('B004');
question('B009');
question('B005');
question('B010');
question('B011');
} elseif ($zahl == 2)
{
html('
<div style="width: 320px; max-width: 100%; margin: 1em auto">
  <div><p align="center"><b>Bitte schauen Sie sich die folgende Abbildung des Insekten-Müslis an.</b></p></div>
  <img src="Insektengranola_SnackInsects.png" style="max-width: 90%"></div>
  <div><p align="center"> <font size="2">Das Insekten-Müsli besteht zu 4% aus gemahlenen Buffalowürmern </font><font size="2"><i>(Alphitobius diaperinus)</i><br> und ausgewählten Bestandteilen einer Getreideflockenmischung (u.a. Haferflocken, Chiasamen, Mandeln usw.).</font></p> <p class="sceditor-nlf" align="justify"><br /></p></div>
</div>
');
question('G006');
question('G001');
question('G002');
question('G003');
question('G004');
question('G009');
question('G005');
question('G010');
question('G011');
} elseif ($zahl == 3)
{
html('
<div style="width: 320px; max-width: 100%; margin: 1em auto">
  <div><p align="center"><b>Bitte schauen Sie sich die folgende Abbildung der Insekten-Nudeln an.</b></p></div>
  <img src="Insektenpasta_plumentofoods.png" style="max-width: 90%"></div>
  <div><p align="center"> <font size="2">Die Insekten-Nudeln bestehen zu 10% aus gemahlenen Buffalowürmern <i>(Alphitobius diaperinus)</i> sowie Hartweizengrieß.</font> </p>
<p class="sceditor-nlf" align="justify"><br /></p>
</div>
</div>
');
question('P006');
question('P001');
question('P002');
question('P003');
question('P004');
question('P009');
question('P005');
question('P010');
question('P011');
} elseif ($zahl == 4)
{
html('
<div style="width: 320px; max-width: 100%; margin: 1em auto">
  <div><p align="center"><b>Bitte schauen Sie sich die folgende Abbildung des Insekten-Müsliriegels an.</b></p></div>
  <img src="Insektenproteinriegel_Swarmprotein.jpg" style="max-width: 90%"></div>
  <div><p align="center"> <font size="2">Der Insekten-Müsliriegel auf Dattelbasis besteht zu 17% aus gemahlenen Grillen <i><br>(Acheta domesticus)</i> und ausgewählten Getreidesorten, Schalenfrüchten sowie natürlichen Süßungsmitteln.</font> </p>
<p class="sceditor-nlf" align="left"><br /></p>
</div>
</div>
');
question('R006');
question('R001');
question('R002');
question('R003');
question('R004');
question('R010');
question('R005');
question('R011');
question('R009');
question('R012');
}




Dies ist der vollständige Code, den ich dafür verwende. Vielleicht ist das zum Nachvollziehen des Problems auch noch wichtig.
by SoSci Survey (306k points)
Bitte verwenden Sie den HTML-Code wie von mir empfohlen ohne zusätzliche <p>- und <font>-Tags, dafür aber mit allen notwendigen <div>-Tags, also im letzten Beispiel:

html('
<div style="width: 320px; max-width: 100%; margin: 1em auto; text-align: center;">
  <div><b>Bitte schauen Sie sich die folgende Abbildung des Insekten-Müsliriegels an.</b></div>
  <div><img src="Insektenproteinriegel_Swarmprotein.jpg" style="max-height: 50vh"></div>
  <div style="font-size: 85%">Der Insekten-Müsliriegel auf Dattelbasis besteht zu 17% aus gemahlenen Grillen <i>(Acheta domesticus)</i> und ausgewählten Getreidesorten, Schalenfrüchten sowie natürlichen Süßungsmitteln.</div>
</div>
');

Wenn das Bild zu groß ist, müssten Sie bitte festlegen, wie groß es sein soll. Ich habe oben mal eine maximale Höhe von 50% der Bildschirmhöhe (50vh) definiert.
by s126344 (280 points)
Zunächst vielen Dank. Es hat erstmal geklappt.

Das einzige Problem ist jetzt noch, dass die Bildüberschriften und -Unterschriften in der Mitte gebrochen werden, sodass der Satz nicht im Ganzen angezeigt wird, sondern untereinander, obwohl ich das in dem Code so nicht explizit angegeben habe, meine ich.

(Dies ist auch auf der Seite 11 im Pretest-Link, den ich oben geschickt habe bereits zu sehen).
Muss ich dafür noch etwas einstellen?
by SoSci Survey (306k points)
> sodass der Satz nicht im Ganzen angezeigt wird, sondern untereinander

Der von mir empfohlene HTML-Code setzt um Bild und Überschriften eine Box, die nur 320 Pixel breit ist. Wenn Sie für den Text die komplette Breite nutzen möchten, entfernen Sie bitte das "width: 320px"

Um zu sehen, was da passiert, können Sie auch einfach noch einen Rahmen ergänzen, also ... style="width: 320px; max-width: 100%; border: 1px solid red; ...
by s126344 (280 points)
Vielen lieben Dank!

Nun habe ich noch eine letzte Frage. Die Abstände der Bildüber- und Unterschriften zum Bild sind nun leider immer noch zu groß. Ich habe versucht, bei margin: 0em einzugeben, aber das hat leider nichts geändert.

Die Bildunterschriften müssten nämlich eigentlich direkt unter dem Bild stehen und sind momentan noch viel zu weit darunter angeordnet.
Gäbe es dafür noch eine Lösung?
Vielen Dank schonmal.
by SoSci Survey (306k points)
Wenn Sie mir einen aktuellen Pretest-Link senden, kann ich gerne eine konstruktive Antwort geben.
by s126344 (280 points)
https://www.soscisurvey.de/IATEntomophagie/?act=j28tSFoiTYfo0K25K8woRrNz

Es wäre eig ganz schön, wenn die Bildunterschrift (wie in anderen Publikationen auch bspw.) mögichst direkt unter dem Bild erscheint und dann zwischen den folgenden Fragen (und der Bildunterschrift des Bildes) noch eine wenig Platz ist (,,normaler'' Abstand).
Mir fällt auf, dass es bei den Möglichkeiten $zahl== 2  und $zahl== 3 (beides senkrechte Bilder) genauso formatiert ist, wie ich es haben möchte. Beide Möglichkeiten $zahl ==1 und $zahl == 4 (beides quadratische Bilder) funktioniert dies leider nicht
by SoSci Survey (306k points)
Der Abstand unter dem Bild (in meinem Beispiel Insektenpasta_plumentofoods.png) kommt schlicht und ergreifend daher, dass das Bild selbst unten ein wenig "nichts" hat. Schneiden Sie das Bild bitte in einer Software wie IrfanView, GIMP oder Photoshop zu, laden Sie die zugeschnittene Grafik hoch und drücken Sie auf der Fragebogen-Seite dann noc F5 (Seite neu laden) damit der Browser sich auch die aktuelle Version vom Server holt anstatt die alte Version aus dem Cache zu zeigen.
by s126344 (280 points)
Daran wird es wohl bei den quadratischen Bildern gelegen haben.Es hat un alles hervorragend geklappt.

Vielen lieben Dank für Ihre konstruktive und schnelle Hilfe!

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...