webForumDet fria alternativet

Problem med FORM funktionen / PHP (Nybörjare)

17 svar · 597 visningar · startad av pierre_j

pierre_jMedlem sedan nov. 200218 inlägg
#1

Hejsan. Vill först tacka för en trevlig sida med bra tips och hjälpasamma personer. :birp

Nu är det så att jag är en total nybörjare när det gäller programmering samt PHP. Men vill gärna lära mig det och ser oändliga möjligheter med att kunna det.

OK, så här kommer min ruskigt löjliga fråga för många av Er men man måste ju börja någonstans.

Jag får inte texten att visas på sidan jag vill genom att använda PHP och funktionen FORM (Post , Get osv osv)

Min kod är denna i ena dokumentet:

<form action="konfig.php" method="post">
Kundnummer: <input type="text" name="kundnr" size="5"><br>
<input type="submit" value="Skicka">
</form>

i min konfig.php fil har jag följande kod:

<?php
echo "$kundnr";
?>

När jag då kör mitt test och fyller i tex kundnr = 1234 och sedan trycker Skicka så visas konfig.php filen men jag får inte upp det jag har angett i text rutan på sidan innan.

Vad gör jag för fel ? :stud Om det inte är något fel, kan det då ha något med min konfig i PHP eller Apache servern att göra då den inte vill visa texten ? Jag har PHPbb2 forumet installerat och det fungerar som det skall så jag vet inte riktigt vart jag ska börja leta.

Hoppas någon kan förklara på ett enkelt vis och sedan kanske ge ett exempel.

Jag vill nämligen kunna göra en konfigurator och när personen skickar iväg den så skall de få en sida där det står Tack... osv osv samt visar de alternativ de skrivit in (typ namn, kundnr osv osv) samt lite annat.

MVH
Pierre Johansson.

RacerankanMedlem sedan dec. 19992 751 inlägg
#2

Hej.

Du måste definiera variabeln $kundnr.

Lägg in följande sträng över echo "$kundnr"
$kundnr = $_POST['kundnr'];

pierre_jMedlem sedan nov. 200218 inlägg
#3

Tackar för snabbt svar :)

Då kommer följdfrågan.... i vilket av dokumenten måste den finnas ? I mitt första dokument där jag anger själva FORM funktionen eller i filen som ska visas senare ? i mitt fall konfig.php ?

Tack ännnu en gång.

Rättelse.... förlåt.. glöm min fråga ovan... jag läste inte tillräckligt noga. Självklart är det ju i konfig.php. :r eller ??

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

Har nu testat det ni skrev ovan, men det vill inte fungera... ?
Någon som vet varför ?

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

Efter ännu ett test där jag såg en felstavning så löste det sig. Nu fungerar det.

Tack så mycket.

Fler frågor lär dyka upp vart efter jag jag försöker utveckla mig.

/ Pierre

OlleBoopMedlem sedan feb. 20001 861 inlägg
#4

Det andra, konfig.php.
Och du behöver inte ha $konfig = $_POST['konfig'], det går att köra echo $_POST['konfig'].
SKulle du använt method="get" i formuläret skulle du kommit åt värdet genom $_GET['konfig']

pierre_jMedlem sedan nov. 200218 inlägg
#5

Mail

OK, nästa fråga som kom ganska så snabbt. Hur gör jag nu för att kunna maila iväg den informationen kunden får upp på nästa sida efter att ha klickat på Skicka knappen.

jag vet att det finns en mail funktion i PHP och har lus-läst lite här i forumet men inte fått något direkt begrepp om hur man skall göra för att tex få iväg all info jag har.

Min kod är följande i mina 2 dokument.

<form action="konfig.php" method="post">
Kundnummer: <input type="text" name="kundnr" size="5"><br>
Företag: <input type="text" name="foretag" size="50"><br>
Kontaktperson: <input type="text" name="kontakt" size="50"><br>
Telefonnr: <input type="text" name="telefon" size="20"><br>
E-mail: <input type="text" name="email" size="50"><br><br>
<input type="submit" value="Skicka din beställning!">

</form>

