abonnement Unibet Coolblue Bitvavo
pi_56254190
quote:
Op woensdag 23 januari 2008 16:18 schreef MuRKie het volgende:

[..]

OOP is voor mij nog een stapje te ver ben ik bang..
Juist omdat er altijd gedacht wordt dat OOP moeilijk of complex is, heb ik die tutorial gemaakt. Dit is een misvatting, in wezen is het heel simpel en (zeker het eindproduct) is vaak veel intuitiever dan puur imperatief programmeren. Ik ga ook behandelen hoe overerving werkt, hoe je classes met elkaar combineert en er 1 geheel van smeedt. Dus doe een poging het te volgen zou ik zeggen.
  woensdag 23 januari 2008 @ 18:49:55 #212
67938 MuRKie
..warm as butters..
pi_56256259
quote:
Op woensdag 23 januari 2008 17:10 schreef Farenji het volgende:

[..]

Juist omdat er altijd gedacht wordt dat OOP moeilijk of complex is, heb ik die tutorial gemaakt. Dit is een misvatting, in wezen is het heel simpel en (zeker het eindproduct) is vaak veel intuitiever dan puur imperatief programmeren. Ik ga ook behandelen hoe overerving werkt, hoe je classes met elkaar combineert en er 1 geheel van smeedt. Dus doe een poging het te volgen zou ik zeggen.
Maar wat ik zag bij jouw les 1 was dat er wel redelijk verschil zit in OOP met Perl vergeleken met PHP, dus is het voor mij dan wel nuttig om OOP met Perl te gaan leren?
pi_56256911
Kan het kloppen dat deze combi niet gaat lukken?

1
2
3
<?php
$output 
array_merge($outputa_function_that_returns_an_array($input));
?>


Misschien omdat $output zowel de returnwaarde gaat bevatten maar ook een inputwaarde van de array_merge functie is?
  woensdag 23 januari 2008 @ 21:38:18 #214
85514 ralfie
!Yvan eht nioj
pi_56261396
quote:
Op woensdag 23 januari 2008 19:11 schreef Geqxon het volgende:
Kan het kloppen dat deze combi niet gaat lukken?
[ code verwijderd ]

Misschien omdat $output zowel de returnwaarde gaat bevatten maar ook een inputwaarde van de array_merge functie is?
zou wel moeten werken...
pi_56262772
Ik heb een tabel, met daarin 3 rijen. In een van die rijen staat een text met een link. Hoe kan ik eenvoudig die hele tabel uitlezen naar een list/menu item voor een form?
tabel met 50 entries, omdit handmatig te doen is irritant.
pi_56262959
quote:
Op woensdag 23 januari 2008 19:11 schreef Geqxon het volgende:
Kan het kloppen dat deze combi niet gaat lukken?
[ code verwijderd ]

Misschien omdat $output zowel de returnwaarde gaat bevatten maar ook een inputwaarde van de array_merge functie is?
Dat zou niet moeten uitmaken, check je functie nog maar eens na.
  woensdag 23 januari 2008 @ 22:42:54 #217
12880 CraZaay
prettig gestoord
pi_56263167
quote:
Op woensdag 23 januari 2008 19:11 schreef Geqxon het volgende:

Misschien omdat $output zowel de returnwaarde gaat bevatten maar ook een inputwaarde van de array_merge functie is?
Dat moet niet uitmaken (spuit 11, ik weet het). Even debuggen dus om te checken of $output en het resultaat van je functie beide een array bevatten zou ik zeggen De PHP error message wil ook wel helpen denk ik
pi_56264830
Ik haal een datum op uit mijn database:

1DATE_FORMAT(startdate, '%e/%m/%Y') AS startdate


Deze wil ik printen daarom request ik hem:

1$startdate = $request["startdate"];


Maar nu wil ik niet de gehele datum printen, maar alleen de dag. Natuurlijk had ik dan dat kunnen aangeven in het eerste stukje code, dat ik alleen de dag binnen krijg. Maar dan komt dit stukje code om de hoek kijken:

1ORDER BY startdate ASC, enddate ASC, subscribedate ASC


