Wie kann ich folgendes umsetzten?

Guten Abend,

hmm ich weiß ich habe mich heute hier erst angemeldet aber dennoch habe ich gleich mal eine Frage denn ich komme echt nicht mehr weiter.

Ich habe vor ein Gästebuch zu erstellen das ist auch alles kein Problem aber nun möchte ich das so machen, dass wenn ich auf den Link

[eintragen]

Klicke dass dann ein PopUp auf geht dass da dann die Eingabemaske kommt und dann wenn ich dann auf Abschicken klicke, dass dann das Fenster zu geht, die andere Seite aktualisiert wird dann steht da eben der Eintrag drin.

Ich hoffe ich habe das jetzt so erklärt, dass das auch jeder verstanden hat oder? Hoffentlich kann mir auch jemand helfen?

Ja wenn jetzt einer sagt das ist doppelt drin, dann kann ich nur JA sagen aber in PHP war das falsch: Hier mal der andere Link: http://www.tutorials.de/tutorials201009.html

das mit PHP habe ich schon nun gehts einfach noch um folgendes und zwar. Wenn ich auf Eintragen klicke, dann soll er die Daten in die DB eintragen das geht auch aber das Fenster soll dann auch noch gleich geschlossen werde und die buch.php Seite soll dann auch gleich noch Aktualiesiert werden. Ich hoffe ihr habt verstanden was ich meine oder?

Gruß süße_maus_16_koeln
 
Hallo,

also wenn ich dich richtig verstanden habe, dann bist du schon mit Hilfe der PHPler hier im Forum soweit gekommen, dass die Daten beim Klick auf [eintragen] richtig in der DB stehen, und dass wenn du die Hauptseite von Hand neu lädst der richtige Gästebucheintrag da steht?

Ich weiß jetzt nicht ob das eintragen bei dir ein Button oder ein Link ist und ob da schon ein onclick-Event drin gesetzt ist. Im prinzip must nur im onlick folgende zwei Befehle in der Reihenfolge aufrufen:
opener.location.reload()
und
window.close()
Wobei es bei neuern Browsern mit window.close() Probleme geben kann, weil die Sicherheitseinstellungen das manchmal verbieten oder ein "Wollen sie wirklich?" kommt. Außerdem würde ich beide Befehle mit setTimeout() ein wenig Zeitverzögern.

Hier mal ein Beispiel
HTML:
<input type="button" value="Eintragen!" onClick="setTimeout('eval(\'opener.location.reload();window.close()\')',2000)" />
 
Zuletzt bearbeitet:
Hallo,

danke für deine Antwort,

wo muss das von dir hin was du mir gerade geschrieben hast? Hier mal das Forumlar mit dem PHP Code aber der Code und alles geht schon:

PHP:
<?php
include "../config.php";
include "../functions.php";
if(!empty($_POST))
{
        $sql = "INSERT INTO gastebuch
                (
                    name,
                    email,
                    url,
                    betreff,
                    text,
                    IP,
                    betriebsystem,
                    woher_kommt_user,
                    datum
                )
                VALUES
                (
                    '" . addslashes($_POST["name"]) . "',
                    '" . addslashes($_POST["email"]) . "',
                    '" . addslashes($_POST["url"]) . "',
                    '" . addslashes($_POST["betreff"]) . "',
                    '" . addslashes($_POST["text"]) . "',
                    '" . $_SERVER["REMOTE_ADDR"]. "',
                    '" . $_SERVER["HTTP_USER_AGENT"]. "',
                    '" . $_SERVER['HTTP_REFERER']. "',
                    NOW()

                )
                ";
        mysql_query($sql) OR die(mysql_error());
        
        header("Location: ");
exit;
}
?>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Unbenanntes Dokument</title>
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
  } if (errors) alert('The following error(s) occurred:\n'+errors);
  document.MM_returnValue = (errors == '');
}
//-->
</script>
</head>

