PHP function include

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo allemaal,

Ik ben al een tijd aan het tobben met het volgende probleem. In mijn pagina heb ik een formulier met meerdere keuzelijsten. Ik gebruik een include bestand waarin alle functies om de diverse keuzelijsten te openen staan. Zo ziet het er verkort uit:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
include("../include/func.inc.php");

  </TD>
          </TR>
          <TR ALIGN="LEFT" VALIGN="TOP" BGCOLOR="#333366"> 
            <TD COLSPAN="6"><FONT COLOR="#FFFFFF"><STRONG>Gegevens training</STRONG></FONT></TD>
          </TR>
          <TR ALIGN="LEFT" VALIGN="TOP" BGCOLOR="#333366"> 
            <TD COLSPAN="3"><FONT COLOR="#FFFFFF">*AE<br>
              <?php  
// keuzelijst ae 
  kiesae();
?>
 </FONT></TD>


Het vervelende is hierbij dat de gegevens die met de functies worden ingevuld niet gevalideerd kunnjen worden. Iemand vertelede me toen dat ik dan in plaats van rechtstreeks aanroepen van functie iets zou moeten gebruiken als include("../include/func.inc.php" function=);
Nu heb ik wel wat zitten proberen maar geen succes. In mijn boeken kan ik het niet vinden en zoeken op interneet heeft ook geen resultaat.

Weet iemand hier de oplossing?

Sjaan

[ Voor 0% gewijzigd door RobIII op 05-02-2007 18:32 ]


Acties:
  • 0 Henk 'm!

  • flexje
  • Registratie: September 2001
  • Laatst online: 12:34

flexje

got-father

Het zou misschien handig zijn als we de functie mochten inzien :)

En gebruik de php highlighter please

"Try not to become a man of success but rather to become a man of value..."


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Oke dit is een van de 7 functies die allemaal keuzelijsten zijn zoals deze. Zoals gezegd de include pagina is
include("../include/func.inc.php");

in de pagina met het formulier wordt een functie aangeroepen met
kiesae();

Dat is deze functie die in de include pagian staat
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function kiesae()   {
// Haal de ae namen voor de keuze lijst uit de database           
$aenaam = mysql_query("SELECT * FROM users");   
if ($aenaam)   
{   
echo "<select name=\"ae\">";   

while ($row = mysql_fetch_assoc($aenaam))   
{   
echo "<option>";   
echo $row['email'];   
echo "</option>";   
}   
echo "</select>";   
}   
}
//end function kies ae  

Sorry maar ik weet niet hoe ik de php highlighter moet gebruiken.

Sjaan

[ Voor 1% gewijzigd door RobIII op 05-02-2007 18:32 ]


Acties:
  • 0 Henk 'm!

  • storeman
  • Registratie: April 2004
  • Laatst online: 12:59
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function kiesae() {
// Haal de ae namen voor de keuze lijst uit de database 
$aenaam = mysql_query("SELECT * FROM users"); 
if ($aenaam) 
{ 
echo "<select name=\"ae\">"; 

while ($row = mysql_fetch_assoc($aenaam)) 
{ 
echo "<option>"; 
echo $row['email']; 
echo "</option>"; 
} 
echo "</select>"; 
} 
}
//end function kies ae 


[_code_=_php_] [_/code_] (maar dan zonder blokhaken underscores ;)

Overigens is je vraag niet echt duidelijk voor mij. Welke gegevens wil je nu kunnen valideren?

[ Voor 5% gewijzigd door RobIII op 05-02-2007 18:53 ]

"Chaos kan niet uit de hand lopen"


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Sorry maar ik weet niet hoe ik de php highlighter moet gebruiken.
Zet [php] en [/php] om de code heen. ;)

Verdre zou je je vraag iets moeten toelichten, wil je controleren dat er inderdaad een geldige emailadrs uit de dropdown gekozen is?

Overigens nog een puntje: Als je alleen het veld email nodig hebt, gebruik dan SELECT email ipv SELECT *.

{signature}


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Oke nogmaals het euvel. De pagina bevat een formulier met meerdere keuzelijsten. De waarden in de lijst worden gevuld door een functie die de gegevens ophaalt uit een MySql tabel. De functies voor alle keuzelijsten staan in een externe pagina die wordt ge-include. Dit werkt allemaal prima.

De reden waarom ik dit zo doe is dat er meerdere formulieren zijn die dezelfde gegevens gebruiken om in te vullen. Het aanpassen van de gegevens hoef ik dus alleen maar in de tabel te doen en niet telkens op 6 pagina's als ik gewoon een lijst maak met <option> in html.

