[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Modul per PHP Schleife aufbauen? - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
TiCar
Beiträge: 250
Registriert: 15. Jan 2006, 10:37

Modul per PHP Schleife aufbauen?

7. Aug 2007, 00:25

Hi,

geht so eine Verwendung in einem Modul irgendwie?

Code: Alles auswählen

<?
	echo "<table>";
	for ($i = 1; $i <= 10; $i++)
	{
		echo "<tr><td>Bild $i</td><td>REX_MEDIA_BUTTON[$i]</td></tr>";
	}
	echo "</table>";
?>
Bei mir kommt dann nur so eine Ausgabe im Backend raus:
Bild 1 REX_MEDIA_BUTTON[1]
Bild 2 REX_MEDIA_BUTTON[2]
Bild 3 REX_MEDIA_BUTTON[3]
Bild 4 REX_MEDIA_BUTTON[4]
Bild 5 REX_MEDIA_BUTTON[5]
Bild 6 REX_MEDIA_BUTTON[6]
Bild 7 REX_MEDIA_BUTTON[7]
Bild 8 REX_MEDIA_BUTTON[8]
Bild 9 REX_MEDIA_BUTTON[9]
Bild 10 REX_MEDIA_BUTTON[10]

Sowas klappt auch nicht

Code: Alles auswählen

echo "<tr><td>Bild $i</td><td>". $REX_MEDIA_BUTTON[$i] ."</td></tr>";

Soweit ich weiß werden die REX_... ja per Parser ersetzt. In dem Fall findet der Parser kein Treffer, oder? Gäbe es eine andere Möglichkeit sowas einfach per Schleife sich zu generieren?
Gruß,
Lars

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

7. Aug 2007, 06:56

Hej,

probier das einmal.

Code: Alles auswählen

$bttns = array('REX_MEDIA_BUTTON[1]', 'REX_MEDIA_BUTTON[2]', 'REX_MEDIA_BUTTON[3]');

$i = 0;
foreach ($bttns as $bttn) {
  $i++;
  echo '<tr><td>Bild $i</td><td>'. $bttn.'</td></tr>'; 
}
vg Thomas

TiCar
Beiträge: 250
Registriert: 15. Jan 2006, 10:37

7. Aug 2007, 09:35

Jup,

geht mit kleinen Modifikationen ;)

Code: Alles auswählen

<?

$bttns = array("REX_MEDIA_BUTTON[1]", "REX_MEDIA_BUTTON[2]", "REX_MEDIA_BUTTON[3]", "REX_MEDIA_BUTTON[4]", "REX_MEDIA_BUTTON[5]", "REX_MEDIA_BUTTON[6]", "REX_MEDIA_BUTTON[7]", "REX_MEDIA_BUTTON[8]", "REX_MEDIA_BUTTON[9]", "REX_MEDIA_BUTTON[10]");

$i = 0;
foreach ($bttns as $bttn) {
  $i++;
  echo "<tr><td>Bild $i</td><td>". $bttn."</td></tr>";
}

?>
Danke
Gruß,
Lars

Benutzeravatar
bigbass
Beiträge: 49
Registriert: 3. Apr 2007, 14:55
Wohnort: Hamburg

8. Aug 2007, 03:08

Hi Thomas,

ok, das scheint ja zu funktionieren, aber 'schlank' ist das auch nicht wirklich. (Erst das Array aufbauen...) (Na ja, das kann man zur Not kopieren... aber...)

Ist das die einzige Lösung?

Bassig,
Benjamin
P.S.: Fast die gleiche Frage hatte ich in http://forum.redaxo.de/ftopic6326.html gestellt. Insofern jetzt hier: Ah! Kool. So geht es ,-)

Benutzeravatar
Thomas.Blum
Entwickler
Beiträge: 5063
Registriert: 24. Aug 2004, 22:11
Wohnort: Dresden
Kontaktdaten: Website

8. Aug 2007, 06:55

Hej,
bigbass hat geschrieben:ok, das scheint ja zu funktionieren, aber 'schlank' ist das auch nicht wirklich. (Erst das Array aufbauen...)
Ich denke, dass dies das schlankeste ist, was du bekommen kannst. Da es auch nur 10 Felder sind, ist es auch schnelll aufgebaut.

vg Thomas

Benutzeravatar
n.ruediger
Beiträge: 405
Registriert: 21. Mär 2007, 12:25
Wohnort: Frankfurt (Oder)
Kontaktdaten: ICQ Website Yahoo Messenger

9. Aug 2007, 10:57

Hallo,

