Avatar billede nyst Nybegynder
21. februar 2005 - 11:27 Der er 25 kommentarer og
1 løsning

form med svar på samme side uden databasetekst og form eller

Hi there,

jeg har en form som ser nogenlunde sådan ud:

http://www.eksperten.dk/spm/557801

der er rettet lidt i den, men det betyder ikke noget for mit spørgsmål.

Det er dette udsagn det drejer sig om:

            mail($email, "Kopi af information", $message,
                "From: post@jarny.dk\r\n" .
                "Reply-To: noreply@jarny.dk\r\n");
        }
        mail("ps@jarny.dk", "Information", $message,
            "From: post@jarny.dk\r\n" .
            "Reply-To: post@jarny.dk\r\n");
        echo "<br><br><span style='font-weight: bold'>Tak!</span><br><br>Din information er afsendt!<br><br>";

selve 'echo' vil jeg gerne have skrevet ud - uden den henter tekst fra database som er over selve formen. Nu henter den databasen og skriver bagefter 'echoen' - kan dette lade sig gøre.

Ellers - kan man sende 'svarteksten' til anden side - her forstiller jeg mig jeg har en svar.php som så kan bruges til at sende svar fra diverse formularsider (tekst ikke ens) - hvis man ikke kan det så...

den sidste løsning er selvfølgelig en svar.php svar2.php osv for hver form, men her kan jeg ikke få løst problemet med header, så er der en anden mulighed hvis de andre ikke kan lade sig gøre???

Måske lidt kringlet beskrevet men håber på der er et geni der kan tyde mit spørgsmål.

:-)
Avatar billede coderdk Praktikant
21. februar 2005 - 15:39 #1
Jeg er desværre ikke helt med på hvad du vil... Vil du have samme fil til at skrive forskellige svartekster ud?
Avatar billede avminarm Juniormester
21. februar 2005 - 15:44 #2
du kan før du henter data -  tjekke om formen er sendt f.eks ved at sætte en var eller ved at have et hidden felt i din form somdu tjekker er sendt
Avatar billede nyst Nybegynder
21. februar 2005 - 16:18 #3
hej coderdk

det jeg helst vil er at

echo "<br><br><span style='font-weight: bold'>Tak!</span><br><br>Din information er afsendt!<br><br>";

udskrives som nu, men IKKE henter tekst fra database som hentes og indsættes før selve formen.

Altså:

efter send

igen tekst (db)

ingen form

svartekst fra form

---------------

ønske:

efter send

kun svartekst

NB. databasen har intet med formen at gøre den står bare længere oppe på siden
Avatar billede coderdk Praktikant
21. februar 2005 - 16:41 #4
Jeg er ikke sikker på hvad du mener, men prøv at ændre:

    if ( $_SERVER['REQUEST_METHOD'] != 'POST' || $fejl != '' )

til:

    if ( $_SERVER['REQUEST_METHOD'] == 'GET' || $fejl != '' )
Avatar billede nyst Nybegynder
21. februar 2005 - 16:50 #5
nej det er ikke det du får lige et friskt udpluk at koden

--------------------------------------------------
while($data = mysql_fetch_array($query)) {
    echo "<table border=0 cellpadding=0 cellspacing=0>";
    echo "<tr><td>";
    echo "<h3>$data[afdeling]</h3>";
    echo "<h1>$data[overskrift]</h1>";
    echo "$data[indhold]<br><br>";
    echo "<div>$data[kopi] $data[dag]</div>";
    echo "<br></td></tr></table>";
    }
    mysql_close();
    ?>
<table bgcolor="#DADADA" border="0" cellpadding="0" cellspacing="0" width="430">
<tr>
    <td align="center"><b>Bestilling</b>
<table bgcolor="#E6E6E6" border="0" cellpadding="0" cellspacing="3" width="400">
<tr>
    <td>
<a name="spring" id="spring"></a>
<?php
    if ( $_SERVER['REQUEST_METHOD'] != 'POST' || $fejl != '' )
    {
?>
<form method="post" action="<?php echo $_SERVER['php_self']; ?>#spring">
<?php echo $fejl; ?><br><br>

det er lidt af starten som du kan se og lidt af formen

herunder

mail("ps@jarny.dk", "Bestilling", $message,
            "From: $email\r\n" .
            "Reply-To: $email\r\n");
echo "<p><span style='font-weight: bold'>Tak for din henvendelse.</span></p><p>Vi vil hurtigst muligt behandle den og vende tilbage til dig.</p><p>Hvis du har bedt om en kopi er der samtidig hermed fremsendt en e-mail til dig.</p><p>Med venlig hilsen</p>";               
}
?>
----------------------------------------------------------------
Det er denne 'echo' som pænt springer ned under databasen og det er jo godt nok men den skulle bare undlade at indlæse db igen.

hvis man kan