Hoe los ik dit netjes op?
Aan dit bericht kunnen geen rechten worden ontleend.
pi_56265163
Als je wil sorteren op datuim dan is het natuurlijk niet slim om hem te formatteren als dd/mm/yyyy. Je maakt er door je "AS startdate" een stringvergelijking van. Besef je je dan wel dat "10/12/2008" minder, dus *eerder* is dan "31/01/1978" ? YYYY-MM-DD is een betere volgorde, dat is ook de standaard DATE volgorde in mysql.

Hoe je het op kan lossen: in de sql gewoon als een mysql date of timestamp opvragen, dit in je code omzetten in een datumobject, of zelf de string opsplitsen op dag/maand/datum, en dan kun je het daarna formatteren zoals je wil.
  woensdag 23 januari 2008 @ 23:56:48 #220
12880 CraZaay
prettig gestoord
pi_56265317
1DATE_FORMAT(startdate, '%e') AS startday ORDER BY startdate ASC, enddate ASC, subscribedate ASC


En dan $request['startday']
pi_56273119
Voortborduren op mijn vorige post, wil ik nu graag de opgevraagde data tonen; groeperend op jaar en daarin per maand. Ik heb al een aantal dingen geprobeerd. Zo lukt het me wel om op maand te groeperen op de volgende manier tot en met de 12de maand:

1
2
if(startmonth == 01){...}
elseif(startmonth == 02){...}


Dit zijn er "maar" twaalf, dus zou het wel eventueel zo kunnen. Maar met het jaar lukt het me niet, in de zin dat ik wil dat de code zodanig wordt, dat elk jaar "zelf" wordt gegenereerd:

1
2
3
4
$start_jaar = 2008;
$volgend_jaar = ???;
if($opgehaalde_startjaar == $start_jaar){..}
elseif($opgehaalde_startjaar == $volgend_jaar){...}


Hebben jullie misschien een slimme en logische oplossing? Het volgende moet eigenlijk gebeuren:

Datums -> Automatisch gesorteerd, gegroepeerd en getoond op jaar -> Automatisch gesorteerd, gegroepeerd en getoond op maand.

@ Farenji & CraZaay: Bedankt, ik heb het opgelost zoals Farenji aangaf en de benodigde delen eruit gehaald met:

1$startday = date("d", strtotime($startdate));


-xxx-
Aan dit bericht kunnen geen rechten worden ontleend.
  donderdag 24 januari 2008 @ 12:58:58 #222
12880 CraZaay
prettig gestoord
pi_56273411
quote:
Op donderdag 24 januari 2008 12:45 schreef poepeneesje het volgende:

Hebben jullie misschien een slimme en logische oplossing? Het volgende moet eigenlijk gebeuren:

Datums -> Automatisch gesorteerd, gegroepeerd en getoond op jaar -> Automatisch gesorteerd, gegroepeerd en getoond op maand.
Sorteren in de query op datum en vervolgens in het loopje kijken wanneer een nieuw jaar begint?

1
2
3
4
5
if ($year != $current_year)
{
    echo('nieuw jaar');
    $current_year = $year;
}


Dan heb je geen tig if's nodig iig.
quote:
@ Farenji & CraZaay: Bedankt, ik heb het opgelost zoals Farenji aangaf en de benodigde delen eruit gehaald met:
Waarom nou de PHP date functions aanroepen om van de datum een timestamp te maken, en daar weer een dag van te maken? Waarom niet meteen in de query
pi_56273862
quote:
Op donderdag 24 januari 2008 12:58 schreef CraZaay het volgende:

[..]

Sorteren in de query op datum en vervolgens in het loopje kijken wanneer een nieuw jaar begint?
[ code verwijderd ]

Dan heb je geen tig if's nodig iig.
Bedankt, deze had ik ook al bedacht .
quote:
[..]

Waarom nou de PHP date functions aanroepen om van de datum een timestamp te maken, en daar weer een dag van te maken? Waarom niet meteen in de query
Omdat ik geen andere manier wist waarmee ik de juiste gegevens kon verkrijgen...

