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.quote:Op woensdag 23 januari 2008 16:18 schreef MuRKie het volgende:
[..]
OOP is voor mij nog een stapje te ver ben ik bang..
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?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.
1 2 3 | $output = array_merge($output, a_function_that_returns_an_array($input)); ?> |
zou wel moeten werken...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.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 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 zeggenquote: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?
1 |
1 |
1 |
1 |
1 2 | elseif(startmonth == 02){...} |
1 2 3 4 | $volgend_jaar = ???; if($opgehaalde_startjaar == $start_jaar){..} elseif($opgehaalde_startjaar == $volgend_jaar){...} |
1 |
Sorteren in de query op datum en vervolgens in het loopje kijken wanneer een nieuw jaar begint?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.
1 2 3 4 5 | { echo('nieuw jaar'); $current_year = $year; } |
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 queryquote:@ Farenji & CraZaay: Bedankt, ik heb het opgelost zoals Farenji aangaf en de benodigde delen eruit gehaald met:
Bedankt, deze had ik ook al bedachtquote: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.
Omdat ik geen andere manier wist waarmee ik de juiste gegevens kon verkrijgen...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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | - januari - februari - ... 2008 - januari - februari - ... 2009 - januari - februari - ... |
1 2 3 4 5 6 | 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] |
1 2 3 4 5 6 | 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] |
Hoe bedoel je dat?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
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 | $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> |
1 |
1 |
1 2 3 4 5 6 | $resultaat = mysql_query("SELECT email FROM gebruikers002"); while($rij = mysql_fetch_array($resultaat)){ $array[] = $rij['email'].','; } $adressenlijst = implode(",",$array); |
Moet die uitroepteken dan na de ^ daar staan? Want dat is toch NOT?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.
Die hoort er niet nee. Ik heb gewoon jouw code gecopy-pastequote:Op donderdag 24 januari 2008 18:36 schreef MuRKie het volgende:
[..]
Moet die uitroepteken dan na de ^ daar staan? Want dat is toch NOT?
OKquote:Op donderdag 24 januari 2008 18:48 schreef CraZaay het volgende:
[..]
Die hoort er niet nee. Ik heb gewoon jouw code gecopy-paste
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 | // 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()); } ?> |
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 | 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(); ?> |
Hehe, ik haal die 2 ook wel eens door elkaar jaquote:Op vrijdag 25 januari 2008 00:40 schreef Geqxon het volgende:
Oeps! Dat is geen PHP4 backwardscompatibility (Scrabble?), maar een Java trekje.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |