[PHP] query in form hidden field proppen *

Pagina: 1
Acties:
  • 63 views sinds 30-01-2008

  • ferno
  • Registratie: November 2001
  • Laatst online: 15-02 12:16

ferno

**********

Topicstarter
Hoi mensen,

Ik heb al een beetje rond geneusd en antwoorden die in de goeie richting zaten gevonden maar helaas niet helemaal wat ik zoek.

Ik heb een frontendje voor een MySQL db gemaakt in PHP en dat werkt redelijk.

Ik kan gegevens invoeren (mbv. forms) en ook gegevens ophalen etc.

Nu wil ik naar de db connecten en gegevens ophalen, dit heb ik al gemaakt en het werkt prima, ik krijg de output van de query netjes in een table.


Wat ik nu wil is deze gegevens ook daarna mailen en ook daar heb ik de form voor gemaakt, netjes met pulldown voor de email adres etc.
Dit lijkt te werken maar ik krijg de output van de query niet in de hidden form field gepropt en het mailtje komt dus leeg aan, netjes met subject en comments etc. maar geen query.
Ik heb ook al getest met van dat veld een text veld maken waar ik dan de output van de query zelf in plak en dat werkt wel maar is helaan niet wat ik wil.
Het moet zo zijn dat je de uitkomst van de query ziet en als je dan op submit klikt je die gegevens mailt.

Het mailen gaat natuurlijk met de ingebouwde mail funktie van PHP.

Lang verhaal maar ik hoop dat iemand mij verder kan helpen want ik ben alweer een tijdje bezig en kom maar niet verder.

640K Should be enough for everyone! ;) Bill Gates


  • Shadowman
  • Registratie: Januari 2002
  • Niet online
Hoe probeer je de uitkomst in de formuliervelden te zetten?

Welke code gebruik je daarvoor?

  • ferno
  • Registratie: November 2001
  • Laatst online: 15-02 12:16

ferno

**********

Topicstarter
Shadowman schreef op 28 juli 2004 @ 21:29:
Hoe probeer je de uitkomst in de formuliervelden te zetten?

Welke code gebruik je daarvoor?
Ik heb al verschillende manieren geprobeerd door <?echo "$query"; ?> te doen met PHP en met een stukje die ik met dearmweaver heb gegenereerd en heb aangepast maar geen succes.

ik had uit de array wel de rowcount ( een soort count(*) )gekregen en succesvol in de body van de mail gekregen maar niet de uiteindelijke query. :'(

640K Should be enough for everyone! ;) Bill Gates


  • We Are Borg
  • Registratie: April 2000
  • Nu online

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
Zoals Shadowman al wat probeert duidelijk te maken: post wat relevante code. De uitleg met wat code maakt een veel beter verhaal :)

  • Vampier
  • Registratie: Februari 2001
  • Laatst online: 20-04-2015

Vampier

poke-1,170

lekker veilig een query meegeven die zichtbaar is voor het 'publiek'

  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

Vampier schreef op 28 juli 2004 @ 21:40:
lekker veilig een query meegeven die zichtbaar is voor het 'publiek'
Waarschijnlijk is dit voor debug opties ofzo. Of alleen voor beheerders van die server, omdat hij waarschijnlijk de query gewoon wil meesturen met een mail.

Post (net zoals de gastjes hierboven al zeiden) eens wat relevante code. Dan kunnen we beter debuggen.

  • ferno
  • Registratie: November 2001
  • Laatst online: 15-02 12:16

ferno

**********

Topicstarter
Vampier schreef op 28 juli 2004 @ 21:40:
lekker veilig een query meegeven die zichtbaar is voor het 'publiek'
Wat bedoel je??

Het is bedoeld om de beheerder de mogelijheid te geven om via een pulldown menu een wee overzicht maand overzicht naar twee vaste email adressen te laten versturen.

Het feit dat de query uitkomst te zien is is zelfs gewenst.

De connection details zijn natuurlijk in een include file veilig opgeborgen.

640K Should be enough for everyone! ;) Bill Gates


  • ferno
  • Registratie: November 2001
  • Laatst online: 15-02 12:16

ferno

**********

Topicstarter
ja en met $query wil alleen aangeven dat het de queryuikomst is, het is inderdaad een beetje ogelukkig gekozen als voorbeeld.

Het zou $result moeten zijn. :o

640K Should be enough for everyone! ;) Bill Gates


  • Shadowman
  • Registratie: Januari 2002
  • Niet online
Een echo $result; kun je btw niet zomaar doen. Je moet wel de query fetchen en het lijkt met hoe je het nu zegt dat je dat niet doet.

[ Voor 33% gewijzigd door curry684 op 29-07-2004 00:38 ]


  • ferno
  • Registratie: November 2001
  • Laatst online: 15-02 12:16

ferno

**********

Topicstarter
zo iets dus:

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
<?php require_once('Connections/mysql.php'); ?>
<?php
mysql_select_db($database_mysql, $mysql);
$query_Recordset1 = "SELECT * FROM table WHERE `date` LIKE '%' ORDER BY `date` ASC";
$Recordset1 = mysql_query($query_Recordset1, $mysql) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>


<form method="post" action="mail.php" enctype="multipart/form-data" name="mail" id="mail">
  <div align="center">
    <table width="200" border="1">
      <tr>
        <td><table width="200" border="0">
            <tr>
              <td><p>E-Mail:
                      <select name="email" id="email">
                        <option value="email@mail.com">jan</option>
                        <option value="email@mail.com">piet</option>
                  </select>
              </p></td>
            </tr>
            <tr>
              <td> Subject:
                  <select name="subject" id="subject">
                    <option value="Report Month">month</option>
                    <option value="Report Weekly">week</option>
                    <option value="Report day.">daily</option>
                </select></td>
            </tr>
            <tr>
              <td><p align="left">Comments:<br>
                      <TEXTAREA NAME="comments" ROWS=10 COLS=30></TEXTAREA>
                      <input name="hiddenField" type="hidden" value="<?php echo ucwords($row_Recordset1['date']); ?>">
              </p>
                <p align="left">                 </p>
                <p align="center">
                    <input type="submit" name="submit" value="Send Email">
                </p></td>
            </tr>
        </table></td>
      </tr>
    </table>
  </div>
</form>

Dit is natuurlijk niet alles maar wel de relevante deel volgens mijn.

Ik heb ook geprobeert met zoiets als
Shadowman schreef op 28 juli 2004 @ 22:28:
Een echo $result; kun je btw niet zomaar doen. Je moet wel de query fetchen en het lijkt met hoe je het nu zegt dat je dat niet doet.
Hmm, dat zou het probleem kunnen zijn,

Heb je een klein voorbeeldje??

[ Voor 27% gewijzigd door curry684 op 29-07-2004 00:41 ]

640K Should be enough for everyone! ;) Bill Gates


  • Shadowman
  • Registratie: Januari 2002
  • Niet online
...
PHP:
1
WHERE `date` LIKE '%'

..
?? Waarvoor dient dat?
Dat is gewoon compleet nutteloos om te doen.

Als je de source van je pagina bekijkt staat er ook niets in dat hiddenveld? (Oftewel weet je zeker dat het daar fout gaat of kan het niet fout gaat in je mailverstuurscriptje?)

En ik ga geen voorbeeld geven van foute code :P.

[ Voor 17% gewijzigd door Shadowman op 29-07-2004 14:28 ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

ferno schreef op 28 juli 2004 @ 22:41:
[...]

excusses, het is geen kwestie van niet weten maar gewoon laks :o zal er beter opletten.
En dus post je maar nog een keer 3 keer in 4 minuten terwijl we je net op hebben gewezen dat dat niet echt gewenst is? :?

Die regel heeft een reden weet je, en hij heet overzichtelijkheid. Offtopic geneuzel wint niemand wat mee, dus ik ga dadelijk wat posts trashen hiero.

Professionele website nodig?


  • ferno
  • Registratie: November 2001
  • Laatst online: 15-02 12:16

ferno

**********

Topicstarter
OK,

Nu wat duidelijker en de query was maar een voorbeeld zo kan ie ook en doet ie het ook niet:

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
<?php require_once('Connections/mysql.php'); ?> 
<?php 
mysql_select_db($database_mysql, $mysql); 
$query_Recordset1 = "SELECT * FROM table ORDER BY `date` ASC"; 
$Recordset1 = mysql_query($query_Recordset1, $mysql) or die(mysql_error()); 
$row_Recordset1 = mysql_fetch_assoc($Recordset1); 
$totalRows_Recordset1 = mysql_num_rows($Recordset1); 
?> 


<form method="post" action="mail.php" enctype="multipart/form-data" name="mail" id="mail"> 
  <div align="center"> 
    <table width="200" border="1"> 
      <tr> 
        <td><table width="200" border="0"> 
            <tr> 
              <td><p>E-Mail: 
                      <select name="email" id="email"> 
                        <option value="email@mail.com">jan</option> 
                        <option value="email@mail.com">piet</option> 
                  </select> 
              </p></td> 
            </tr> 
            <tr> 
              <td> Subject: 
                  <select name="subject" id="subject"> 
                    <option value="Report Month">month</option> 
                    <option value="Report Weekly">week</option> 
                    <option value="Report day.">daily</option> 
                </select></td> 
            </tr> 
            <tr> 
              <td><p align="left">Comments:<br> 
                      <TEXTAREA NAME="comments" ROWS=10 COLS=30></TEXTAREA> 
                      <input name="result" type="hidden" value="<?php echo ucwords($row_Recordset1); ?>"> 
              </p> 
                <p align="left">                 </p> 
                <p align="center"> 
                    <input type="submit" name="submit" value="Send Email"> 
                </p></td> 
            </tr> 
        </table></td> 
      </tr> 
    </table> 
  </div> 
</form> 



<?PHP

$subject = $_REQUEST ['subject'];
$email = $_REQUEST ['email'];
$comments = $_REQUEST ['comments'];
$result = $_REQUEST ['result'];




mail("$email", "$subject", "$result, $comments");





print "<center>The email report was successfully sent to:</a></font></center>";
print "<center>";
print ($email);
print "</center>";
print "<center><a href='javascript:history.go(-1);'>Go back</a></font></center>";

?>

[ Voor 23% gewijzigd door ferno op 29-07-2004 07:43 ]

640K Should be enough for everyone! ;) Bill Gates


  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

$row_Recordset1 is een array (met als inhoud de eerste row uit de recordset van de query), die kun je niet zomaar echo-en. Daarvoor doe je dat met $row_Recordset1['date'] op zich wel goed. Wat wil je nu precies in je hidden field hebben?

Je zet nu het gedeelte waarin je gaat mailen zo onder de rest, dan heeft de gebruiker nog niet echt de mogelijkheid om email/subject/comment in te vullen en te submitten hè? ;) PHP is server-side en wordt dus eerst uitgevoerd, daarna gaat je browser de client-side code uitvoeren (te zien met View source). Misschien handiger om dat deel in een aparte mail.php te zetten en van daaruit weer naar een andere pagina te gaan. Dus iets als form.php met de query en het form, dat wordt met de submit-button verstuurd naar mail.php (die de mail dus gaat sturen) en dan met header('location: bedanktvoorjemailtje.php') naar een bedank-pagina ofzo. O, ik zie dat je al zoiets hebt met die prints onderaan. Kan ook :)

Verwijderd

$row_RecordSet1 is een hash (associative array) en kun je niet simpelweg zo printen.

print_r($row_RecordSet1) doet dat al wat beter.

Maar dit is dermate basic Mysql/PHP gebruik dat ik vind dat je nog maar wat simpele tutorialtjes moet gaan doorwerken. Wat jij nog moet leren kunnen wij je in deze thread niet vertellen ;-)

Om die waarden in een hidden veld op te nemen zou je serialize() & unserialize kunnen proberen, maar dat is in je huidige PHP stadium misschien te ver gegrepen. (en bovendien een onelegante en onveilige oplossing)