Dit is mijn code, klik. Het volgende wil ik eigelijk bereiken, volgens mij is het hier voor een beetje omslachtig omschreven :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
2007
- januari
- februari
- ...

2008
- januari
- februari
- ...

2009
- januari
- februari
- ...


Op bovenstaande manier zou ik graag mijn agenda willen tonen, de moeilijkheid zit hem -bij mij dan- in het feit dat ze op de goede volgorde gegroepeerd (op jaar en maand) en apart van elkaar worden getoond .
Aan dit bericht kunnen geen rechten worden ontleend.
  donderdag 24 januari 2008 @ 13:31:58 #224
12880 CraZaay
prettig gestoord
pi_56274081
Ik zou persoonlijk al die strtotime() de deur uit doen en dit in de query oplossen (zie mijn eerdere post hierover). Zo niet, gebruik dan iig niet 3 keer dezelfde "strtotime($startdate)"

Ik snap niet zo goed waarom je "$id = $request["id"];" etc etc doet. Waarom gebruik je niet gewoon die $request['id'] direct als je er verder niets mee doet?
  donderdag 24 januari 2008 @ 15:40:13 #225
67938 MuRKie
..warm as butters..
pi_56276986
kan iemand mij helpen met de volgende mod_rewrite regels?
De regels zijn voor de frontend van mijn cms, maar deze moeten niet werken wanneer in in de map cbs wil voor de backend..
Nu ziet hij cbs als de eerste get variabele ipv een echte map..

1
2
3
4
5
6
RewriteEngine On

RewriteRule ^!(.*)/(.*)/(.*)/$ index.php?component=$1&type=$2&id=$3 [L]
RewriteRule ^!(.*)/(.*)/(.*)$ index.php?component=$1&type=$2&id=$3 [L]
RewriteRule ^!(.*)/(.*)/$ index.php?component=$1&type=$2 [L]
RewriteRule ^!(.*)/(.*)$ index.php?component=$1&type=$2 [L]


ik had het zelf al geprobeerd op deze manier:
1
2
3
4
5
6
RewriteEngine On

RewriteRule ^!(cbs)/(.*)/(.*)/$ index.php?component=$1&type=$2&id=$3 [L]
RewriteRule ^!(cbs)/(.*)/(.*)$ index.php?component=$1&type=$2&id=$3 [L]
RewriteRule ^!(cbs)/(.*)/$ index.php?component=$1&type=$2 [L]
RewriteRule ^!(cbs)/(.*)$ index.php?component=$1&type=$2 [L]
  donderdag 24 januari 2008 @ 16:36:48 #226
12880 CraZaay
prettig gestoord
pi_56278089
Geen idee, maar die eerste 4 regels kunnen prima op 1 regel, moet je alleen even in PHP checken of sommige variabelen leeg zijn
  donderdag 24 januari 2008 @ 17:15:39 #227
67938 MuRKie
..warm as butters..
pi_56278947
quote:
Op donderdag 24 januari 2008 16:36 schreef CraZaay het volgende:
Geen idee, maar die eerste 4 regels kunnen prima op 1 regel, moet je alleen even in PHP checken of sommige variabelen leeg zijn
Hoe bedoel je dat?
  donderdag 24 januari 2008 @ 17:19:25 #228
12880 CraZaay
prettig gestoord
pi_56279031
RewriteRule ^!(.*)?/?(.*)?/?(.*)?/?$ index.php?component=$1&type=$2&id=$3 [L]

Misschien niet helemaal correcte syntax, maar zo kan het op 1 regel. Afhankelijk van het aantal componenten zijn 1 of meer variabelen (component, type en/of id) dan leeg.
  donderdag 24 januari 2008 @ 17:31:13 #229
67938 MuRKie
..warm as butters..
pi_56279255
Ik ben nog al vers met PHP hoor maar ik zit met een probleem waar ik niet uitkom..
Ik ben bezig met een formulier waarin ik ook foutmeldingen wil verwerken als er iets niet goed gaat.
Ik wil dat die foutmelding in het formulier zelf wordt weergegeven met de data die de gebruiker voor het versturen had ingevuld. Ik krijg dit niet mooi voor elkaar.. Ik heb het formulier in zijn geheel in functies geschreven.