koden i min konfig.php som visas när kunden klickat på Skicka är följande:

<?php
$kundnr = $_POST['kundnr'];
$foretag = $_POST['foretag'];
$kontakt = $_POST['kontakt'];
$telefon = $_POST['telefon'];
$email = $_POST['email'];

echo "$kundnr<br>";
echo "$foretag<br>";
echo "$kontakt<br>";
echo "$telefon<br>";
echo "$email<br>";
?>

Kan jag nu få denna information skickat till kundens e-mail adress som han anger i $email ?

Borde inte vara några större problem bara att jag förstår inte riktigt hur jag ska koppla det för att få det att gå iväg.

MVH
Pierre

Del PeroMedlem sedan feb. 20003 785 inlägg
#6

Använd dig av funktionen mail() .

pierre_jMedlem sedan nov. 200218 inlägg
#7

FPUT

Lite fler frågor igen.....

Gällande fputs

$fil = fopen("konfig.txt","w+") or die ("Kunde inte öppna filen");
fputs($fil, "$kundnr\n");
fputs($fil, "$foretag\n");
fputs($fil, "$kontakt\n");

Måste man ange fputs för varje variabel ?

kan man inte skriva.....

$fil = fopen("konfig.txt","w+") or die ("Kunde inte öppna filen");
fputs($fil, "$kundnr\n", "$foretag\n", "$kontakt\n");

Fick iof inte detta att fungera, men går det inte att ange flera rader som ska skrivas ut med hjälp av ett kommando från fputs ? Eller måste man ange fputs för varje variabel ?

Hoppas någon kan ge svar på detta.

MVH
Pierre Johansson

OlleBoopMedlem sedan feb. 20001 861 inlägg
#8

$konfig = $kundnr . "\n" . $foretag . "\n" . $kontakt . "\n";
fputs($fil,$konfig);

pierre_jMedlem sedan nov. 200218 inlägg
#9

OK, tackar, börjar förstå lite mera nu hur logiken i programmeringen funkar. (Jag sa lite va?) :)

Det betyder alltså att man kan göra variablar av variablar och på så vis förkorta ner sin kod relativt mycket. Smart.

Hmm jag vet att jag verkar tjatig, men jag är så förbannat sugen på att lära mig detta och jag inväntar lite böcker som jag har beställt, men de får jag om ca 1 vecka.

Jag har ännu en fråga gällande session_start osv.

För jag har konfiguerat mitt skript så nu att jag sparar informationen till en text fil, sedan på nästa sidan hämtar scriptet den informationen och skickar sedan iväg den som ett mail. Men jag vill kunna få med mig själva variablarna tex $kundnr, $foretag osv osv till nästa sida, och jag har läst att man skall använda session_start & session_register men lyckas inte få det att fungera.

På så vis vill jag även kunna använda dessa för att ange dem i mail funktionen.

Mina 3 sidor består nu av denna kod.

1.

<form action="konfig.php" method="post">
Kundnummer: <input type="text" name="kundnr" size="5"><br>
Företag: <input type="text" name="foretag" size="50"><br>
Kontaktperson: <input type="text" name="kontakt" size="50"><br>
Telefonnr: <input type="text" name="telefon" size="20"><br>
E-mail: <input type="text" name="email" size="50"><br><br>
<input type="submit" value="Skicka">

2.

<?php
// Anger variabler från tidigare sida
$kundnr = $_POST['kundnr'];
$foretag = $_POST['foretag'];
$kontakt = $_POST['kontakt'];
$telefon = $_POST['telefon'];
$email = $_POST['email'];

/* Öppnar filen konfig.txt och skriver in informationen i den.
Tidigare information raderas genom kommandot "w+"<br>
Om tyttligare informations ska lagras efter en tidigare
så ange "a" istället */

$fil = fopen("konfig.txt","w+") or die ("Kunde inte öppna filen");
fputs($fil, "Kundnr: $kundnr\n");
fputs($fil, "Företag: $foretag\n");
fputs($fil, "Kontaktperson: $kontakt\n");
fputs($fil, "Telefon: $telefon\n");
fputs($fil, "E-mail: $email\n");
fputs($fil, "\n");
fputs($fil, "\n");

