WinFuture-Forum.de: Seitenaufruf über Include - Wie Neues Fesnter öffnen? - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 2 Seiten +
  • 1
  • 2

Seitenaufruf über Include - Wie Neues Fesnter öffnen?


#1 Mitglied ist offline   Bib 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.091
  • Beigetreten: 06. Mai 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bayern

  geschrieben 06. November 2006 - 11:46

Hi,
momentan binde ich meine php-Seiten alle mit include an bestimmte positionen meiner Homepage ein.

Wie kann ich es aber machen, daß die Seite nicht eingebunden, sondern in einer neuen Seite geöffnet wird?

In meiner index.php steht:
<?php
	switch($_GET['id'])
{
case 101: include("aufzurufende_seite.php"); break;
   default: include("home.php");
}
  ?>


Aufgerufen wird die Seite durch:
<p><a href="index.php?id=101">Meine Seite</a></p>

Dieser Beitrag wurde von Bib bearbeitet: 06. November 2006 - 11:48

0

Anzeige



#2 Mitglied ist offline   rednoseday 

  • Gruppe: Mitglieder
  • Beiträge: 4
  • Beigetreten: 18. August 06
  • Reputation: 0

geschrieben 06. November 2006 - 12:19

Wie wäre es mit
<p><a href="index.php?id=101" target="_blank">Meine Seite</a></p>


Das Ganze könnte man auch mit CSS umsetzen (also das target=_blank)
0

#3 Mitglied ist offline   Bib 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.091
  • Beigetreten: 06. Mai 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bayern

geschrieben 06. November 2006 - 13:46

Werde ich mal ausprobieren. Das wäre aber nur ein Workaround, um mein eigentliches Problem zu umgehen:
Nämlich folgendes:

Ich hab da nun ein Formular erstellt, das die Eingaben an ein CGI-Script weitergibt (welches mir dann eine email schickt). Dieses CGI-Script macht eine Rückgabe, also es schreibt dann "Vielen Dank für die Bestellung".

Wie kann ich das denn nun bewerkstelligen, daß diese Rückgabe ebenfalls in meinem Div-Container dargestellt wird, in welchem vorher schon das Formular dargestellt wurde? Das Formluar wurde wie im ersten Post beschrieben mit include aufgerufen.

Die rückgabe des Formulars wird immer im kompletten Fenster geöffnet, meine Navigationsleiste und Überschrift sind dann logischerweise weg. Ich muss dann erst immer umständlich auf den Zurück-Pfeil des Browsers klicken.

Hier meine Seite: http://www.mayr-akti...ndex.php?id=101

Wenn man auf senden geht (klappt auch ohne Eingaben - zu Testzwecken) dann öffnet sich die darauffolgende Seite im ganzen Fenster und nicht nur im rechten Teil wie das Formular.

Dieser Beitrag wurde von Bib bearbeitet: 06. November 2006 - 13:47

0

#4 Mitglied ist offline   rednoseday 

  • Gruppe: Mitglieder
  • Beiträge: 4
  • Beigetreten: 18. August 06
  • Reputation: 0

geschrieben 06. November 2006 - 14:17

Ok ich glaub ich habe verstanden was du meinst.

Also ich würde es so angehen:

index.php:

switch ($_GET['id']){
case 101:
   include 'formular.php';
   break;
default:
   include 'main.php';
}

formular.php:

if ($_POST['abgeschickt']=='gesendet'){
if (mail() -> http://www.php.net/manual/de/ref.mail.php ){
   echo "<h2>Ihre Nachricht wurde erfolgreich versendet</h2>";
   }
else echo "<h2>Ihre Nachricht wurde NICHT versendet</h2>";

}
<!-- Hier der Formularcode mit einem <input type="hidden" name="abgeschickt" value="gesendet" /> Feld-->


mail() würde ich zum versenden benutzen, damit der Medienbruch beseitigt ist :(. Falls fragen dazu, einfach losfragen ;)

Edit: Hab noch ein mail() Beispiel von mir rausgesucht:
$mail_subject="Bestätigung der Änderung";

$mail_txt="Hallo $vorname, //oder halt bei allen $_POST['xxxxxxx']

hier kannst du deine veränderten Daten noch einmal überprüfen:
Beruf: $beruf
Jahrgang: $jahrgang 
Vorname: $vorname
Nachname: $nachname
Geburtsname: $gebname";

$mail_from="From: [email protected]";

mail($emailadresse,$mail_subject,$mail_txt, $mail_from); //Versendet die Mail


Achso, dass Formular muss natürlich auf die Index.php?id=101 gesendet werden!

Dieser Beitrag wurde von rednoseday bearbeitet: 06. November 2006 - 14:27

0

#5 Mitglied ist offline   Bib 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.091
  • Beigetreten: 06. Mai 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bayern

geschrieben 06. November 2006 - 14:30

Hm, ich hab von dem php-Zeugs nicht wirklich eine ahnung. Ich kann include einsetzen aber das wars dann eigentlich schon im großen und ganzen.

Hier mal die Formularseite direkt, dann kann man auch den Quelltext anschauen: http://mayr-aktiv.de/10_1_formmailer_html_test.php

Was müsste ich da konkret ändern?

Bin ich da auf das CGI-Script von dem Anbeiter angewiesen, woher ich das Formular habe oder kann ich da auf meine Server auch ein eigenes drauftun, welches dann ohne die Werbeeinblendungen funktioniert?

Dieser Beitrag wurde von Bib bearbeitet: 07. November 2006 - 12:36

0

#6 Mitglied ist offline   rednoseday 

  • Gruppe: Mitglieder
  • Beiträge: 4
  • Beigetreten: 18. August 06
  • Reputation: 0

geschrieben 06. November 2006 - 14:43

<?php 
$id=$_GET['id']; //liest die id aus der url

/* und jetzt alle Variablen aus dem $_POST auslesen */
$Vorname=$_POST['Vorname'];
$Nachname=$_POST['Nachname'];
$text=$_POST['text'];

...

$mail_subject="Infoanforderung Homepage über ";
$mail_txt="$Vorname, $Nachname hat folgende Nachricht hinterlassen:
$text

und halt hier noch alle anderen Variablen rein ...
";
$mail_from="From: [email protected]";
if ($_POST['abgeschickt']=='gesendet'){
if (mail($emailadresse,$mail_subject,$mail_txt, $mail_from)){
   echo "<h2>Ihre Nachricht wurde erfolgreich versendet</h2>";
   }
else echo "<h2>Ihre Nachricht wurde NICHT versendet</h2>";

}


?>

<form action="index.php?id=<?php echo $id;?>" method="post">