Ik heb er nu een beetje een zooi van gemaakt om tot een oplossing te komen wat dus nog steeds niet gelukt is.


Heeft iemand een voorbeeld script voor me hoe ik mooi een formulier kan opbouwen met een invoer validatie en foutafhandeling?
Ik kom er echt niet meer uit vandaag...
pi_56280019
Voor school (PHP vak) moet ik een webapplicatie maken waar mensen zich op kunnen registreren, vervolgens een adresboek moeten kunnen maken en bijhouden/wijzigen, en in de applicatie zelf een nieuwsbrief moeten kunnen opstellen die verzonden kan worden naar iedereen uit het adresboek.

Nu heb ik het registratiegedeelte bijna af, het adresboek zo goed als af, maar nu nog het nieuwsbrief gedeelte. (Vanavond moeten het adresboek+nieuwsbrief gedeelte worden ingeleverd!)

Ik heb het volgende script meegekregen van m'n leraar, die ik (denk ik..) moet gebruiken:

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
<?php
    
    $IsPostback   = false;
    $onderwerp    = "";
    $bericht      = "";
    $success      = false;
    
    if(isset($_POST['Submit']))
    {
        $IsPostback     = true;
        $adressenlijst     = "persoon1@adres1.nl, persoon2@adres2.nl"; // vul deze met adressen uit de database!

        $onderwerp         = $_POST['onderwerp'];
        $bericht           = $_POST['bericht'];
        
        // werkt alleen met anonymous smtp, HRO: alleen als je op school netwerk zit!, zie anders evt PEAR::Mail
            $success = @mail($adressenlijst, $onderwerp, $bericht, "From: mailinglist@adres.nl");        
        // let op dat sommige SMTP servers geen niet bestaande adressen toestaan als afzender
    }
    
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>mail versturen</title>
</head>

<body>

 <?php if($IsPostback)
 {
    if ($success) echo '<p class="success">mail succesvol verstuurd. </p>';
    else echo '<p class="error">Er is een fout opgetreden bij het versturen van de mail</p>';
 }
 else 
 {
 ?>
<h2>Mail:</h2>
    <form action="simple_mail.php" Method="Post">
        <label>Onderwerp:</label><input type="text" name="onderwerp"  /> <br />
        <label>Bericht:</label><textarea name="bericht" > </textarea> <br />
        <input type="Submit" name="Submit" value="Versturen" />
    </form>

 <?php 
 }
 ?>
</body>
</html>



Kan iemand mij dit scriptje uitleggen, en vooral de volgende dingen:

Dit stukje commentaar:
1// werkt alleen met anonymous smtp, HRO: alleen als je op school netwerk zit!, zie anders evt PEAR::Mail

Wat bedoelt de desbetreffende leraar hiermee? Ik heb een beetje lopen zoeken naar anonymous smtp maar ik kan niks interessants of bruikbaars vinden. (Zit op de Hogeschool Rotterdam, maar daar heb ik niks aan als ik thuis zit)

1$adressenlijst     = "persoon1@adres1.nl, persoon2@adres2.nl"; // vul deze met adressen uit de database!


Ik heb een database van het adresboek (voor elke geregistreerde gebruiker een eigen tabel met daarin de fields Naam en Email)
Hoe roep ik die correct op zodat ze daar naar verzonden worden?
Een vriend van mij typte het volgende:
1
2
3
4
5
6
   mysql_connect("localhost","root","speelgoed");
$resultaat = mysql_query("SELECT email FROM gebruikers002");
while($rij = mysql_fetch_array($resultaat)){
$array[] = $rij['email'].',';
}
$adressenlijst = implode(",",$array);

Klopt dat?

Wat ik tot nu toe heb begrepen is dat ik smtp erbij nodig heb. Hoe ga ik dat doen? Waar haal ik zo'n server vandaan (dus niet die schoolserver) en is dit te testen op localhost?
  donderdag 24 januari 2008 @ 18:36:04 #231