// Skriver ut informationen på skärmen

echo "Kundnr: $kundnr<br>";
echo "Företag: $foretag<br>";
echo "Kontaktperson: $kontakt<br>";
echo "Telefon: $telefon<br>";
echo "E-mail: $email<br><br>";
echo "Informationen har sparats i konfig.txt";
?>
<br><br>
<a href="mail.php">Skicka beställning !</a>

3.

<?php
$fil = fopen("konfig.txt", "r") or die ("Kunde inte läsa filen");
$text = fread($fil,filesize("konfig.txt"));
echo "<PRE>$text</PRE><br><br>";
echo "Tack för din beställning, en orderbekräftelse har skickats till din mailadress<br>";
$amne = 'Orderbekräftelse';
$mottagare = 'something@soemthing.com';
$avsandare = "Från: robot@robot.com\n";
mail($mottagare,$amne,$text,$avsandare);
fclose($fil);
?>

Någon som har lust att ange en korrekt kod för hur det skulle se ut med session_start(); & session_register samt att man inte använder sig av en fil att skriva och läsa ifrån utan använder forumlärets inskrivna rader hela tiden och på så vis skickar det som ett mail till användaren (mailet skall gå till den mail adress som man angav i formuläret)

Tack igen.

En frågvis Pierre :r

WebslaveMedlem sedan maj 2002647 inlägg
#10

Om du på sida 2 lägger till detta högst upp:

session_start();

och sedan detta efter du har deklarerat variablarna på sida 2:

$_SESSION['kundnr'] = $kundnr
$_SESSION['foretag'] = $foretag
$_SESSION['kontakt'] = $kontakt
$_SESSION['telefon'] = $telefon
$_SESSION['email'] = $email

Och sedan så lägger du till session_start(); högst upp på alla sidor som du vill att variablarna ska vara tillgängliga på.

Du dödar/tar bort sessionen med:

session_unset();
session_destroy();

Lycka till... hoppas det funkar

pierre_jMedlem sedan nov. 200218 inlägg
#11

Tack för infon. :birp

Jag testar och ser hur det går.

MVH
pierre j

pierre_jMedlem sedan nov. 200218 inlägg
#12

Problem.

Får inte detta att fungera riktigt. Har läst mig fram till att om man skall använda Sessions i windows så måste inställningar göras i php.ini. Har ändrat dessa och undrar nu om dessa är rätt eller ska något mer ändras ?

Min PHP.

[Session]
; Handler used to store/retrieve data.
session.save_handler = files

; Argument passed to save_handler. In the case of files, this is the path
; where data files are stored. Note: Windows users have to change this
; variable in order to use PHP's session functions.
session.save_path = C:\winnt\temp;

; Whether to use cookies.
session.use_cookies = 1

; Name of the session (used as cookie name).
session.name = PHPSESSID

; Initialize session on request startup.
session.auto_start = 0

; Lifetime in seconds of cookie or, if 0, until browser is restarted.
session.cookie_lifetime = 0

; The path for which the cookie is valid.
session.cookie_path = /

; The domain for which the cookie is valid.
session.cookie_domain =

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

Detta är min kod i andra dokumentet där jag vill börja använda mig av session_start();

<body>

<?php
session_start();

// Anger variabler från tidigare sida

$kundnr = $_POST['kundnr'];
$foretag = $_POST['foretag'];
$kontakt = $_POST['kontakt'];
$telefon = $_POST['telefon'];
$email = $_POST['email'];

$_SESSION['kundnr'] = $kundnr
$_SESSION['foretag'] = $foretag
$_SESSION['kontakt'] = $kontakt
$_SESSION['telefon'] = $telefon
$_SESSION['email'] = $email

$konfig = $kundnr . "\n" . $foretag ."\n" . $kontakt . "\n" . $telefon . "\n" . $email . "\n" . "\n";

$fil = fopen("konfig.txt","w+") or die ("Kunde inte öppna filen");
fputs($fil, "$konfig");