[ Voor 6% gewijzigd door Verwijderd op 29-07-2004 08:01 ]


Verwijderd

Ik denk dat het interessant kan zijn van bijvoorbeeld phpmailer te gebruiken en dan van de query die je wil mailen, gewoon even een .txt bestandje maken dat je dan aan de mail toevoegt als attachment.

  • ferno
  • Registratie: November 2001
  • Laatst online: 15-02 12:16

ferno

**********

Topicstarter
X-Lars schreef op 29 juli 2004 @ 07:58:
$row_Recordset1 is een array (met als inhoud de eerste row uit de recordset van de query), die kun je niet zomaar echo-en. Daarvoor doe je dat met $row_Recordset1['date'] op zich wel goed. Wat wil je nu precies in je hidden field hebben?

Je zet nu het gedeelte waarin je gaat mailen zo onder de rest, dan heeft de gebruiker nog niet echt de mogelijkheid om email/subject/comment in te vullen en te submitten hè? ;) PHP is server-side en wordt dus eerst uitgevoerd, daarna gaat je browser de client-side code uitvoeren (te zien met View source). Misschien handiger om dat deel in een aparte mail.php te zetten en van daaruit weer naar een andere pagina te gaan. Dus iets als form.php met de query en het form, dat wordt met de submit-button verstuurd naar mail.php (die de mail dus gaat sturen) en dan met header('location: bedanktvoorjemailtje.php') naar een bedank-pagina ofzo. O, ik zie dat je al zoiets hebt met die prints onderaan. Kan ook :)
Ik wil de hele uitkomst van de query indien mogelijk een beetje geformateerd (cvs ofzo) in de hiddenfield stoppen en dat in de body van de email meesturen.

Ik heb hier de code van zowel de mail script als de query script op een pagina gezet maar de twede gedeelte waarin wordt gemaild is de mail.php waar ik de form naartoe submit.

Maar hoe werkt het dan met die date???

Haal ik dan niet alleen de colom date uit de tabel?
Verwijderd schreef op 29 juli 2004 @ 08:00:
$row_RecordSet1 is een hash (associative array) en kun je niet simpelweg zo printen.

print_r($row_RecordSet1) doet dat al wat beter.

Maar dit is dermate basic Mysql/PHP gebruik dat ik vind dat je nog maar wat simpele tutorialtjes moet gaan doorwerken. Wat jij nog moet leren kunnen wij je in deze thread niet vertellen ;-)

Om die waarden in een hidden veld op te nemen zou je serialize() & unserialize kunnen proberen, maar dat is in je huidige PHP stadium misschien te ver gegrepen. (en bovendien een onelegante en onveilige oplossing)
Heb je een link naar een goeie en niet eentje waarbij de connection naar een MySQL server en een simpele query wordt uigelegd want dat is het probleem niet.

[ Voor 40% gewijzigd door curry684 op 29-07-2004 16:46 ]

640K Should be enough for everyone! ;) Bill Gates


  • ferno
  • Registratie: November 2001
  • Laatst online: 15-02 12:16

ferno

**********

Topicstarter
modbreak: dit is de 3e keer binnen dit ene topic dat ik meerdere posts binnen 10 minuten bij mekaar frot en een waarschuwing voor geef. De volgende keer kun je je topic gedag zeggen.

[ Voor 90% gewijzigd door curry684 op 29-07-2004 16:48 ]

640K Should be enough for everyone! ;) Bill Gates


  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08-2025
Je doet nu eerst de query, daarna laat je de gebruiker kiezen waar het resultaat naar toe gestuurd moet worden.
Waarom draai je dat niet om? Dus eerst vragen naar welk emailadres het rapport gestuurd moet worden, en dan pas de benodigde gegevens ophalen. Dat lijkt mij een logische volgorde.

| Toen / Nu


  • ferno
  • Registratie: November 2001
  • Laatst online: 15-02 12:16

ferno

**********