<input type=hidden name="abgeschickt" value="gesendet">
<table>
	<tr>
	<td align=right>Anrede:</td>
	<td>
		<select name=Anrede size=1>
			<option>Herr
			<option>Frau
			<option>Firma
		</select>
	</td>
	<tr>
	<td align=right>Ihre Firma:</td>
	<td><input name=Firma size=20></td>
	<tr>
	<td align=right>Ihr Vorname / Ihr Name:</td>
	<td>
		<input name=Nachname size=20>
		<input name=Vorname size=12>
	</td>
	<tr>
	<td align=right>Ihre Strasse:</td>
	<td><input name=Strasse size=20></td>
	<tr>
	<td align=right>PLZ / Ort:</td>
	<td><input name="Plz" size=5> <input name="Ort" size=18></td>
	<tr>
	<td align=right>Ihr Land:</td>
	<td>
		<select name=Land size=1>
			<OPTION>Deutschland</OPTION>
			<OPTION>Österreich</OPTION>
			<OPTION>Schweiz</OPTION>
		</select>
	</td>
	<tr>
	<td align=right>Telefon-Nummer:</td>
	<td><input name=Telefon-Nr. size=20></td>
	<tr>
	<td align=right>eMail:</td>
	<td><input name=absender size=25></td>
	<br>
	<tr>
	<td valign=top align=right>Produkt:</td>
	<td>
		<input type=radio name=betreff checked
			value="AIC DHH Oberwittelsbach">DHH in AIC-Oberwittlesbach<br>
		<input type=radio name=betreff 
			value="Radersdorf EFH">EFH in Kühbach-Radersdorf<br>
		<input type=radio name=betreff 
			value="Kühbach DHH">DHH in Kühbach, Paarer Str.<br>
		<input type=radio name=betreff 
			value="Kühbach EFH">EFH in Kühbach, Paarer Str.<br>
		<input type=radio name=betreff 
			value="DAH EFH">EFH in DAH-Petershausen<br>
		<input type=radio name=betreff 
			value="DAH DHH">DHH in DAH-Petershausen<br>
		<input type=radio name=betreff 
			value="AIC Hallen">Hallen in Aichach<br>
		<input type=radio name=betreff 
			value="sonstiges">sonstiges<br><br>
	</td>
	<tr>
	<td valign=top align=right>Bitte geben Sie hier Ihre Frage ein:</td>
	<td><textarea name=text rows=12 cols=30></textarea></td>
	<tr>
	<td colspan=2><hr width=250></td>
	<tr>
	<td valign=top align=right>Gewünschter Kontakt:</td>
	<td>
		<input type=radio name="Antwort-ueber" checked
			value="eMail">eMail<br>
		<input type=radio name="Antwort-ueber" 
			value="Telefon">Telefon<br>
		<input type=radio name="Antwort-ueber" 
			value="Post">per Post<br>
	</td>
	<tr>
	<td colspan=2 align=center>
		<input type=submit value="Senden">
	</td>
</table>
</form>
<p>

	

<p><center>(Infoanforderung von <a href='http://www.mayr-aktiv.de'>Mayr Aktiv</a>)</center>