// Skriver ut informationen på skärmen

echo "$konfig";
echo "Informationen har sparats i konfig.txt";
?>

<br><br>
<FORM action="mail.php" method="post">
<input type="submit" value="Skicka">
</FORM>

</body>
</html>

Men när jag trycker sänd på första sidan så får jag felmeddelandet:

Parse error: parse error in c:\phpdev\www\konfig.php on line 19

Line 19 är: $_SESSION['foretag'] = $foretag

Nån som har någon ide varför jag inte kan få igång session ? :stud

Tackar på förhand.

MVH
Pierre

LeonMedlem sedan nov. 200227 inlägg
#13

Du har glömt att skriva ; efter varje avslutad "kodrad" så om du ska sätta en variabel så måste du skriva

$_SESSION['kundnr'] = $kundnr;
WebslaveMedlem sedan maj 2002647 inlägg
#14

Det kan nog ja ta skulden för ;) Glömde lägga in det :D

pierre_jMedlem sedan nov. 200218 inlägg
#15

Jo jag såg det själv sedan och då fungerade det (nästan)
Problemet är nu att jag inte i mitt 3:e dokument kan få tex e-mailen att skrivas ut på skärmen. Jag har ingen aning varför.
Jag vill kunna flytta emd mig den datan för att tex kunna skicka den som mail och även skriva ut den på skärmen.

Saken är den att jag inte vill fråga om precis allt för då lär man sig inte, men nu har jag suttit i timmar och dragit mig i håret och försökt att lösa det samt läst på flera olika sidor men jag förstår inte logiken i det.

Min kod i mitt 3:e dokument är nu följande.

<?php
session_start();

echo $email;

?>

Men den visar inte email adressen som jag då har skrivit in i dokument 1. (Via en input box)

Koden i dokument 2 är alltså.... Tack vare hjälpen från Er grabbar :birp

<?php
session_start();

// Anger variabler från tidigare sida

$kundnr = $_POST['kundnr'];
$foretag = $_POST['foretag'];
$kontakt = $_POST['kontakt'];
$telefon = $_POST['telefon'];
$email = $_POST['email'];

$_SESSION['kundnr'] = $kundnr;
$_SESSION['foretag'] = $foretag;
$_SESSION['kontakt'] = $kontakt;
$_SESSION['telefon'] = $telefon;
$_SESSION['email'] = $email;

Men den vägrar skriva ut e-mail adressen på sida 3.

Nån som har tips.

Stort tack för all tidigare hjälp

/ Pierre

LeonMedlem sedan nov. 200227 inlägg
#16

det finns jättebra nybörjar tutorials på http://www.idg.se/webstudio

för att skriva ut en session skriver du


echo $_SESSION['kundnr'];

för att sätta alltså ge en variabel ett värde så skriver du


$variabelnamnet = 0;

tex och för att skriva ut den variabeln


echo $variabelnamnet;

samma sak gället sessions

= och sen vad du vill sätta den till och echo för att skriva ut och sen kan du bara sätta in $_SESSION['kundnr'] vart som helst i php koden om du skulle vilja ha det nånstans....

Hoppas du fattar vinken

Lycka till!

pierre_jMedlem sedan nov. 200218 inlägg
#17

Tackar för all hjälp.

Jag hittade varför jag har haft sådana problem det detta, då jag laddat ner och kört PHPDev 4.2.3 så var inställningen i PHP.ini inte riktigt rätt för att den skulle visa det som jag ville.

register_globals var satt som Off, den skall vara On för att den skall skriva ut mina resultat. Så det löste sig ändå.

Om man använder sig av OFF i register_globals så måste man använda sig av funktionen:
$HTTP_SESSION_VARS["variabelnamn"]

Kan vara bra för er att veta som har samma problem.

/ Pierre

WebslaveMedlem sedan maj 2002647 inlägg
#18

Om du har en nyare version av PHP så skriver du $_POST['variabelnamn'] ;)

255 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
125 ms — hämta forumlista (db)
116 ms — hämta statistik (db)
138 ms — hämta tråd, inlägg och bilagor (db)