:-)
Avatar billede coderdk Praktikant
21. februar 2005 - 16:55 #6
Omstrukturér lidt, så dit databaseudtræk først laves efter:

<?php
    if ( $_SERVER['REQUEST_METHOD'] != 'POST' || $fejl != '' )
    {
?>
Avatar billede nyst Nybegynder
21. februar 2005 - 17:08 #7
vi nærmer os - den viser nu ikke mere db igen og ved fejl springer den stadig pænt

MEN

når den sender og svarteksten kommer så river den designet i stykker, den viser en højre kolonne helt forkert den kommer efter det meste af designet.

Det må være alt den kode der kommer efter svarteksten det går galt med???
Avatar billede coderdk Praktikant
21. februar 2005 - 17:13 #8
Så er der vel noget galt med den HTML du får spyttet ud ;)
Avatar billede nyst Nybegynder
21. februar 2005 - 17:27 #9
nej den er som på alle andre sider, det var da jeg flyttede

<?php
    if ( $_SERVER['REQUEST_METHOD'] != 'POST' || $fejl != '' )
    {
?>

til

    <td rowspan="2" align="left" valign="top"><br>
    <?php
    if ( $_SERVER['REQUEST_METHOD'] != 'POST' || $fejl != '' )
    {
    ?>
    <?php
    mysql_connect("localhost","");
    mysql_select_db("_db");
    $query = mysql_query("SELECT afdeling, overskrift, indhold, kopi, dag FROM `sider`WHERE indeks=110120");
    while($data = mysql_fetch_array($query)) {
    echo "<table border=0 cellpadding=0 cellspacing=0>";
    echo "<tr><td>";
    echo "<h3>$data[afdeling]</h3>";
    echo "<h1>$data[overskrift]</h1>";
    echo "$data[indhold]<br><br>";
    echo "<div class=hamlet3>$data[kopi] $data[dag]</div>";
    echo "<br></td></tr></table>";
    }
    mysql_close();
    ?>
<table bgcolor="#DADADA" border="0" cellpadding="0" cellspacing="0" width="430">
<tr>
    <td align="center"><b>Bestilling</b>
<table bgcolor="#E6E6E6" border="0" cellpadding="0" cellspacing="3" width="400">
<tr>
    <td class="3">
<a name="spring" id="spring"></a>
#flyttet herfra
<form method="post" action="<?php echo $_SERVER['php_self']; ?>#spring">
<?php echo $fejl; ?><br><br>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
    <td align="right" class="3">E-mail: </td>
    <td><input type="text" name="email"

så laver den kage i det - kan det være at den 'lukker' for resten eller???

Det vises godt nok bare efter designsiden og ikke på den rigtigt plads. :-)
Avatar billede coderdk Praktikant
21. februar 2005 - 17:49 #10
Ok, du skal nok ikke flytte:

<?php
    if ( $_SERVER['REQUEST_METHOD'] != 'POST' || $fejl != '' )
    {
    ?>

Men i stedet flytte:

<?php
    mysql_connect("localhost","");
    mysql_select_db("_db");
    $query = mysql_query("SELECT afdeling, overskrift, indhold, kopi, dag FROM `sider`WHERE indeks=110120");
    while($data = mysql_fetch_array($query)) {
    echo "<table border=0 cellpadding=0 cellspacing=0>";
    echo "<tr><td>";
    echo "<h3>$data[afdeling]</h3>";
    echo "<h1>$data[overskrift]</h1>";
    echo "$data[indhold]<br><br>";
    echo "<div class=hamlet3>$data[kopi] $data[dag]</div>";
    echo "<br></td></tr></table>";
    }
    mysql_close();
    ?>

Ned lige før <form>...
Avatar billede nyst Nybegynder
21. februar 2005 - 18:11 #11
det er da lidt umuligt idet disse 2 tabeller giver en ramme om formen som ikke skal være omkring databasen!!!

<table bgcolor="#DADADA" border="0" cellpadding="0" cellspacing="0" width="430">
<tr>
    <td align="center"><b>Bestilling</b>
<table bgcolor="#E6E6E6" border="0" cellpadding="0" cellspacing="3" width="400">
<tr>
Avatar billede nyst Nybegynder
21. februar 2005 - 18:15 #12
kan man så 'sende' echoen til anden side uden at bruge header for det volder også problemer med denne opbygning.

evt sende $svar til svar.php - hvor svar.php så bruges til at vise forskellige $svar fra forskellige forms, således jeg kun har en svar-fil???
Avatar billede coderdk Praktikant
21. februar 2005 - 18:21 #13
ja du kan jo bare bruge header("location: takkeside.php"); eller bruge javascript til at redirecte:

<script type="text/javascript" language="javascript">
  window.location.href = 'takkeside.php';
</script>

:)
Avatar billede nyst Nybegynder
21. februar 2005 - 18:30 #14
så får jeg den sædvanlige:

Warning: Cannot add header information - headers already sent by

mail("ps@jarny.dk", "Bestilling", $message,
            "From: $email\r\n" .
            "Reply-To: $email\r\n");
header("location: ../../element/tak.php");
}