Topicstarter
SuperRembo schreef op 29 juli 2004 @ 16:48:
Je doet nu eerst de query, daarna laat je de gebruiker kiezen waar het resultaat naar toe gestuurd moet worden.
Waarom draai je dat niet om? Dus eerst vragen naar welk emailadres het rapport gestuurd moet worden, en dan pas de benodigde gegevens ophalen. Dat lijkt mij een logische volgorde.
Dat zou kunnen maar dat lost mijn probleem toch verder niet op?

Ik bennog in een zeer vroeg stadium van de script en als de basics werken zal ik me pas druk gaan maken om andere zaken.

640K Should be enough for everyone! ;) Bill Gates


  • ferno
  • Registratie: November 2001
  • Laatst online: 15-02 12:16

ferno

**********

Topicstarter
ferno schreef op 29 juli 2004 @ 16:39:
modbreak: dit is de 3e keer binnen dit ene topic dat ik meerdere posts binnen 10 minuten bij mekaar frot en een waarschuwing voor geef. De volgende keer kun je je topic gedag zeggen.
Je hebt zeker niets anders te doen dan zeiken zeg!!!


Bah

Laat maar zitten gooi de bende maar op slot s zeikerd!!!!! :r :r :r :r

[ Voor 7% gewijzigd door curry684 op 29-07-2004 17:21 . Reden: zal ik die Z dan maar fixen? O+ ]

640K Should be enough for everyone! ;) Bill Gates


  • ferno
  • Registratie: November 2001
  • Laatst online: 15-02 12:16

ferno

**********

Topicstarter
ferno schreef op 29 juli 2004 @ 16:56:
[...]


Je hebt zeker niets anders te doen dan zeiken zeg!!!


Bah

Laat maar zitten gooi de bende maar op slot Zeikerd!!!!! :r :r :r :r

640K Should be enough for everyone! ;) Bill Gates


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09:13

Janoz

Moderator Devschuur®

!litemod

ferno schreef op 29 juli 2004 @ 16:55:
[...]


Dat zou kunnen maar dat lost mijn probleem toch verder niet op?
Je probleem is dat je je gegevens wilt onthouden en mee wilt sturen met het formulier omdat je de gegevens al wel hebt maar het email nog nodig hebt. Als je eerst het email adres vraagt en dan pas de query uitvoerd hoef je de gegevens helemaal niet te onthouden aangezien je ze gelijk kunt mailen.

Waarom lost het je probleem dan niet op?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:50

gorgi_19

Kruimeltjes zijn weer op :9

En even dicht...

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

ferno schreef op 29 juli 2004 @ 16:56:
[...]

Je hebt zeker niets anders te doen dan zeiken zeg!!!

Bah

Laat maar zitten gooi de bende maar op slot seikerd!!!!! :r :r :r :r
Dank voor het respecteren van de huisregels van een plaats waar je te gast bent.

En 'zeikerd' schrijf je met een Z.

Professionele website nodig?


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:50

gorgi_19

Kruimeltjes zijn weer op :9

En het topic blijft dicht. Weinig zin meer om dit topic op deze manier te moderaten.

Om te beginnen hebben we een quickstart, die genoemd staat in de FAQ. Die Quickstart heeft alle vereisten van een topic in zich van wat er nodig is om een probleem op te lossen. Daar hou je je al niet aan, waardoor het resultaat is dat men eerst tig posts bezig is om alle relevante gegevens van het probleem te achterhalen.

Verder wordt je tot driemaal toe vriendelijk gevraagd om je te schikken naar de huisregels.
Toevalligerwijs is deze regel er in gekomen omdat de mensen die jou moeten helpen, het irritant vinden lezen.

Als toegift nog een leuke scheldpartij.

Dit is niet de wijze hoe het er hier aan toe gaat op GoT. Mocht het je niet bevallen, dan zijn er nog andere fora zoals www.beginnersweb.nl, maar het er anders aan toe gaat. :) Misschien dat dat beter bevalt. :)

Samenvattend zie ik geen enkele reden om dit topic nog open te houden, dus gaat deze dicht.
Zie ook je e-mail voor een verdere uitleg.

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1

Dit topic is gesloten.