Het probleem is dat de waarden die uit de functies worden ingevuld op een of andere manier niet worden herkend. Bij het valideren, dus kijken of het veld niet leeg is, vindt een validatie script in Javascript alles goed (ook lege velden), en php validatie vindt niks goed ook als een waarde uit de lijst is gekozen.

Echter de gegevens die worden gekozen in de lijsten worden netjes weggeschreven in een tabel en ook verzonden met email.

Kortom ik wil de include lijsten gebruiken maar dan zodanig dat ik met behulp van een script kan controleren of verplichte velden zijn ingevuld. Ik hoop dat het nu wat duidelijker is?

Sjaan

Acties:
  • 0 Henk 'm!

  • storeman
  • Registratie: April 2004
  • Laatst online: 12:59
Bij die keuze lijsten is het toch alleen belangrijk dat er een waarde is die groter is dan "". Welke waarde dat exact is boeit niet. Omdat die keuzelijsten alleen de door jou opgegeven waarden kan bevatten.

Ik denk dat het handig is om bijvoorbeeld je javascript of je php validatie code te plaatsen, want als ik je nu goed begrijp ligt daar het probleem.

"Chaos kan niet uit de hand lopen"


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik geloof dat het nog niet duidelijk is hoor. Natuurlijk maakt de waarde niet uit als het veld maar niet leeg is. En dat is het hem nu juist. De scripts valideren niet goed als ik de gegevens via de keuzelijsten laat invullen. Hierbij staat de eerste waarde op leeg zodat de gebruiker verplicht wordt een waarde in de lijst te kiezen. De scripts regeren niet goed met gebruik van de externe functies.

De scripts, zowel javascript als php script werken wel goed als ik de waarden in een html <option> lijst heb staan maar dat is niet handig omdat de gegevens veelvuldig moeten worden aangepast.

Acties:
  • 0 Henk 'm!

  • storeman
  • Registratie: April 2004
  • Laatst online: 12:59
heel vreemd, en als je

HTML:
1
<option value="email">email</option>


Gebruikt?

"Chaos kan niet uit de hand lopen"


Acties:
  • 0 Henk 'm!

Verwijderd

Je moet zowiezo het value attribuut meegeven aan option:

Zie hier meer info

[ Voor 3% gewijzigd door Verwijderd op 05-02-2007 10:25 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja jongens, met <option> neem ik natuurlijk de value mee, ik geef het aan als voorbeeld. Maar als ik die mogelijkheid gebruik moet ik waardenlijst van 6 formulieren 2 a 3 maal per week aanpassen.

Ik wil dus de php gebruiken met externe functies voor de waarden in de keuzelijsten zodat ik de wijzigingen slechts 1 keer in de tabel hoef te wijzigen. Maar dan moet de validatie wel werken.

Acties:
  • 0 Henk 'm!

  • disjfa
  • Registratie: April 2001
  • Laatst online: 03-07 14:47

disjfa

be

De grote vraag is nu natuurlijk, waar heb jij je validatie staan en waarom zou dit niet werken?

Aangezien je nu nog nergens laat zien waar je dingen valideert. Je hebt een formuliertje en ik neem aan dat je dit hetzelfde neerzet als validatie.

disjfa - disj·fa (meneer)
disjfa.nl


Acties:
  • 0 Henk 'm!

  • storeman
  • Registratie: April 2004
  • Laatst online: 12:59
Hoe moeilijk is dit dan?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php 
function kiesae() { 
// Haal de ae namen voor de keuze lijst uit de database  
$aenaam = mysql_query("SELECT * FROM users");  
if ($aenaam)  
{  
echo "<select name=\"ae\">";  

while ($row = mysql_fetch_assoc($aenaam))  
{  
echo "<option value=\"$row[email]\">";  
echo $row['email'];  
echo "</option>";  
}  
echo "</select>";  
}  
} 
//end function kies ae 
?>


Jij hebt een probleem, maar je bent nou niet erg duidelijk in wat nu echt het probleem is. Wij moeten het allemaal maar snappen, maar de validatie code ontbreekt natuurlijk. Vervolgens geef je ook nog eens niet de complete code:
met <option> neem ik natuurlijk de value mee
Als je onvolledige informatie geeft, hoe moeten wij het probleem dan kunnen vinden?


Wat heb je bijvoorbeeld geprobeerd in php en javascript om te valideren, want voor zover ik dat nu kan begrijpen ligt daar het probleem en niet bij het genereren van de lijst.

"Chaos kan niet uit de hand lopen"


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Verwijderd schreef op maandag 05 februari 2007 @ 10:41:
Ik wil dus de php gebruiken met externe functies voor de waarden in de keuzelijsten zodat ik de wijzigingen slechts 1 keer in de tabel hoef te wijzigen. Maar dan moet de validatie wel werken.
Dat vinden wij allemaal wel prima hoor en niet heeft commentaar op de huidige functie gegeven. ;) Je moet alleen ook gewoon een PHP functie voor het valideren gaan maken/aanpassen, waarbij je kijkt of de waarde welke vanaf de client binnenkomt ook in die tabel staat. Let uiteraard wel op dat dit user input is en dat je dus wel op past voor SQL Injection.