67938 MuRKie
..warm as butters..
pi_56280494
quote:
Op donderdag 24 januari 2008 17:19 schreef CraZaay het volgende:
RewriteRule ^!(.*)?/?(.*)?/?(.*)?/?$ index.php?component=$1&type=$2&id=$3 [L]

Misschien niet helemaal correcte syntax, maar zo kan het op 1 regel. Afhankelijk van het aantal componenten zijn 1 of meer variabelen (component, type en/of id) dan leeg.
Moet die uitroepteken dan na de ^ daar staan? Want dat is toch NOT?
  donderdag 24 januari 2008 @ 18:48:37 #232
12880 CraZaay
prettig gestoord
pi_56280759
quote:
Op donderdag 24 januari 2008 18:36 schreef MuRKie het volgende:

[..]

Moet die uitroepteken dan na de ^ daar staan? Want dat is toch NOT?
Die hoort er niet nee. Ik heb gewoon jouw code gecopy-paste
  donderdag 24 januari 2008 @ 18:50:37 #233
67938 MuRKie
..warm as butters..
pi_56280813
quote:
Op donderdag 24 januari 2008 18:48 schreef CraZaay het volgende:

[..]

Die hoort er niet nee. Ik heb gewoon jouw code gecopy-paste
OK

[edit]Die regel werkt niet. Hij returned dan de bestandsnaam. In dit geval index.php[/edit]

[ Bericht 9% gewijzigd door MuRKie op 24-01-2008 19:06:43 ]
  donderdag 24 januari 2008 @ 18:52:51 #234
67938 MuRKie
..warm as butters..
pi_56280856
ik heb mijn formulier nu alsvolgt gemaakt maar ik heb het idee dat ik dit niet echt efficient doe zo..
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
<?php
// no direct access
defined('_ALLOW_ACCESS')
    or die(
'Restricted access');


// --- formulier verwerken --- \\
function processForm()
{
    if(
$_POST['title'] != "" && $_POST['itemID'] != "")
    {
        if(
$_POST['ID'] != "" && fetchType() == "edit")
        {
            
$varQuery    "UPDATE menuitem ";
            
$varSubQuery "WHERE ID = '" mysql_real_escape_string(htmlentities($_POST['ID'])) . "'";
        }
        else if(
$_POST['ID'] == "" && fetchType() == "new")
        {
            
$varQuery    "INSERT INTO menuitem";
            
$varSubQuery "";
        }
        else
        {
            
$varComponentResult .= displayComponentResult(retryForm());
            exit;
        }
        
$varQuery .= " SET title = '" mysql_real_escape_string(htmlentities($_POST['title'])) . "'";
        
$varQuery .= ", component = '" mysql_real_escape_string(htmlentities("content")) . "'"//frontend components moeten nog in de database verwerkt worden. Daarna zal deze functie gemaakt kunnen worden!
        
$varQuery .= ", itemID = '" mysql_real_escape_string(htmlentities($_POST['itemID'])) . "'";
        
$varQuery .= ", publish = '" mysql_real_escape_string(htmlentities($_POST['publish'])) . "'";
        
$varQuery .= $varSubQuery;
        
$varRun mysql_query($varQuery)
            or die(
_DATABASE_QUERY_ERROR " " mysql_error());
    
        
redirect(cmsConfig_siteRoot 'cbs/?component=menuitem&type=list');
    }
    else
    {
        
$varComponentResult .= displayComponentResult(retryForm());
        
        return 
$varComponentResult;
    }
}


// --- lijst maken van beschikbare paginas --- \\
function listPages($pageID)
{
    
$varQuery  "SELECT ID, title";
    
$varQuery .= " FROM content";
    
$varRun    mysql_query($varQuery)
            or die(
_DATABASE_QUERY_ERROR " " mysql_error());
    
$intRecords   mysql_affected_rows();
    
$varHtml   "\t\t\t\t" _CMN_PAGES ":<br />\n";
    
$varHtml  .= "\t\t\t\t<select name=\"itemID\" size= \"" $intRecords "\">\n";
    
    while(
$arrResult mysql_fetch_assoc($varRun))
    {
        
$varHtml .= "\t\t\t\t\t<option value=\"" $arrResult['ID'] . "\"";
        if(
$arrResult['ID'] == $pageID)
        {
            
$varHtml .= " selected";
        }
        
$varHtml .= ">";
        
$varHtml .= $arrResult['title'];
        
$varHtml .= "</option>\n";
    }
    
    
$varHtml .= "\t\t\t\t</select><br />\n";
    
    return 
$varHtml;
}


// --- velden voor nieuw formulier aanmaken --- \\
function newForm()
{
    
$arrForm['type']    = "new";
    
$arrForm['ID']      = "";
    
$arrForm['title']   = "";
    
$arrForm['itemID']  = "";
    
$arrForm['page']    = listPages($arrForm['itemID']);
    
$arrForm['publish'] = "";
    
$arrForm['submit']  = _CMN_CREATE;
    
    return 
$arrForm;
}


// --- velden aanmaken voor onvolledig ingevuld formulier --- \\
function retryForm()
{
    
$arrForm['type']    = mysql_real_escape_string(htmlentities($_GET['type']));
    
$arrForm['ID']      = mysql_real_escape_string(htmlentities($_POST['ID']));
    
$arrForm['title']   = mysql_real_escape_string(htmlentities($_POST['title']));
    
$arrForm['itemID']  = mysql_real_escape_string(htmlentities($_POST['itemID']));
    
$arrForm['page']    = listPages($_POST['itemID']);
    
$arrForm['publish'] = mysql_real_escape_string(htmlentities($_POST['publish']));
    
$arrForm['submit']  = mysql_real_escape_string(htmlentities($_POST['submit']));
    
    return 
$arrForm;
}


// --- velden voor wijzigings formulier aanmaken --- \\
function editForm()
{
    
$intID fetchID();
    
$varQuery  "SELECT ID, 
                  title, 
                  itemID, 
                  publish"
;
    
$varQuery .= " FROM menuitem";
    
$varQuery .= " WHERE ID = '" $intID "'";
    
$varRun    mysql_query($varQuery)
        or die(
_DATABASE_QUERY_ERROR " " mysql_error());
    
$arrResult mysql_fetch_assoc($varRun);
    
    
$arrForm['type']    = "edit";
    
$arrForm['ID']      = $arrResult['ID'];
    
$arrForm['title']   = $arrResult['title'];
    
$arrForm['itemID']  = $arrResult['itemID'];
    
$arrForm['page']    = listPages($arrForm['itemID']);
    
$arrForm['publish'] = $arrResult['publish'];
    
$arrForm['submit']  = _CMN_EDIT;
    
    return 
$arrForm;
}


// --- formulier opbouwen --- \\
function displayComponentResult($arrForm)
{
    
$varHtml  "<form action=\"" cmsConfig_siteRoot "cbs/?component=menuitem&type=" $arrForm['type'];
    if(
$arrForm['ID'] != "")
    {
        
$varHtml .= "&id=" $arrForm['ID'];
    }
    
$varHtml .= "\" method=\"post\" name=\"menuitem\">\n";
    
$varHtml .= "\t\t\t\t<input name=\"ID\" type=\"hidden\" value=\"" $arrForm['ID'] . "\" />\n";
    
$varHtml .= "\t\t\t\t" _CMN_TITLE ":<br />\n";
    
$varHtml .= "\t\t\t\t<input name=\"title\" type=\"text\" size=\"25\" maxlength=\"50\" value=\""
    
$varHtml .= $arrForm['title'];
    
$varHtml .= "\" /><br />\n";
    
$varHtml .= $arrForm['page'];
    
$varHtml .= "\t\t\t\t" _CMN_PUBLISH ":<br />\n";
    
$varHtml .= "\t\t\t\t<select name=\"publish\">\n";
    
$varHtml .= "\t\t\t\t\t<option value=\"yes\"";
    if(
$arrForm['publish'] == "yes")
    { 
        
$varHtml .= " selected";
    }
    
$varHtml .= ">" _CMN_YES "</option>\n";
    
$varHtml .= "\t\t\t\t\t<option value=\"no\"";
    if(
$arrForm['publish'] == "no")
    { 
        
$varHtml .= " selected";
    }
    
$varHtml .= ">" _CMN_NO "</option>\n";
    
$varHtml .= "\t\t\t\t</select><br />\n";
    
$varHtml .= "\t\t\t\t<input name=\"submit\" type=\"submit\" value=\"" $arrForm['submit'] . "\" />\n";
    
$varHtml .= "\t\t\t</form>\n";
    
    return 
$varHtml;
}