ich habe mich mal mit dem Quelltext auseinander gesetzt. Das Problem ist einfach, dass die Ersetzung der REX_-Variblen vor dem ausführen des PHP's geschieht. Daher wird in der Funktion nach REX_LINK[1] gesucht, allerdings nicht gefunden, da das vollständige PHP noch drin steht. Also wird wirklich nichts anderes übrig beilen, als die Variblen wirklich voher mit Zahlen auszuschreiben, so, dass diese erstetzt werden können.

Liebe Grüße,
Nicole

minime
Beiträge: 46
Registriert: 8. Nov 2007, 15:11

5. Feb 2008, 11:38

Hallo zusammen,

genau die Lösung habe ich gesucht :D

Code: Alles auswählen

<?

$bttns = array("REX_MEDIA_BUTTON[1]", "REX_MEDIA_BUTTON[2]", "REX_MEDIA_BUTTON[3]", "REX_MEDIA_BUTTON[4]", "REX_MEDIA_BUTTON[5]", "REX_MEDIA_BUTTON[6]", "REX_MEDIA_BUTTON[7]", "REX_MEDIA_BUTTON[8]", "REX_MEDIA_BUTTON[9]", "REX_MEDIA_BUTTON[10]");

$i = 0;
foreach ($bttns as $bttn) {
  $i++;
  echo "<tr><td>Bild $i</td><td>". $bttn."</td></tr>";
}

?>
Aber wenn ich die in mein Modul einbaue bekomme ich im Backend folgende Fehlermeldung

Code: Alles auswählen

Parse error: parse error, unexpected T_STRING, expecting ')' in C: ...\redaxo4_0_1\redaxo\include\classes\class.rex_article.inc.php(581) : eval()'d code on line 21
Der Fehler taucht auf, sobald ich REX_MEDIA_BUTTON[1] (oder 2,3,4,...) ins array schreiben will. Ich kann ansonsten alles mögliche ins array schreiben, nur das nicht.

Kann mir jemand weiterhelfen?

Danke, minime

minime
Beiträge: 46
Registriert: 8. Nov 2007, 15:11

andrer Versuch

5. Feb 2008, 16:00

Hallo nochmal,

ich habe das ganze jetzt nach diese Beschreibung von kills versucht
kills hat geschrieben:Hi Holger,

mache folgendes..

- Gehe in ein Modul und lege dort einen REX_MEDIA_BUTTON[1] an.
- Nun schaust du welchen HTML-Source REDAXO generiert.
- Kopiere diesen und ersetze im Modul REX_MEDIA_BUTTON[1] durch ihn.
- Teste ob der Button nun noch genauso funktioniert, wie zuvor
- Nun mache eine for Schleife um den Code und ersetze überall wo eine 1 steht, die Zahl durch die Zählervariable der For-Schleife

Dies ist nur ein Workarround und kann beim Update auf r33 wieder zu Problemen führen!

Gruß,
Markus
Das funktioniert leider auch nicht ganz. Ich bekomme jetzt zwar keine Fehlermeldung, aber wenn ich ein Bild nun im Mediapool ausgesucht habe wird es nicht gespeichert. Es ist dann einfach weg.

Weiss da jemand Rat?

Viele Grüße, minime

minime
Beiträge: 46
Registriert: 8. Nov 2007, 15:11

aaaalso

5. Feb 2008, 16:43

Jetzt hab ich ein paar kleine Änderungen gemacht und es klappt :D

Falls jemand mit dem selben Problem kämpft, hiermit funktioniert's:

Code: Alles auswählen

$bd = array("0","REX_FILE[1]","REX_FILE[2]","REX_FILE[3]","REX_FILE[4]","REX_FILE[5]","REX_FILE[6]","REX_FILE[7]","REX_FILE[8]","REX_FILE[9]","REX_FILE[10]"); 
  for ($i=1; $i<=$c; $i++){ 
    echo '<input type="hidden" name="REX_MEDIA_DELETE_'.$i.'" value="0" id="REX_MEDIA_DELETE_'.$i.'" />
          <input type="text" size="30" name="MEDIA['.$i.']" value="'.$bd[$i].'" id="REX_MEDIA_'.$i.'" readonly="readonly" />';
    echo '<a href="#" onclick="openREXMedia('.$i.',';?>'');<?php 
    echo 'return false;" tabindex="27"><img src="pics/file_open.gif" width="16" height="16" title="Open Mediapool" alt="Open Mediapool" /></a>';
    echo '<a href="#" onclick="deleteREXMedia('.$i.');return false;" tabindex="28">
            <img src="pics/file_del.gif" width="16" height="16" title="Remove Selection" alt="Remove Selection" />
          </a>
          <a href="addREXMedia('.$i.');return false;" tabindex="29">
            <img src="pics/file_add.gif" width="16" height="16" title="Add New Media" alt="Add New Media" />
          </a><br><br>';
  } 

Zurück zu „Allgemeines [R3]“