Toon posts:

[PHP] Tabel als string variabele

Pagina: 1
Acties:
  • 129 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hallo Tweakerts. Ik heb HIER een test staan voor een bestelformulier.
Je moet even wachten tot de (supervervelende) Lycos banner weg is, anders zie je de invulvelden niet. Als je waarden invult in de velden en met "volgende" naar de volgende pagina (show_bestelling.php) gaat, pakt PHP de waarden en maakt een HTML tabel met deze waarden erin. Deze tabel staat dus bovenaan show_bestelling.php.

Mijn vraag: hoe kan ik deze dynamisch geschreven tabel in een nieuwe PHP string variabele krijgen, zodat ik hem op kan sturen naar een emailadres?
Een probleem lijkt me dat de tabel bij het laden van de pagina nog geschreven moet worden. Ik zal dus daarna pas de tabel kunnen pakken en in een string stoppen.

Ik heb wat dingetjes getest, maar de tabel kwam niet aan, wel de rest van het mailtje. Overigens gaat HTML email sturen goed. De rest van het mailtje (het form onder de tabel) wordt ook verstuurd als HTML en dat komt keurig geformat aan.

Verwijderd

sessions is the keyword, daarin kan je alles saven en zo gemakkelijk meenemen naar de volgende pagina. Je kan zelfs als er een session bestaat deze in de vorige pagina aanpassen als de user denkt dat ie zijn 'bestelling' wil veranderen (aanpassen)..

dus http://www.php.net/sessions :)

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 07-07 11:51
Ligt het aan mij of gaat er iets mis op die pagina? Als ik op de eerste link klik die hij vindt, verwijst naar een (niet-bestaande) pagina op gathering.tweakers.net, waar ik helemaal niet meer zit. :?

(niet dat ik op zoek was naar info over sessions, ik zat uit verveling eens te klikken)

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


  • S_E_B
  • Registratie: Oktober 2002
  • Laatst online: 02-09-2015
Als je geen session wilt gebruiken zou je ook de bestellingen in hidden fields van je form kunnen parsen. En op die manier verder kunnen verwerken.

suc6

Verwijderd

Topicstarter
Bedankt. Ik dacht net, de variabelen aantal (ingevuld door gebruiker), prijs(staat vast) en totaal (aantal*prijs) die in de tabel staan zijn al bekend. Dus in principe kan ik in het mailscript die tabel gewoon opnieuw bouwen met die variabelen. Dat lukt echter niet. Begrijp ik goed dat dat komt omdat die variabelen geen session variabelen zijn en PHP ze dus vergeten is al ik bij het mailscript aankom?

  • Roel
  • Registratie: Februari 2000
  • Laatst online: 05-08 07:47

Roel

screen -x addict

Als ik het zo lees staat je pagina waar je een emailtje wil sturen op een andere pagina dan waar je tabel staat, en krijgt die pagina geen gegevens.

Dan kun je idd via sessions gaan werken en dan vindt je hier wat meer informatie.

Ook kun je de link naar de volgende pagina met een form maken die dan via hidden fields de informatie doorsturen.

Maar als alles in één script staat dan heb je ergens iets goed fout zitten, en is print_r() een hele fijne vriend. :)
(Misschien dat je ergens een variable aanpast/weglaat/typo maakt)

[ Voor 0% gewijzigd door Roel op 18-10-2002 03:25 . Reden: Nog meer typo's door slaaptekort ]

Resistance is futile (If < 1 Ohm)


  • S_E_B
  • Registratie: Oktober 2002
  • Laatst online: 02-09-2015
Roel schreef op 18 oktober 2002 @ 03:15:
Dan kun je idd via sessions gaan werken en dan vindt je hier wat meer informatie.

Ook kun je de link naar de volgende pagina met een form maken die dan via hidden fields de informatie doorsturen.
Jij kan knap overtypen.

  • Roel
  • Registratie: Februari 2000
  • Laatst online: 05-08 07:47

Roel

screen -x addict

S_E_B schreef op 18 oktober 2002 @ 10:15:
[...]


Jij kan knap overtypen.
Dank je.

Heb je ook gezien dat ik de link heb aangepast naar een site waar wel informatie over sessions staat ?

Resistance is futile (If < 1 Ohm)


  • S_E_B
  • Registratie: Oktober 2002
  • Laatst online: 02-09-2015
sorry dat had ik niet gezien, maar ik zie wel dat je net zo'n nachtbraker bent als mij >:)

  • Roel
  • Registratie: Februari 2000
  • Laatst online: 05-08 07:47

Roel

screen -x addict

Ach, kon weer eens niet slapen... ben wel met laptop en al in bed in slaap gevallen :P

Is rubenski trouwens nog levend, en heb je al iets gevonden ?

Resistance is futile (If < 1 Ohm)


Verwijderd

Topicstarter
Hey jongens. Dit is veel uitleg, maar waarschijnlijk erg makkelijk te beantwoorden. Alvast bedankt voor de moeite van het lezen. Ik heb even met session en hidden fields gespeeld, maar niet lang genoeg om het goed te implementeren, want:

ik dacht aan weer een nieuwe oplossing, waarbij in 1 pagina (testform.php) én de html zit én de php mailfunctie. Dit idee heb ik hier vandaan.
In de pagina wordt eerst gechecked of processForm een waarde heeft. Als dit niet zo is, wordt door PHP de HTML pagina geschreven. Als dit wel het geval is worden eerst de velden gechecked en dan de mailfunctie uitgevoerd.

Bij mij ziet dit er als volgt uit. Als testform.php wordt geladen (als er dus in het bestelformulier op volgende wordt gedrukt) gebeurt dit:


als procesForm niet geset is (als er nog niet op submit gedrukt is){
---> schrijft PHP het eerste stuk van testform.php met echo"....";
---> schrijft PHP met echo".."; de tabel en plaatst hierin de aantallen en prijzen aan de hand van de aantallen opgegeven in het bestelformulier
---> schrijft PHP de rest van de pagina met echo"....."; In dit laatste deel zit het nieuwe formulier voor naam, bedrijf, adres, etc, + submitknop.

Als er op submit gedrukt wordt geeft een hidden field procesForm een waarde en wordt de huidige pagina op nieuw geladen form action="testform.php" dus)
}

als procesForm wél geset is (als er wél op submit gedrukt is){
---> PHP checked velden
---> PHP maakt met
$message .= "$veldwaarde_1";
$message .= "$veldwaarde_2"; etc
het bericht aan.
---> PHP voert de mail() functie uit
}

Het probleem is nu echter nog steeds, dat ik die tabel niet meegestuurd krijg.
de tabel heeft als name "tabel":

PHP:
1
echo "<table width=60% name=tabel border=


Als ik echter de tabel aan $message wil toevoegen:

PHP:
1
$message .= "$tabel";


wordt de tabel in ieder geval niet met het mailtje meegstuurd. Hoe komt dit?
Moet ik de tabel op een andere manier aan een variabele toewijzen? Zo ja, hoe dan? De tabel moet eerst door PHP geschreven worden en daarna kan-ie dus pas een een variabele toegewezen worden. Als de name (tabel) niet als variabele gebruikt kan worden, vraag ik me af of het wel kan zo. Kan je een tabel die eerst door PHP geschreven moet worden wel naderhand aan een PHP variabele toewijzen?

  • S_E_B
  • Registratie: Oktober 2002
  • Laatst online: 02-09-2015
Als ik het goed begrijp wil je dus dat de table van stap 2 in een mailtje gezet wordt?

Dit kan je doen door de table gewoon te laten echo-en (zoals je nu al doet bij stap 2) en de table dan ook nog eens in een hidden field van het stap3 form te parsen.

Hopelijk is dit wat je bedoelt. good luck ermee (je site ziet er btw goed uit :9)

Verwijderd

Topicstarter
S_E_B schreef op 18 oktober 2002 @ 20:21:
Als ik het goed begrijp wil je dus dat de table van stap 2 in een mailtje gezet wordt?

Dit kan je doen door de table gewoon te laten echo-en (zoals je nu al doet bij stap 2) en de table dan ook nog eens in een hidden field van het stap3 form te parsen.

Hopelijk is dit wat je bedoelt. good luck ermee (je site ziet er btw goed uit :9)
Bedankt :).

Zoiets dus:

<input type=hidden name="de_tabel" value="tabel">
en dan

$message .= "$de_tabel";

?

  • S_E_B
  • Registratie: Oktober 2002
  • Laatst online: 02-09-2015
ja idd zoiets, alleen neem ik aan dat je ook nog de gegevens van de persoon erbij wilt mailen?

ik ben ff bezig met een eenvoudig voorbeeldje, ik hoop het zo af te hebben

  • S_E_B
  • Registratie: Oktober 2002
  • Laatst online: 02-09-2015
ja ik weet dat het niet zo netjes is(ff snel tussen de rest van mn werk door gemaakt :)), maar als het goed is kun je hieruit wel het principe van het hidden "table" field afleiden. En ja de bedragen enzo komen nog niet netjes op 2 decimalen, maar dat weet je zelf wel :)

ik hoop dat het een beetje duidelijk is nu

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?php
if(!$stap){
echo"
<html>
<head>
<title>testpage</title>
</head>
<body>
<p>STAP 1</p>
<form name=\"bestelling\" method=\"post\" action=\"form.php\">
  <table width=\"300\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
    <tr>
      <td>artiekel</td>
      <td>prijs</td>
      <td>aantal</td>
    </tr>
    <tr>
      <td>test 1</td>
      <td>2,00</td>
      <td>
        <input type=\"text\" name=\"test1_amount\">
      </td>
    </tr>
    <tr>
      <td>test 2</td>
      <td>3,60</td>
      <td>
        <input type=\"text\" name=\"test2_amount\">
        <input type=\"hidden\" name=\"stap\" value=\"1\")
      </td>
    </tr>
  </table>
  <p>
    <input type=\"submit\" name=\"Submit\" value=\"BESTEL\">
  </p>
</form>";
}
elseif($stap==1){
$test1_price=2.00*$test1_amount;
$test2_price=3.60*$test2_amount;
$table ="
<table width='200' border='0' cellspacing='0' cellpadding='0'>
  <tr>
    <td>artiekel</td>
    <td>aantal</td>
    <td>totaal</td>
  </tr>
  <tr>
    <td>test 1</td>
    <td>$test1_amount</td>
    <td>$test1_price</td>
  </tr>
  <tr>
    <td>test 2</td>
    <td>$test2_amount</td>
    <td>$test2_price</td>
  </tr>
</table>";
echo"
<html>
<head>
<title>testpage</title>
</head>
<body>
<p>STAP 2</p>";
echo $table;
echo"
<p>STAP 3</p>
<form name=\"form1\" method=\"post\" action=\"form.php?stap=3\">
  <input type=\"hidden\" name=\"table\" value=\"$table
  \">  
  <br>
naam: 
  <input type=\"text\" name=\"name\">
  <br>
achternaam: 
  <input type=\"text\" name=\"rear_name\">
  <p>
  <input type=\"submit\" name=\"Submit2\" value=\"MAIL\">
</form>
<p>&nbsp;</p>
</body>
</html>";
}
elseif($stap==3){
//vergeet niet het e-mail adres in te vullen :P
$email = "zet her het e-mail adres";
$subject = "Bestelling";
$message = "naam: $name\n achternaam: $rear_name\n bestelling: $table\n";
//haal de // weg om echt te laten mailen
//mail($email,$subject,$message);
//voorbeeld van het mailtje:
echo "naam: $name<br>achternaam: $rear_name<br>bestelling:<br>$table";
}
?>


edit:
typo's

Verwijderd

Topicstarter
S_E_B schreef op 18 oktober 2002 @ 21:17:
ja ik weet dat het niet zo netjes is(ff snel tussen de rest van mn werk door gemaakt :)), maar als het goed is kun je hieruit wel het principe van het hidden "table" field afleiden. En ja de bedragen enzo komen nog niet netjes op 2 decimalen, maar dat weet je zelf wel :)

ik hoop dat het een beetje duidelijk is nu


edit:
typo's
Joh! te gek :D . Ik ga het bekijken.....later meer.

  • S_E_B
  • Registratie: Oktober 2002
  • Laatst online: 02-09-2015
no problem(had wel zin om tussendoor weer eens wat te scripten)
ja, hopelijk is het te begrijpen, want nu ik het na lees zie ik dat het een behoorlijk rommeltje is geworden ;) maar ik denk dat het gebruik van het hidden table field wel duidelijk is geworden

eneh maak er geen nachtwerk van :+

Verwijderd

Topicstarter
Ik heb iets soortgelijks geprobeerd. Eerst maak ik een string met daarin de tabel:

$tabel = "hier de tabel met de waarden erin".

Vervolgens schrijf ik de tabel naar het scherm

echo "$tabel"; (gaat goed)


en daarna met een hidden field $tabel aan inh_tabel geven

<input type=\"hidden\" name=\"inh_tabel\" value=\"$tabel \">

en bij de mailfunctie uiteraard msg .= "inh_tabel"; toegevoegd.

Echter, nog steeds geen succes! Erger nog, als ik in het hidden field value = $tabel opgeef, schrijft PHP de inhoud van $tabel naar het scherm! Komt omdat dit binnen een echo".." zit neem ik aan.

Maar goed. Ik kom er echt niet meer uit. Ik heb de code online gezet. Als iemand er even doorheen wil kijken HEEL GRAAG. Bedankt voor de replies tot dusver.

Doe rechtermuisklik > 'save target as' op onderstaande link. Klikken heeft geen zin. Vervolgens openen in wordpad/dreamweaver. iig niet notepad

CODE

Nogmaals, voor alle duidelijkheid:
de gebruiker begint dus op het bestelformulier en komt daarna op de php pagina waarvan hierboven de link naar de code staat.

/enneeh, S_E_B, tis toch nog nachtwerk geworden. Check de tijd :D

  • S_E_B
  • Registratie: Oktober 2002
  • Laatst online: 02-09-2015
om ervoor te zorgen dat de table wel goed in het hidden field blijft moet je in die table de " vervangen door ' zoals in mijn code. Eerst had ik daar dus ook.

Ik zal je code dalijk wel ff doorkijken.


ik zit er nu naar te kijken, maar als ik de code run dan krijg ik een pars error on line 89 :?

  • S_E_B
  • Registratie: Oktober 2002
  • Laatst online: 02-09-2015
zo het is gelukt :D, ik heb er nog wat comments erbij gezet, moet je ff zoeken naar S|E|B voor die van mij.

het was gewoon een kwestie van de \" in de table vervangen door ' zoals ik in het voorbeeld ook heb gedaan. En de parse error kwam door je 1e comment, die was afgesloten met * / ipv */

check je mail maar ff, want als ik het hier post dan wordt de hele layout verkloot >:)

Verwijderd

Topicstarter
Whoopdidooooo, wederom bedankt! Zometeen meer.

  • S_E_B
  • Registratie: Oktober 2002
  • Laatst online: 02-09-2015
hoe is het nou afgelopen? ik wil natuurlijk wel weten of dat geklooi van mij heeft gewerkt :P

Verwijderd

Topicstarter
Ik heb het net geprobeerd en JA het werkt nu! Goed zeg! Ik was al meer dan een week bezig met dat gedoe. Superveel dank voor je hulp!!!!! :)

/edit zal de juiste code no even online zetten voor andere Tweakerts

de goede code..

  • S_E_B
  • Registratie: Oktober 2002
  • Laatst online: 02-09-2015
graag gedaan :)

ik zou het even als een txt-tje oploaden, nu wordt het namelijk automatisch geparsed en hebben onze mede tweakers er nog niets aan omdat de source zo niet zichtbaar is :)

offtopic:
nu kan je eindelijk weer op tijd gaan slapen :P

Verwijderd

Topicstarter
S_E_B schreef op 19 oktober 2002 @ 22:19:


ik zou het even als een txt-tje oploaden, nu wordt het namelijk automatisch geparsed en hebben onze mede tweakers er nog niets aan omdat de source zo niet zichtbaar is :)

offtopic:
nu kan je eindelijk weer op tijd gaan slapen :P
|:( done.

offtopic:
Op tijd slapen. I don't think so. Nu nog de velden checken op geldige invoer en een ontvangstbevestiging maken en zorgen dat er 2 cijfers achter de komma komen en, en , en ..... :)
Pagina: 1