// --- functie bepalen --- \\
if(isset($_POST['submit']) && $_POST['submit'] == _CMN_CREATE || $_POST['submit'] == _CMN_EDIT)
{
    
$varComponentResult processForm();
}
else if(
fetchType() == "edit" && !fetchID())
{
    
redirect(cmsConfig_siteRoot 'cbs/?component=menuitem&type=list&msg=' _MSG_NO_ID);
}
else if(
fetchType() == "new")
{
    
$varComponentResult displayComponentResult(newForm());    
}
else if(
fetchType() == "edit")
{
    
$varComponentResult displayComponentResult(editForm());
}
?>


kan iemand mij wegwijs maken in een betere methode?

[ Bericht 16% gewijzigd door MuRKie op 24-01-2008 19:52:44 ]
  donderdag 24 januari 2008 @ 23:46:14 #235
67938 MuRKie
..warm as butters..
pi_56289579
Misbruik ik met de volgende toepassing van OOP het OOP principe of "mag" deze methode gewoon?

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
<?php
class MenuItem
{
    
protected $ID;
    
protected $title;
    
    function
__construct()
    {
        
    }
    
    function
setID($ID)
    {
        
$this->ID = $ID;
    }
    
    function
getID()
    {
        return
$this->ID;
    }
    
    function
setTitle($title)
    {
        
$this->title = $title;
    }
    
    function
getTitle()
    {
        return
$this->title;
    }
    
    
    
    function
Display()
    {
        
$this->setID('7');
        
$this->setTitle('Test met OOP?');
        
$html  = "ID    = " . $this->getID() . "\n";
        
$html .= "Title = " . $this->getTitle() . "\n";
        
        return
$html;
    }

}

$test = new MenuItem;
$varComponentResult = $test->Display();
?>
Dit dient puur als voorbeeld..

Maar is OOP zo ook goed te gebruiken? Dus 1 functie (Display()) die al het nodige binnen een class uitvoerd en het eind resultaat terug geeft? Dus dat je niet van buiten de class variabelen invoert en/of wijzigt? In mijn situatie haalt hij namelijk alle waarden uit een database en komt daar geen handeling van de gebruiker aan te pas..
Dat is namelijk de reden waardoor ik twijfel of ik OOP wel gebruik zoals het hoort..
pi_56290382
Ziet er keurig uit! Wat ik alleen persoonlijk als constructor zou doen:

1
2
3
4
5
6
7
8
<?php
    
function MenuItem($ID$title)
    {
        
$this->setID($ID);
        
$this->setTitle($title);
    }
  
?>


Zodat je bij het aanmaken van het object direct het ID en de Title meegeeft.
pi_56290599
ik zou alleen de constructor schrijven als __constructor in plaats van de naam van de class, dat kan alleen nog maar ivm backwardcompability met PHP4.
pi_56290618
Oeps! Dat is geen PHP4 backwardscompatibility (Scrabble?), maar een Java trekje.
pi_56292376
quote:
Op vrijdag 25 januari 2008 00:40 schreef Geqxon het volgende:
Oeps! Dat is geen PHP4 backwardscompatibility (Scrabble?), maar een Java trekje.
Hehe, ik haal die 2 ook wel eens door elkaar ja

Java
pi_56292504
En overigens, het is __construct. (zonder de 'or') op het einde.

In Java moet ik me nog een keer echt gaan verdiepen. Heb hier wel een boek liggen, maar daar staat weinig nuttigs in.
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')