{signature}


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dit is een groter deel van de oude pagina met validatie. In de head een verwijzing naar een extern vaidatie script dat met alleen html wel werkte maar gecombineerd met php niet.

Na de includes de validatie in php, dat dus ook niet werkt. Eerst heb ik de validatie geprobeerd uit mijn boek dat ging niet in dit formulier. Ik heb dit ook al aangepast op aanraden van mensen die meer verstand hebben van php dan ik, door de variabelen tussen ,var. te plaatsen, bij elk veld afzonderlijk een validatieregel enzovoort maar niets hielp.

Ik wil graag begrijpen waarom het niet werkt, doe ik iets verkeerd of is wat ik wil niet mogelijk?

Dus nogmaals, zonder validatie worden alle gegevens netjes weggeschreven naar de tabel en ook correct verzonden via email.

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
96
<HEAD>
<TITLE>Walk In Audit toevoegen</TITLE>
<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
/* <script language = "JavaScript" src = "validate.js"></script>  */
</HEAD><BODY bgcolor="#FFFFFF" text="#000000">
<?php 

//database connectie
include("include/connect.inc.php");
//functies
include("include/func.inc.php");
?>

<?php
//als het niet op verzenden is geklikt toon het formulier
 if($_POST["Submit"] != "Verzenden" || !$_POST["aanhef"] || !$_POST["voornaam"]  || !$_POST["achternaam"]  || !$_POST["bedrijf"] || !$_POST["aenaam"] || !$_POST["vestiging"] || !$_POST["dat"] || !$_POST["autijd"] || !$_POST["app"])
   {
?>   
<TABLE width="698" border="0" cellspacing="4" cellpadding="4" align="center">
  <TR> 
    <TD WIDTH="682" height="354" colspan="2" align="left" valign="top"> 
      <form method="post" name=audits action="<?php echo $_SERVER['PHP_SELF']; ?>" > 
        
        <TABLE WIDTH="644" BORDER="1" ALIGN="CENTER" CELLPADDING="3" CELLSPACING="3">
          <TR ALIGN="LEFT" VALIGN="TOP" BGCOLOR="#333366"> 
            <TD WIDTH="111"> <H4><FONT COLOR="#FFFFFF">Office Walk-In </FONT></H4></TD>
            <TD COLSPAN="4"> <H4 ALIGN="RIGHT"><FONT COLOR="#FFFFFF">Audit</FONT><FONT COLOR="#FFFFFF"> 
                inroosteren <STRONG>(Alle velden gemerkt met * zijn verplicht</STRONG> 
                )</FONT></H4></TD>
          </TR>
          <TR ALIGN="LEFT" VALIGN="TOP" BGCOLOR="#333366"> 
            <TD colspan="5"><FONT COLOR="#FFFFFF"><STRONG>Gegevens cursist</STRONG></FONT></TD>
          </TR>
          <TR ALIGN="LEFT" VALIGN="TOP" BGCOLOR="#333366">


       <TD><div align="right"><FONT COLOR="#FFFFFF">*Aanhef<BR>
       <?php
    if($_POST["Submit"] && !$_POST["aanhef"]) {
    echo "<font color=\"red\" size=\"4\"><b> ?</b></font>";
    }
    ?>
                <SELECT NAME="aanhef" SIZE="1" ID="aanhef" value="<?php echo $_POST["aanhef"] ?>">
                  <OPTION SELECTED></OPTION>
                  <OPTION>Mevr.</OPTION>
                  <OPTION>Dhr.</OPTION>
                </SELECT>
                </FONT></div></TD>

            <TD width="88" COLSPAN="2"><div align="right"><FONT COLOR="#FFFFFF">*Voornaam<BR>
                <INPUT NAME="voornaam" TYPE="text" ID="voornaam" SIZE="10">
                </FONT></div></TD>
            <TD width="145"><div align="right"><FONT COLOR="#FFFFFF">Tussenvoegsel<BR>
                <SELECT NAME="tussen" SIZE="1" ID="select">
                  <OPTION SELECTED></OPTION>
                  <OPTION>de</OPTION>
                  <OPTION>den</OPTION>
                  <OPTION>der</OPTION>
                  <OPTION>van</OPTION>
                  <OPTION>van de</OPTION>
                  <OPTION>van den</OPTION>
                  <OPTION>van der</OPTION>
                  <OPTION>in 't</OPTION>
                  <OPTION>op den</OPTION>
                </SELECT>
                </FONT></div></TD>
            <TD width="250" COLSPAN="-1"><div align="right"><FONT COLOR="#FFFFFF">*Achternaam<BR>
                <INPUT NAME="achternaam" TYPE="text" ID="achternaam2" SIZE="40">
                </FONT></div></TD>
          </TR>
          <TR ALIGN="LEFT" VALIGN="TOP" BGCOLOR="#333366"> 
            <TD colspan="5"><div align="right"><FONT COLOR="#FFFFFF">*Bedrijf 
                <INPUT NAME="bedrijf" TYPE="text" ID="bedrijf2" SIZE="35">
                </FONT> </div></TD>
          </TR>
          <TR ALIGN="LEFT" VALIGN="TOP" BGCOLOR="#333366"> 
            <TD colspan="5">Gegevens Audti</TD>
          </TR>
          <TR ALIGN="LEFT" VALIGN="TOP" BGCOLOR="#333366"> 
            <TD colspan="4"><FONT COLOR="#FFFFFF">*AE<br>
              <?php  
// keuzelijst ae 
kiesae();

?>
              </FONT></TD>
            <TD COLSPAN="-1"><font color="#FFFFFF">*Audit plaats<br>
              <?php  
// keuzelijst vestiging 
kiesvest();
?>
              </FONT></TD>
          </TR>
          <TR ALIGN="LEFT" VALIGN="TOP" BGCOLOR="#333366"> 
            <TD colspan="2"><FONT COLOR="#FFFFFF">*Datum<BR>
              <?php

restcode en afsluittags

[ Voor 0% gewijzigd door RobIII op 05-02-2007 18:32 ]


Acties:
  • 0 Henk 'm!

  • ID-College
  • Registratie: November 2003
  • Laatst online: 15:55
Wat staat hier nou boven?
Zet de code eerst in PHP tags, dan ben ik bereid te helpen. Ik ga niet zonder syntax highlightning door jou code lopen klooien

Edit: Sorry hoor, maar na alles hebben doorgelezen snap ik er nog steeds niets van. En ik denk dat andere het ook niet helemaal begrijpen. Ik kan je moeilijk verder helpen hiermee. Succes
Kheb het gevoel dat je iets gigantisch raar aan het doen bent en dat het vrij weinig zin heeft. Options in HTML hoef je niet te valideren om dat die alleen maar waarde kunnen bevatten die jij opgeeft.

[ Voor 61% gewijzigd door ID-College op 05-02-2007 19:34 ]


Acties:
  • 0 Henk 'm!

  • TerraGuy
  • Registratie: Februari 2001
  • Laatst online: 17-06-2023

TerraGuy

The weirdo with the beard

Bij de <form> staat name=audit. Misschien dat het helpt om er name="audit" van te maken?

Edit: Nog iets: $_POST['Submit'], misschien werkt $_POST['submit'] (ivm. hoofdlettergevoeligheid)?
Edit: Nog iets: let op het gebruik van je 'quotes': "<?php echo $_POST["aanhef"] ?>" gaat niet werken: "aanhef" moet tussen enkele quotes ('aanhef') staan om problemen te voorkomen.

Offtopic: de keuze van de tussenvoegsels, is dat niet handiger om dat gewoon open te laten? Voor aparte zeldzame tussenvoegsels (bijv. van het, van 't), of buitenlandse tussenvoegsels.

Verder is syntax highlighting wel handig. Als je je bericht typt, kun je boven het textveld een linkje vinden met UBB-codes. Daar staan allerlei handige codes in voor opmaak. HTML-opmaak is bijvoorbeeld [code=html, en na je html sluit je af met [/code. Voor php zet je [code=php. etc. Natuurlijk moet elke tag afgesloten worden met een bracket. :)

[ Voor 18% gewijzigd door TerraGuy op 05-02-2007 18:20 ]

Iedereen kan gelijk hebben, allemaal tegelijk. Dat heb je met quantum.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Beste aclieder,

Bij deze nogmaals het verzoek om voortaan je code te posten tussen code-tags. "Ja maar ik weet niet hoe dat moet" is geen excuus; het staat hier haarfijn uitgelegd en is prima te vinden via het menu (boven aan je pagina) FAQ -> UBB Codes. Daarnaast is het je in dit topic zélf al een paar keer uitgelegd.

Tot slot kun je in ons Programming Beleid onder het kopje Programming Beleid Quickstart lezen dat we graag alléén relevante code zien als je code post.

[ Voor 51% gewijzigd door RobIII op 05-02-2007 18:52 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1