<body>
<table width="95%"  border="0" align="center">
  <tr>
    <td height="124"><form name="form1" method="post" action="eintragen_gaestebuch.php">
        <table width="100%"  border="0">
          <tr>
            <td width="22%" height="28">Name:</td>
            <td width="78%"><input name="name" type="text" id="name" onBlur="MM_validateForm('name','','R');return document.MM_returnValue" size="40"></td>
          </tr>
          <tr>
            <td height="27">WebSeite:</td>
            <td><input name="url" type="text" id="url" onBlur="MM_validateForm('url','','R');return document.MM_returnValue" size="40"></td>
          </tr>
          <tr>
            <td height="29">eMail:</td>
            <td><input name="email" type="text" id="email" onBlur="MM_validateForm('email','','NisEmail');return document.MM_returnValue" size="40"></td>
          </tr>
          <tr>
            <td height="26">Betreff:</td>
            <td><input name="betreff" type="text" id="betreff" onBlur="MM_validateForm('email','','NisEmail');return document.MM_returnValue" size="40"></td>
          </tr>
          <tr>
            <td height="38">Nachricht:</td>
            <td><textarea name="text" cols="40" rows="4" id="text" onChange="MM_validateForm('text','','R');return document.MM_returnValue"></textarea></td>
          </tr>
          <tr>
            <td height="38">&nbsp;</td>
            <td><input type="submit" name="Submit" value="&gt;&gt; eintragen"></td>
          </tr>
        </table>
    </form></td>
  </tr>
</table>
</body>
</html>
 
Kein Problem, du bist schon auf der Zielgeraden:

Ersetze einfach den Eintragen Button also das
HTML:
<input type="submit" name="Submit" value="&gt;&gt; eintragen" >
durch das
HTML:
<input type="submit" name="Submit" value="&gt;&gt; eintragen" onclick="setTimeout('eval(\'opener.location.reload();window.close()\')',2000)">
und es sollte gehen. Kannst auch ein bisschen mit der Zahl (den 2000 dadrin) rumspielen und schauen, bei welchem Wert, die Datenbank noch Zeit zum aktualisieren hat (ein bisschen höher gehen, wenn du den neuen Eintrag nicht siehst, ein wenig kleiner, wenn du ihn schon siehst).

Edit:
Sorry wir haben gerade aneinander vorbei geredet, weil ich deinen letzten Post nicht mehr gesehen hab und der jetzt Antwort auf den vorletzten war. Wie gesagt spiel ein bisschen an der Zahl herum und es sollte gehen.
 
Zuletzt bearbeitet:
Hmm ich weiß nicht was los ist, aber ein mal geht es dann wird das Fenster geschlossen aber wenn ich das dann wieder laufen lassen tu dann kommt in dem PopUp wenn ich auf Eintragen geklickt haben die Seite kann nicht angezeit werden und eintragen in die DB tut es auch nichts :-(
 
Sehr seltsam, da bin ich überfragt. Aber wenigstens funktioniert es schon ab und zu mal :suspekt:

Vielleicht so:
HTML:
 <input type="submit" name="Submit" value="&gt;&gt; eintragen" onclick="setTimeout('eval(\'opener.location.reload();window.close()\')',2000);return true">
Kann ich mir aber eigentlich nicht vorstellen.

Welchen Browser benutzt du und auf was für einem Server liegt die Seite?
 
Zuletzt bearbeitet:
Hallo und guten Morgen,

hmm jetzt wird die Seite nach dem Eintragen auch geschlossen und die andere Seite wird dann aktualiesiert aber es wird nichts in die Datenbank eingetragen :-( Hmm an was könnte das denn liegen?

Ach ja ich verwende den I-Explorer von Microsoft
 
Ich hab keine Ahnung, wird wohl an der Bugschleuder liegen :offtopic:

Du kannst mal onclick durch onsubmit austauchen und schaun ob es dann geht (bitte wieder beide Varianten von mir ausprobieren (die mit return true am Ende und die ohne).

Ansonsten versuch's auch mal mit
HTML:
 <input type="button" name="Submit" value="&gt;&gt; eintragen" onclick="document.form1.submit();setTimeout('eval(\'opener.location.reload();window.close()\')',2000)">
oder
HTML:
 <input type="button" name="Submit" value="&gt;&gt; eintragen" onclick="this.form.submit();setTimeout('eval(\'opener.location.reload();window.close()\')',2000)">
oder auch mal alles ohne das Timeout.

Beim Internet Exploiter muss man eigentlich immer rumprobieren. Hab's mal eben in Firefox getestet und da funktionieren so ziemlich alle Varianten.

Werd jetzt mal schlafen gehen, heute ist auch noch ein Tag.
Gute nacht dir!

P.S.
Juhu, mein 300. Post!
 
Zuletzt bearbeitet:
Eine Moeglichkeit waere es den JavaScript-Code nach dem Eintrag in die DB auszugeben, sodass der Browser dass erst danach macht.

Beispiel:
PHP:
if ($insert)
 {
  //Eintrag in die Datenbank
  printf('<script language="JavaScript"');
  printf('opener.location.reload();');
  printf('window.close();');
  printf('</script>');
 }
value="&gt;&gt; eintragen" onclick="document.form1.submit();setTimeout('eval(\'opener.location.reload();window.close()\')',2000)">
oder
 

Neue Beiträge

Zurück