• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

x.php?betreff ins iframe übertragen

Kimberly113

Neues Mitglied
Hallo zusammen,

ich habe das Problem, dass ich ein neues Kontaktformular habe, welches ich nun über iframe einbette. Ich habe im altem einen Code gehabt der mir von einer Seite per Link die hinterlegten Daten ins Betreff Feld in das Kontaktformular eingetragen hat. Was muss ich ändern, dass das jetzt auch wieder geht? Ich kenn mich mit php leider nicht aus.

Alter Code:
Seite1.php:
<a href="kontakt.php?betreff=Objekt-Nr.: 123">Text</a>

kontakt.php:
<?php if (isset($_GET['betreff'])) { echo $_GET['betreff'] ;}?>
...
<input class="af-inputtext af-formvalue " type="text" name="element-23" id="element-23" <?php if (isset($_GET['betreff'])) { echo 'value="' . $_GET['betreff'] . '"'; }?> style="display:none"></div>


Hier hab ich schon versucht den Code wieder einzubetten, aber leider klappt das nicht so richtig... wo muss dieser Code (<?php if (isset($_GET['betreff'])) { echo $_GET['betreff'] ;}?> ) hin, dass er funktioniert?

Neu:
Seite1.php:
<a href="kontaktformular/kontakt.php?betreff=Objekt-Nr.: 123">Text</a>

kontakt.php:
<iframe src="kontaktformular/kontakt.php" style="border: none; width:100%; height:1100px;"

kontaktformular/kontakt.php:
<div class="col-sm-8 <?php if ($fehler["betreff"] != "") { echo 'error'; } ?> <?php echo (isset($_POST['betreff']) && ''!=$_POST['betreff'] ? 'not-empty-field ' : ''); ?>">
<label class="control-label" for="border-right8"><i id="subject-icon" class="fa fa-edit"></i></label>
<input <?php if (isset($_GET['betreff'])) { echo 'value="' . $_GET['betreff'] . '"'; }?> <?php if($cfg['HTML5_FEHLERMELDUNGEN']) { ?> required <?php }else{ ?> onchange="checkField(this)" <?php } ?> aria-label="Betreff" type="text" name="betreff" class="field" placeholder="Betreff *" value="<?php echo $_POST['betreff']; ?>" maxlength="<?php echo $zeichenlaenge_betreff; ?>" id="border-right8" onclick="setActive(this);" onfocus="setActive(this);"/>
<?php if ($fehler["betreff"] != "") { echo $fehler["betreff"]; } ?>
</div>


Vielen Dank schon mal!

VG
Kimberly
 
Werbung:
<input class="af-inputtext af-formvalue " type="text" name="element-23" id="element-23" <?php if (isset($_GET['betreff'])) { echo 'value="' . $_GET['betreff'] . '"'; }?> style="display:none"></div>
Da fehlt die Behandlung des Kontextwechsels, du darfst den Wert aus $_GET nicht einfach ins HTML schreiben!
Hier hab ich schon versucht den Code wieder einzubetten, aber leider klappt das nicht so richtig...
Definiere "klappt nicht".
<iframe src="kontaktformular/kontakt.php" style="border: none; width:100%; height:1100px;"
Wie genau soll der Wert in die kontakt.php kommen? So wie ich das verstehe rufst du die Seite die das <iframe> enthält mit ?betreff=… auf (wobei auch hier die Behandlung des Kontextwechsels fehlt, der Wert muss URL-kodiert werden), im Iframe wird dann die Seite aber ohne den Querystring geladen. Und warum überhaupt frames? Lass die weg.
 
Hallo Kimberly und willkommen im Forum!

Zunächst mal Code besser in Codetags posten:
1713035122834.png
das erhöht die Lesbarkeit.

Und auch wenn der letzte Codeblock formatiert ist, ist die Lesbarkeit durch das eingestreute PHP sehr schlecht. Besser zunächst die variablen Bestandteile vorbereiten, den String in Heredoc-Notation definieren und die Variablen einfügen:
Code:
  // Variable Bestandteile des HTML bereit stellen:
  $class = 'col-sm-8';
  if ($fehler["betreff"] != "") $class .= ' error';
  if (isset($_POST['betreff']) && $_POST['betreff'] != '') $class .= ' not-empty-field';
  $val = '';
  if (isset($_GET['betreff'])) $val = $_GET['betreff'];
  $requ = '';
  if($cfg['HTML5_FEHLERMELDUNGEN']) $requ = ' required';

// HTML vorbereiten:
$html = <<<EOHTML
    <div class="$class">
      <label class="control-label" for="border-right8"><i id="subject-icon" class="fa fa-edit"></i></label>
      <input value="$val" $requ onchange="checkField(this)"
        aria-label="Betreff" type="text" name="betreff" class="field" placeholder="Betreff *"
        maxlength="$zeichenlaenge_betreff" id="border-right8"
        onclick="setActive(this);" onfocus="setActive(this);">
    </div>
EOHTML;
echo $html;
Oder alternativ mit printf, auch dann würde das HTML nicht so zerstückelt.

Edit: Was mich irritiert: Betreff mal als $_GET und mal als $_POST?
 
Werbung:
PS: So wie Du die Dateinamen mit relativen Pfaden definierst, liegt dieses kontakt.php mit dem iFrame brach, denn
hiermit
Code:
<a href="kontaktformular/kontakt.php?betreff=Objekt-Nr.: 123">Text</a>
rufst Du das kontakt.php im Verzeichnis "kontaktformular" direkt auf.
 
Zuletzt bearbeitet:
Hallo tk1234, hallo Sempervivum,

danke für eure Antworten!

@tk1234
Ich habe einfach versucht in dem neuem Kontaktformular den Code genauso einzupflegen wie im altem. Dass man den Code nicht einfach ins html schreibt... möglich... hat aber damit geklappt. ;)
Was nicht klappt, ist, dass der Code den ich übertragen möchte nicht übernommen wird.
Code:
<a href="kontakt.php?betreff=Objekt-Nr.: 123">Text</a>
Du vermutest richtig, dass dieser Link die Seite mit dem iframe öffnet, aber den Betreff leider verliert. Kann man das hinbekommen? Du schreibt, ich soll iframe weglassen... was ist die alternative eine vorhandene php Seite in ein vorhandenes Layout iframe ähnlich einzupflegen? Ich möchte möglichst beide Seiten einzeln behalten.

@Sempervivum
Leider macht mir der Code das Gesamtbild des Kontaktformulars kaputt. Ich weiß auch nicht, ob ich den Code vom Hersteller überhaupt so abändern darf. :)
Warum einmal $_GET und einmal $_POST benutzt wurde kann ich nicht sagen, ich kenn mich mit php nicht aus und beides ist nicht von mir geschrieben. Ich versuche nur die Funktion wieder herzustellen.
Die Datei kontakt.php liegt nicht brach, sie ist meine Hauptseite für das Kontaktformular. Sie besteht aus dem Layout der Seite mit dem iframe des Kontaktformulars. Diese wird auch ganz normal genutzt. Es bestehen aber auch Seiten die eine Vorgabe für die Betreffzeile mitbringen sollen. Das soll mit dem Zusatz ?betreff=... geschehen. Nur leider bekomme ich das nicht hin, dass das übertragen wird.

LG
Kimberly
 
Zurück
Oben