Avatar billede frustrator Nybegynder
24. april 2004 - 23:05 Der er 8 kommentarer og
1 løsning

Semi-avanceret PHP formular

Ja, jeg ved det... formularer i PHP har været oppe at vende mange gange, men har ikke kunnet få løst dette problem alligevel.

Jeg skal have lavet en formular, der sender indtastede data til en email via PHP og ikke et mail-program. Formularen skal indeholde data, som brugeren selv indtaster (gerne med plads til udvidelser). Derudover skal den indeholde nogle skjulte data som brugeren IKKE ser, men som vil være at finde i den afsendte mail.

Brugeren skal indtaste data i felterne navn, email, rettelser - alle tre obligatoriske rubrikker. Den afsendte mail skal desuden indeholde rubrikkerne emne og titel. Titel skal tages direkte (som variabel, går jeg ud fra) fra den side, brugeren er inde på. Titlen på siden hentes fra en MySQL-database som $Titel.

Det er endvidere vigtigt, at formularen og PHP-scriptet ligger i hver sit PHP-dokument. PHP-self skal således IKKE bruges.

Ja, det er en større mundfuld, så jeg håber, at min pointgivning er rundhåndet nok :o)Jeg har selv forsøgt op til flere gange, men efterhånden opgivet.

Nogen ekspert-hjerner, der kan knække denne nød?
Avatar billede Syska Mester
24. april 2004 - 23:19 #1
kan ikke se problemet, lav 2 filer, den ene med en form, og den anden der mailer?? Hvad er det som går galt, og hvad har du noget frem til?
Avatar billede frustrator Nybegynder
24. april 2004 - 23:30 #2
Punkt 1: Er ikke en ørn til PHP, og har lidt svært ved at gennesmkue koden.

Punkt 2: Er ikke helt på det klare med, hvordan jeg får etableret de skjulte felter og samtidig får de ønskede funktioner med.

Formularen skal primært bruges til at brugerne kan komme med rettelser/tilføjelser til den side, de pt. ser på eller er blevet sendt videre fra. Altså brugeren ser på Side 1 og følger herfra et link til Side 2. På Side 2 kan han indtaste tilføjelser i en formular, der samtidig indeholder basis-data fra side 1 (altså titlen). Alt dette behandles og sendes via scriptet på Side 3, mens brugeren sendes videre til enten side 1 eller Side 4 (en "tak for det" side).

Med andre ord en større omgang, i hvert fald for mig. Har nok brug for en kickstart eller noget i den stil så jeg ved hvor og hvordan jeg skal tage fat :o)
Avatar billede dennismp Nybegynder
25. april 2004 - 00:23 #3
forslag (pseudokode)

feedback.php?id=idpåtekst
<?php
$id = $_GET['id'];

// Hent data
$sql = "SELECT title FROM article WHERE id = '$id'";
$res = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_row($res);
if( $row === false ) {
    print "kunne ikke finde artiklen";
    exit;
}
?>

Feedback til <?php print $row['title']; ?><br>

<form method="post" action="feedback-save.php">
<input type="hidden" name="id" value="<?php echo $id; ?>">
<input type="text" name="something">
..
</form>

feedback-save.php
<?php

$body = 'something: ' . $_POST['something'];

...

  mail('webmaster@etdomæne.dk'... $body .. );
..
?>
Tak for din henvendelse. Vi ser på den.
Avatar billede frustrator Nybegynder
25. april 2004 - 20:37 #4
Hmm, tjoh... jaaa. Jeg kunne dog godt tænke mig at Side 2 med selve formularen IKKE gjorde brug af en MySQL-forbindelse. De skjulte data, der skal inkluderes, er jo allerede hentet fra databasen på Side 1.

På Side 1 hentes en del data fra databasen, herunder id og titel. Det optimale for mig ville så nok være at få disse data proppet ned i variabler/et array, og dette array kan så sendes til Side 2, hvor de bruges. Men hvordan får jeg sendt et array og indholdet heri fra en side til en anden?
Avatar billede dennismp Nybegynder
25. april 2004 - 20:46 #5
Når du laver form:
<input type="hidden" name="array" value="<?php print serialize($array);?>">

når du modtager formen
<?php
$array = unserialize($_POST['array']);
?>
Avatar billede frustrator Nybegynder
25. april 2004 - 21:20 #6
Okay, jeg indrømmer det... jeg er ingen haj til det her (måske snarere et lille plankton!) ;o) Så hvordan gør jeg helt præcist det her?

På Side 1 har jeg skrevet således:

<form method="post" action="../kontaktos/feedback.php">
<input type="hidden" name="Data[Kategori]" value="Film Info">
<input type="hidden" name="Data[ID]" value="<?php echo $FilmID; ?>">
<input type="hidden" name="Data[Titel]" value="<?php echo $DkTitel; ?>">
<input type="submit" value="Ret/Tilføj Data">

Så langt, så godt... der meldes i hvert fald ikke om nogen fejl. Men hvordan henter jeg så dataene frem og får dem "printet" på side 2 (alias feedback.php)? Det må vel være noget med $_POST, så vidt jeg kan læse mig frem til... eller hvordan?
Avatar billede dennismp Nybegynder
25. april 2004 - 22:58 #7
print $_POST['Data']['Kategori'];

osv
Avatar billede frustrator Nybegynder
26. april 2004 - 08:07 #8
Muchos gracias, señor... så mangler du bare at poste et "svar", så du kan få dine velfortjente point :o)
Avatar billede dennismp Nybegynder
26. april 2004 - 15:37 #9
:)
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