So müsste es eigentlich klappen (eigen Tippfehler natürlich nicht ausgeschlossen :()

Dieser Beitrag wurde von rednoseday bearbeitet: 06. November 2006 - 14:44

0

#7 Mitglied ist offline   rednoseday 

  • Gruppe: Mitglieder
  • Beiträge: 4
  • Beigetreten: 18. August 06
  • Reputation: 0

geschrieben 07. November 2006 - 08:06

Zitat

Bin ich da auf das CGI-Script von dem Anbeiter angewiesen, woher ich das Formular habe oder kann ich da auf meine Server auch ein eigenes drauftun, welches dann ohne die Werbeeinblendungen funktioniert?


Das ganze geht dann ganz ohne CGI vom Anbieter. Füge einfach den Quellcode in deine formularxx.php ein und danach sollte es eigentlich klappen.
0

#8 Mitglied ist offline   Bib 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.091
  • Beigetreten: 06. Mai 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bayern

geschrieben 07. November 2006 - 09:48

Ok, danke, hat nach ein bischen Anpassungsarbeiten jetzt ganz gut geklappt. Kann man das Skript auch so umbauen, daß die Meldung "Versand erfolgreich" oder "nicht erfolgreich" auf einer extra Seite ausgegeben wird und nicht über dem Formular? Würde dann mehr ins Auge stechen.

Auch wäre es schön, wenn man die genaue Fehlermeldung ausgeben könnte, z.B. Name fehlt...

Und wie kann ich es anstellen, daß die Angaben auf plausibilität überprüft werden? Also ob es sich tatsächlich um eine email-Adresse handelt, die PLZ wirklich 5-stellig ist usw?
0

#9 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.947
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 07. November 2006 - 10:05

Zitat

Also ob es sich tatsächlich um eine email-Adresse handelt, die PLZ wirklich 5-stellig ist usw?

Mit regex.
PLZ müsste so gehen:
preg_match ("\d{5}", $plz);

und Email so:
preg_match("^[a-zA-Z]([.]?([[:alnum:]_-]+)*)?@([[:alnum:]\-_]+\.)+[a-zA-Z]{2,4}$", $email);

0

#10 Mitglied ist offline   Graumagier 

  • Gruppe: aktive Mitglieder
  • Beiträge: 8.811
  • Beigetreten: 01. März 04
  • Reputation: 1
  • Geschlecht:Männlich
  • Wohnort:Graz, Österreich

geschrieben 07. November 2006 - 11:05

Witi sagte:

preg_match ("\d{5}", $plz);

preg_match ("^\d{5}$", $plz); wäre IMO besser.
"If you make something idiot proof, someone will invent a better idiot." - Marvin

For Emails always use OpenPGP. My KeyID: 0xA1E011A4
0

#11 Mitglied ist offline   Bib 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.091
  • Beigetreten: 06. Mai 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bayern

geschrieben 07. November 2006 - 11:52

Aha, gut, und wo muß das denn nun auf meiner Seite hin? Da wo die Variablen definiert werden? Oder da wo die if-Abfrage steht, ob die Nachricht gesendet wurde oder nicht?
0

#12 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.947
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 07. November 2006 - 12:57

Die Eingaben, die du vom Benutzer - also von den Eingabefeldern - bekommst.
0

#13 Mitglied ist offline   Bib 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.091
  • Beigetreten: 06. Mai 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bayern

geschrieben 07. November 2006 - 13:11

Also meinem obigen Beispiel nach dann hier:

<td align=right>Ihre Strasse:</td>
<td><input name=Strasse size=20></td>
<tr>
<td align=right>PLZ / Ort:</td>
<td><input name="Plz" size=5> <?php preg_match ("\d{5}", $plz); ?> <input usw...
<tr>
<td align=right>Ihr Land:</td>
<td>


Hier die ganze Seite nochmal http://mayr-aktiv.de...mailer_html.php

Dieser Beitrag wurde von Bib bearbeitet: 07. November 2006 - 13:17

0

#14 Mitglied ist offline   Graumagier 

  • Gruppe: aktive Mitglieder
  • Beiträge: 8.811
  • Beigetreten: 01. März 04
  • Reputation: 1
  • Geschlecht:Männlich
  • Wohnort:Graz, Österreich

geschrieben 07. November 2006 - 13:25

Was? Du schreibst die Formulardaten in eine Variable und setzt dann eine Bedingung, in etwas:

$plz = $_POST["Plz"];

if(!preg_match("^\d{5}$", $plz)) {

  exit("Fehler!");

}

Dieser Beitrag wurde von Graumagier bearbeitet: 07. November 2006 - 13:26

"If you make something idiot proof, someone will invent a better idiot." - Marvin

For Emails always use OpenPGP. My KeyID: 0xA1E011A4
0

#15 Mitglied ist offline   Bib 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.091
  • Beigetreten: 06. Mai 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bayern

geschrieben 07. November 2006 - 14:24

Ich habe wie gesagt von php keine Ahnung. Ich kann Seiten mit include einbinden und das wars schon.

Zuerst hatte ich ein HTML-Formular mit CGI-Script. Da war aber Werbung drin, also hab ich es mit (sehr viel) Hilfe dieses Forums nun so wie es jetzt ist, als HTML/PHP-Formular.

Allerdings war die Syntax-Prüfung zuvor auch in diesem CGI-Script mit dabei.
Da es jetzt alles allein mit php funktioniert, möchte ich eben diese Prüfung noch mit einbinden.

Also wenn ich das so mit der if-Abfrage mache, dann kommt auf dem Bildschirm die Fehlermeldung "Fehler!" oder wie? Das wäre ja spitze, dann könnte ich bei jedem Feld eine eigene Fehlermeldung ausgeben lassen, je nachdem, was gerade passend ist.


Habs gerade mal testweise eingebaut: Ich kann jetzt garnichts mehr eingeben. Es erscheint sofort "Fehler!" und sonst ist der Bildschirm leer. Die Prüfung soll erst nach Betätigung des "senden"-Knopfes erfolgen, daran wird der Fehler wohl liegen.

Dieser Beitrag wurde von Bib bearbeitet: 07. November 2006 - 14:32

0

Thema verteilen:


  • 2 Seiten +
  • 1
  • 2

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0