idet denne jo ikke ligger før html'en!!!
Avatar billede coderdk Praktikant
21. februar 2005 - 18:35 #15
Ja, så er du nødt til at bruge ob_start() i toppen, og ob_clean() før din header() - ellers kan du bare bruge javascriptløsningen ;)
Avatar billede nyst Nybegynder
21. februar 2005 - 18:46 #16
*S* ja undskyld jeg smiler men nu er jeg slet ikke med, men ok skal jo hele tiden lære.

Hvor og hvordan skriver jeg ob_start og ob_clean

gider du:-)
Avatar billede nyst Nybegynder
21. februar 2005 - 18:49 #17
<?php
ob_start();
?>

det er vel denne aller øverst i filen, ik
Avatar billede nyst Nybegynder
21. februar 2005 - 19:02 #18
Denne virker skisme

<?php
    ob_start();
?>

i top af filen

og

mail("ps@jarny.dk", "Bestilling", $message,
            "From: $email\r\n" .
            "Reply-To: $email\r\n");           
header("Location: ../element/tak.php");
ob_end_flush();   
}
?>

ob_end_flush();    efter header

det virker men tror du det er korrekt*S*
Avatar billede nyst Nybegynder
21. februar 2005 - 19:08 #19
desværre skal jeg så bruge en takke-fil pr. form, men det går da an*S*

Så takker og du smider et svar - du har en utrolig tålmodighed, det er bare kanon

:-)
Avatar billede coderdk Praktikant
21. februar 2005 - 20:16 #20
mail("ps@jarny.dk", "Bestilling", $message,
            "From: $email\r\n" .
            "Reply-To: $email\r\n");         
ob_clean();
header("Location: ../element/tak.php");
ob_end_flush();
exit;

Det burde også virke - Men hvis det virker ved dig er det jo fint :)
Du kan jo lave:

header("Location: ../element/tak.php?form=1");

og så skifte beskeden ud alt efter hvad $_GET['form'] er :)
Avatar billede nyst Nybegynder
23. februar 2005 - 14:06 #21
Hej coderdk,

denne

mail("ps@jarny.dk", "Bestilling af brochure fra website", $message,
            "From: $email\r\n" .
            "Reply-To: $email\r\n");           
ob_clean();
header("Location: div/tak.php");
ob_end_flush();
exit;
}

giver

Fatal error: Call to undefined function: ob_clean()

men det du skriver om

header("Location: ../element/tak.php?form=1");

og så skifte beskeden ud alt efter hvad $_GET['form'] er :)

gør det at jeg kun behøver en tak-fil???

Hvis så er jeg meget interesseret, men skal jeg så i hovedfilen kalde formen 1

og så i tak-filen lave forskellige svar og hvordan gør jeg lige det???

Det kunne altså være ret sejt hvis det er den funktionen kan, det var det jeg ledte efter i starten.

:-)
Avatar billede coderdk Praktikant
23. februar 2005 - 14:13 #22
Bruger du en gammel php? ob_clean() er skam en funktion: http://dk2.php.net/ob_clean

Ja, du behøver så kun én tak.php, du redirecter bare til tak.php med noget så du ved hvor den kommer fra:


header("Location: ../element/tak.php?form=bestilling");

og i tak.php

<?php

  if ( $_GET['form'] == 'bestilling' )
  {
    echo "Tak for din bestilling!";
  }
  elseif ( $_GET['form'] == 'kontakt' )
  {
    echo "Tak for din mail!";
  }
  else
  {
    echo "Tak for ... et eller andet :)";
  }

?>
Avatar billede nyst Nybegynder
23. februar 2005 - 14:25 #23
hejsa

bruger
PHP Version 4.1.2
Linux (none) 2.4.20-6um #1 SMP Fri Jun 6 10:15:19 EDT 2003 i686 unknown
Jul 15 2003

checker lige det andet

:-)
Avatar billede coderdk Praktikant
23. februar 2005 - 14:26 #24
Ja, den er for gammel, den nyeste er 4.3.10 (Ja, eller 5.0.3) ob_clean() findes først fra php 4.2.0...
Avatar billede nyst Nybegynder
23. februar 2005 - 14:40 #25
Hi,

jeg må have fat i min udbyder...

Men igen 1000 tak og det sidste med samme fil virker lige efter bogen.

Men vi snakkes jo nok ved igen*GG*

:-)
Avatar billede coderdk Praktikant
23. februar 2005 - 14:55 #26
Yes yes :) God idé at snakke med din udbyder, der er MANGE kritiske fejlrettelser fra 4.1.2 til 4.3.10 ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester