Dreamweaver MXquote:Op dinsdag 18 december 2007 19:29 schreef DaFrenk het volgende:
Zal vast al eens eerder aan bod zijn gekomen, maar welk programma gebruiken jullie om te coden? @ OS X gebruik ik Smultron. Fijn programma op zich. Maar wat gebruiken jullie in Windows? Gewoon een lichtgewicht editor die fijn werkt met kleurtjes en regelnummertjes enz.
Ik tik ook snel, maar maak daardoor juist foutenquote:Op dinsdag 18 december 2007 19:45 schreef super-muffin het volgende:
Als ik op mijn stage met Windows werk gebruik ik afwisselent Aptana & E TextEditor (lijkt heel sterk op TextMate, mijn favoriet op de Mac)
Dus ik zou E aanraden als je een lightweight en simpele texteditor zoekt.
Dreamweaver vind ik te bloated. Code complition heb ik niet nodig, ik tik zo snel
1 2 3 4 5 | $db = mysql_connect("localhost","root","***"); mysql_select_db("wt2", $db) or die ("No database selected"); mysql_query("INSERT INTO nieuws (nieuws_id, nieuws_titel, nieuws_inhoud, nieuws_datum) VALUES ('', 'sdsdf' 'sdf', 'asdasdasd')"); ?> |
1 2 3 | mysql_query("query hier") or die(mysql_error()); ?> |
ja, maar volgens mij werkt bovenstaande beterquote:Op dinsdag 18 december 2007 22:03 schreef colourAgga het volgende:
Kom je toch simpel zelf achter door even mysql_error() of mysql_errno() aan te roepen?
Zowel op m'n werk als thuis gebruik ik jEdit. En dan met een aantal handige plugins + alle kleuren apart aangepast. tvpquote:Op dinsdag 18 december 2007 19:29 schreef DaFrenk het volgende:
Zal vast al eens eerder aan bod zijn gekomen, maar welk programma gebruiken jullie om te coden? @ OS X gebruik ik Smultron. Fijn programma op zich. Maar wat gebruiken jullie in Windows? Gewoon een lichtgewicht editor die fijn werkt met kleurtjes en regelnummertjes enz.
Dat bedoelde ik met mijn post :p En het was ook een semi verkapte TVP.quote:Op dinsdag 18 december 2007 22:53 schreef PiRANiA het volgende:
[..]
ja, maar volgens mij werkt bovenstaande beter
slechte TVP
Anders kun je nog Notepad++ of Notepad 2 proberen, die zijn wel gratis.quote:Op dinsdag 18 december 2007 20:20 schreef DaFrenk het volgende:
Thanks voor de tips. Ga die E TextEditor eens proberen, al had ik liever een open-source of freeware alternatief Probeer toch zoveel mogelijk open-source te werken. Iemand daar nog een tipje voor?
Bij die laatste is het handig als je dan ook een datum toevoegd zodat je gelijk kan zien wanneer het druk is enz. Anders kan je net zo goed die eerste doen .quote:Op donderdag 20 december 2007 15:02 schreef Chandler het volgende:
Ik heb een vraagje over database normalisatie of hoe je dat ook wilt noemen.
Voor een x aantal sites wil ik IP adressen gaan opslaan voor statistieken, om te kijken hoevaak een bepaald IP adres langs komt en hoeveel views zo'n IP adres op zo'n site heeft.
Nu vraag ik mij af hoe ik dit het beste kan opslaan.
bv
1 tabel - IPS (id, site_id, ip, laatstehit, hits)
OF
2 tabellen
IPS - (id, ip)
IPsHIT (id, site_id, ip_id, laatstehit, hits)
Wat raden jullie aan?
Tweede mogelijkheidquote:Op donderdag 20 december 2007 15:02 schreef Chandler het volgende:
Ik heb een vraagje over database normalisatie of hoe je dat ook wilt noemen.
Voor een x aantal sites wil ik IP adressen gaan opslaan voor statistieken, om te kijken hoevaak een bepaald IP adres langs komt en hoeveel views zo'n IP adres op zo'n site heeft.
Nu vraag ik mij af hoe ik dit het beste kan opslaan.
bv
1 tabel - IPS (id, site_id, ip, laatstehit, hits)
OF
2 tabellen
IPS - (id, ip)
IPsHIT (id, site_id, ip_id, laatstehit, hits)
Wat raden jullie aan?
het gaat mogelijk om honderduizenden ip adressen!
Ik bedoel het ip In de tabel IPS die je voorstelt. Daar schiet je dus niets mee op, je verangt dan het ene id (ip) door het andere.quote:Op donderdag 20 december 2007 20:40 schreef Chandler het volgende:
Nee het IP adres is niet uniek, wel in combinatie met de site ID
Ik heb geen perl draaien... maar Windows moet toch wel in staat zijn er een mailtje uit te doen lijkt me?quote:Op zondag 23 december 2007 21:46 schreef DaFrenk het volgende:
Je kan eventueel ook via sendmail een mail sturen. Is een perl script.
dat klinkt heel logisch idd. ik ga dat vandaag eens proberen, thanks!quote:Op maandag 24 december 2007 02:50 schreef colourAgga het volgende:
Je kan een losse koppeltabel gebruiken met daarin twee foreign keys, eentje van de set en eentje van de track. Hierdoor kun je een enkele track aan meerdere sets hangen of een enkele set aan meerdere tracks etc.
Die tabel zou dus een set_id en een track_id bevatten en that's it, even wat InnoDB magic erop los laten en het is klaar om te gaan!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | array('file' => '/catch', 'param' => '/videos/page/', 'first' => 1, 'last' => floor($maxpages / 5)-1, 'step' => 1, 'max' => (floor($maxpages / 5) > 5 ? 5 : floor($maxpages / 5)-1)), array('first' => 'eerste', 'prev' => 'vorige', 'currl' => '<strong>', 'currr' => '</strong>', 'next' => 'volgende', 'last' => 'laatste', 'spacer' => ' ')); |
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 | error_reporting(E_ALL); $pointers = array('first' => 'eerste', 'prev' => 'vorige', 'currl' => '<strong style="color: blue;">', 'currr' => '</strong>', 'next' => 'volgende', 'last' => 'laatste', 'spacer' => ' '); $pointer1 = array('first' => '<', 'prev' => '<<', 'currl' => '<strong style="color: green;">', 'currr' => '</strong>', 'next' => '>>', 'last' => '>>', 'spacer' => '<div style="display: inline; width: 15px; border-top: 1px solid black;"> </div>'); function pointer($current, $settings = array(), $pointers = array()) { $tmp = ""; // check for existence // these variables need to be set! else return false; if (!isSet($settings['file'] )) { return "pointer::file_not_specified";} if (!isSet($settings['first'])) { return "pointer::first_not_specified";} if (!isSet($settings['last'])) { return "pointer::last_not_specified";} // if no settings found, use current. if (!isSet($settings['param'])) { $settings['param'] = "?";} if (!isSet($settings['step'])) { $settings['step'] = 1;} if (!isSet($settings['max'])) { $settings['max'] = 5;} // no pointers found, create default pointers. if (!isSet($pointers['first'])) { $pointers['first'] = "first";} if (!isSet($pointers['prev'])) { $pointers['prev'] = "previous";} if (!isSet($pointers['currl'])) { $pointers['currl'] = "<strong>";} if (!isSet($pointers['currr'])) { $pointers['currr'] = "</strong>";} if (!isSet($pointers['next'])) { $pointers['next'] = "next";} if (!isSet($pointers['last'])) { $pointers['last'] = "last";} if (!isSet($pointers['spacer'])) { $pointers['spacer'] = " ";} // if first is lower then 1 first is one. if ($settings['first'] < 1) { $settings['first'] = 1; } // create start, mid and end variables $point_first = $settings['first']; $point_mid = ceil($current / $settings['step']); $point_last = ceil($settings['last'] / $settings['step']); // is a back to first page pointer needed? if (isSet($pointers['first'])) { if (($point_mid -2) > 0) { // first pointer wanted; $tmp .= '<a href="' . $settings['file'] . $settings['param'] . $point_first . '" TITLE="First page">' . $pointers['first'] . '</a>'; $tmp .= $pointers['spacer']; } } // is a previous page pointer needed? if (isSet($pointers['prev'])) { if (($point_mid -1) > 0) { // previous pointer wanted; $tmp .= '<a href="' . $settings['file'] . $settings['param'] . ($point_mid -1) . '" TITLE="Previous page">' . $pointers['prev'] . '</a>'; $tmp .= $pointers['spacer']; } } // select number of items before and after current page $pos = floor(($settings['max'] -1) /2); // if pointer is close to the beginning of pages if (($point_mid - $pos) < 1) { // first peace (from 12345) for ($x = 1; $x < ($settings['max'])+1; $x++) { if ($x == $point_mid) { // current page $tmp .= '<a href="' . $settings['file'] . $settings['param'] . $x . '" TITLE="To page ' . $x . '">' . $pointers['currl'] . $x . $pointers['currr'] . '</a>'; $tmp .= $pointers['spacer']; } else { $tmp .= '<a href="' . $settings['file'] . $settings['param'] . $x . '" TITLE="To page ' . $x . '">' . $x . '</a>'; $tmp .= $pointers['spacer']; } } } // pointer close to the end of pages elseif (($point_mid + $pos) > $point_last) { // last peace (from 11,12,13,14,15 (to last)) for ($x = ($point_last - $settings['max'])+1; $x <= $point_last; $x++) { if ($x == $point_mid) { // current page $tmp .= '<a href="' . $settings['file'] . $settings['param'] . $x . '" TITLE="To page ' . $x . '">' . $pointers['currl'] . $x . $pointers['currr'] . '</a>'; $tmp .= $pointers['spacer']; } else { $tmp .= '<a href="' . $settings['file'] . $settings['param'] . $x . '" TITLE="To page ' . $x . '">' . $x . '</a>'; $tmp .= $pointers['spacer']; } } } // pointer is somewhere between... else { // mid peace (4,5) before current page for ($x = $point_mid - $pos; $x < $point_mid; $x++) { $tmp .= '<a href="' . $settings['file'] . $settings['param'] . $x . '" TITLE="To page ' . $x . '">' . $x . '</a>'; $tmp .= $pointers['spacer']; } // current page $tmp .= '<a href="' . $settings['file'] . $settings['param'] . $x . '" TITLE="To page ' . $x . '">' . $pointers['currl'] . $x . $pointers['currr'] . '</a>'; $tmp .= $pointers['spacer']; // mid peace (7,8) after current page. for ($x = $point_mid +1; $x < ($point_mid + $pos)+1; $x++) { $tmp .= '<a href="' . $settings['file'] . $settings['param'] . $x . '" TITLE="To page ' . $x . '">' . $x . '</a>'; $tmp .= $pointers['spacer']; } } // if there is a next page if (isSet($pointers['next'])) { if (($point_mid +1) < $point_last) { // next pointer wanted; $tmp .= '<a href="' . $settings['file'] . $settings['param'] . ($point_mid +1) . '" TITLE="Next page">' . $pointers['next'] . '</a>'; $tmp .= $pointers['spacer']; } } // if current page is lower then last-2 then show last. if (isSet($pointers['last'])) { if (($point_mid +2) < $point_last) { // last pointer wanted; $tmp .= '<a href="' . $settings['file'] . $settings['param'] . $point_last . '" TITLE="Last page">' . $pointers['last'] . '</a>'; $tmp .= $pointers['spacer']; } } return $tmp . "<br /><br />"; } // pointer(, $settings, $pointers); /* echo pointer(10, $settings, $pointers); echo pointer(50, $settings, $pointer1); echo pointer(250, $settings, $pointer1); echo pointer(255, $settings, $pointers); */ ?> |
Ik zie zo snel geen fout in de functionaliteit, maar ik zou in plaats van >> voor knopjes > gebruiken en < voor <quote:Op maandag 24 december 2007 13:07 schreef Chandler het volgende:
Ik heb een vraag, voor een kleine website wil ik pagina's gaan inbouwen met de volgende (zelf geschreven code) echter zit er een fout in.. maar kan deze niet vinden.
Bv ik heb 15 items, als ik deze code start met de volgende statement
[ code verwijderd ]
en maxpages = 15 dan krijg ik op de eerste pagina (zonder query) het volgende te zien.
Pagina's: 1 2 volgende
Als ik op pagina 2 klik krijg ik het volgende te zien.
Pagina's: 1
Ik snap niet waar de fout in zit en of wat ik fout doe of heb ik gewoon een sukkie script geschreven? (lange geleden )
[ code verwijderd ]
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 | function pages($currentPage = 0, $totalItems = 0, $itemsPerPage = 0, $maxPages = 10, $link) { /* currentPage is the page wich we are on yet totalItems are the total items to show / itemsPerPage = pages itemsPerPage are the numbe of items per page maxPages are the max num of pages to show */ $returnStr = ""; // start init if (floor($totalItems / $itemsPerPage) < 1) { // no pages available return false; } $pages = floor($totalItems / $itemsPerPage); // if current page is bigger then total pages? if ($currentPage > $pages) { // if current page is bugger then max pages, currentpage is maxpage $currentPage = $pages; } /* show first, prevoius page */ if ($currentPage > 1) { $returnStr .= '<a href="' . $link['link'] . '">first</a> '; $returnStr .= '<a href="' . $link['link'] . str_replace("%s", $currentPage -1, $link['query']) . '">previous</a> '; } elseif ($currentPage > 0) { $returnStr .= '<a href="' . $link['link'] . '">first</a> '; } /* middle part */ $rPage = floor(($maxPages-1) /2); // if page is between total pages if ($currentPage - $rPage > 0 && $currentPage + $rPage < $pages) { $first = $currentPage - $rPage; $last = $currentPage + $rPage; } // if page is one of the first pages elseif ($currentPage - $rPage <= 0) { // from 0 $first = 1; $last = $maxPages; } // if page is one of the last pages else { // from maxpages $first = ($pages - $maxPages) +1; $last = $pages; } // if last is bigger then total pages if ($last > $pages) { $last = $pages; } /* middle pages */ for ($x = $first; $x < $last+1; $x++) { if ($currentPage == $x) { $returnStr .= '<a href="' . $link['link'] . str_replace("%s", $x, $link['query']) . '">' . str_replace("%s", $x, $link['current']) . '</a> '; } else { $returnStr .= '<a href="' . $link['link'] . str_replace("%s", $x, $link['query']) . '">' . $x . '</a> '; } } /* end part */ if ($pages - $currentPage > 1) { $returnStr .= '<a href="' . $link['link'] . str_replace("%s", $currentPage +1, $link['query']) . '">next</a> '; $returnStr .= '<a href="' . $link['link'] . str_replace("%s", $pages, $link['query']) . '">last</a> '; } elseif ($pages - $currentPage > 0) { $returnStr .= '<a href="' . $link['link'] . str_replace("%s", $pages, $link['query']) . '">last</a> '; } return $returnStr; } /* test pogingen, lekker random */ $linkArr = array("link" => '/pages.php', "query" => '?from=%s', "current" => '<strong style="color: red;">%s</strong>'); $totalItems = rand(0, 250); $itemsPerPage = rand(4, 10); $maxPages = rand(3, 10); /* $totalItems = 10; $itemsPerPage = 7; $maxPages = 9; */ echo "<h2> totalItems $totalItems itemsPerPage $itemsPerPage maxPages $maxPages</h2>"; for ($currentPage = 0; $currentPage < floor($totalItems / $itemsPerPage)+1; $currentPage++) { echo pages($currentPage, $totalItems, $itemsPerPage, $maxPages, $linkArr); echo '<hr>'; } ?> |
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 | class pagePointers { var $titleFirst = "first"; var $titlePrevious = "previous"; var $titleNext = "next"; var $titleLast = "last"; function pointers($in) { $this->pointerLink = $in['link']; $this->pointerQuery = $in['query']; $this->pointerCurrent = $in['current']; } function init() { $this->returnStr = ''; // start init if (floor($this->totalItems / $this->itemsPerPage) < 1) { // no pages available return false; } $this->pages = floor($this->totalItems / $this->itemsPerPage); // if current page is bigger then total pages? if ($this->currentPage > $this->pages) { // if current page is bugger then max pages, currentpage is maxpage $this->currentPage = $this->pages; } /* middle part */ $this->rPage = floor(($this->maxPages -1) /2); // if page is between total pages if ($this->currentPage - $this->rPage > 0 && $this->currentPage + $this->rPage < $this->pages) { $this->first = $this->currentPage - $this->rPage; $this->last = $this->currentPage + $this->rPage; } // if page is one of the first pages elseif ($this->currentPage - $this->rPage <= 0) { // from 0 $this->first = 1; $this->last = $this->maxPages; } // if page is one of the last pages else { // from maxpages $this->first = ($this->pages - $this->maxPages) +1; $this->last = $this->pages; } // if last is bigger then total pages if ($this->last > $this->pages) { $this->last = $this->pages; } } function first() { /* show first, prevoius page */ if ($this->currentPage > 1) { $this->returnStr .= '<a href="' . $this->pointerLink . '">' . $this->titleFirst . '</a> '; $this->returnStr .= '<a href="' . $this->pointerLink . str_replace("%s", ($this->currentPage -1), $this->pointerQuery) . '">' . $this->titlePrevious . '</a> '; } elseif ($this->currentPage > 0) { $this->returnStr .= '<a href="' . $this->pointerLink . '">' . $this->titleFirst . '</a> '; } } function last() { /* end part */ if (($this->pages - $this->currentPage) > 1) { $this->returnStr .= '<a href="' . $this->pointerLink . str_replace("%s", $this->currentPage +1, $this->pointerQuery) . '">' . $this->titleNext . '</a> '; $this->returnStr .= '<a href="' . $this->pointerLink . str_replace("%s", $this->pages, $this->pointerQuery) . '">' . $this->titleLast . '</a> '; } elseif ($this->pages - $this->currentPage > 0) { $this->returnStr .= '<a href="' . $this->pointerLink . str_replace("%s", $this->pages, $this->pointerQuery) . '">' . $this->titleLast . '</a> '; } } function middle() { /* middle pages */ for ($x = $this->first; $x < ($this->last +1); $x++) { if ($this->currentPage == $x) { $this->returnStr .= '<a href="' . $this->pointerLink . str_replace("%s", $x, $this->pointerQuery) . '">' . str_replace("%s", $x, $this->pointerCurrent) . '</a> '; } else { $this->returnStr .= '<a href="' . $this->pointerLink . str_replace("%s", $x, $this->pointerQuery) . '">' . $x . '</a> '; } } } function getPages($currentPage) { $this->currentPage = $currentPage; $this->init(); $this->first(); $this->middle(); $this->last(); return $this->returnStr; } } $p = new pagePointers; $p->pointers(array("link" => '/pages.php', "query" => '?from=%s', "current" => '<strong style="color: red;">%s</strong>')); $p->totalItems = rand(0, 250); $p->itemsPerPage = rand(4, 10); $p->maxPages = rand(3, 10); $p->titleFirst = "eerste"; $p->titlePrevious = "vorige"; $p->titleNext = "volgende"; $p->titleLast = "laatste"; echo "<h2> totalItems $p->totalItems itemsPerPage $p->itemsPerPage maxPages $p->maxPages</h2>"; for ($currentPage = 0; $currentPage < floor($p->totalItems / $p->itemsPerPage)+1; $currentPage++) { echo $p->getPages($currentPage); echo '<hr>' . "\r\n\r\n\r\n"; } ?> |
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 | $itemcount = 100; $itemspage = 10; $pagecount = ceil( $itemcount / $itemspage ); if( !isset( $_GET[ 'page_id' ] ) OR !is_numeric( $_GET[ 'page_id' ] ) ) { $page = 0; } elseif( isset( $_GET[ 'page_id' ] ) AND is_numeric( $_GET[ 'page_id' ] ) ) { $page = $_GET[ 'page_id' ]; } for( $i = 0; $i <= $pagecount; $i++ ) { if( $i == 0 ) { print 'Eerste pagina'; } elseif( $i == $pagecount ) { print 'Laatste pagina'; } else { print 'Pagina' . $i; } } ?> |
Ja daar kwam ik al achter toen ik het in mijn project ging verwerkenquote:Op donderdag 27 december 2007 01:35 schreef colourAgga het volgende:
Even zonder erop in te gaan of echt uitgebreid je code te lezen, eventueel iets met kleiner dan of kleiner of gelijk aan. Dus < of <= en > of =>. Als dat het niet is gaat er ergens iets mis met je floor, en zul je daar een andere methode voor pakken.
Arraytje? dat zie ik niet terug komen in je code, maar mijn manier kan ook het aantal pagina's achter elkaar instellen.quote:Overigens zou ik gewoon een arraytje met pagina's maken en kijken of de key bestaat van de vorige pagina, stuk minder gehannes dan zo'n eindeloze lap code.
Tja jammer dat FOK geen minimalize button voor codes heeft héquote:Oh en over die lange lappen code, ik moet eindeloos scrollen man
Leuk dat je is_int gebruikt, ik check altijd met is_numericquote:Even een kort voorbeeld zonder al te uitgebreid te gaan.
[ code verwijderd ]
Daar kwam ik ook achter idd, floor is naar beneden en ceil is omhoogquote:ceil is beter omdat je ander items niet gaat laten zien (die vallen eraf door de floor).
Wat dacht je van een pastebin?quote:Op donderdag 27 december 2007 08:48 schreef Chandler het volgende:
[..]
Tja jammer dat FOK geen minimalize button voor codes heeft hé
Dan doe jij het goed en doet colourAgga het fout is_int() met een string als input (in dit geval uit $_GET) geeft altijd false!quote:Op donderdag 27 december 2007 08:48 schreef Chandler het volgende:
Leuk dat je is_int gebruikt, ik check altijd met is_numeric
wat dacht je van apieceofcode.netquote:Op donderdag 27 december 2007 08:52 schreef WyriHaximus het volgende:
[..]
Wat dacht je van een pastebin?
Damn, doe ik nog eens iets goedquote:Op donderdag 27 december 2007 11:03 schreef SuperRembo het volgende:
[quote]Op donderdag 27 december 2007 08:48 schreef Chandler het volgende:
Leuk dat je is_int gebruikt, ik check altijd met is_numeric
/quote]
Dan doe jij het goed en doet colourAgga het fout is_int() met een string als input (in dit geval uit $_GET) geeft altijd false!
Ja bijvoorbeeld .quote:Op donderdag 27 december 2007 11:20 schreef Chandler het volgende:
[..]
wat dacht je van apieceofcode.net
SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.of anders een quote? (want die heeft tegenwoordig een max height)quote:
1 $foo = "bar"; Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
quote:Op vrijdag 28 december 2007 00:29 schreef SuperRembo het volgende:
Werkt een spoiler-tag om een code-tag heen?Zo te zien wel alleen hebben ze een max width . Ziet er niet echt netjes uit zo.SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.of anders een quote? (want die heeft tegenwoordig een max height)
[..]phluphy for president!
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 | function CheckPostData() { $ip = $_SERVER['REMOTE_ADDR']; $ip = ip2long($ip); $data = $_POST['data']; $date = date('y-m-j H:i:s'); Global $mysql_tbn; if(($data != "Hier je bericht....." && $data != "") && (is_string($data))) { InsertQuery($ip, $data, $date); } } function InsertQuery($ip, $data, $date) { Global $mysql_tbn; $sql_insert = "INSERT INTO " . $mysql_tbn . " SET "; $sql_insert .= "ip = " . $ip; $sql_insert .= ", data = '" . mysql_real_escape_string($data) . "'"; $sql_insert .= ", date = '" . $date . "'"; $result = mysql_query($sql_insert); header("Location: " . $_SERVER['PHP_SELF']); exit; } ?> |
Ik kom er nog steeds niet compleet uit....quote:Op maandag 17 december 2007 16:06 schreef Mordreth het volgende:
[..]
Deze is simpel aan te passen :
[ code verwijderd ]
1 |
En Apache parsed de "<?" niet als PHP?quote:Op maandag 31 december 2007 11:34 schreef Xcalibur het volgende:
Ik heb het volgende probleem:
Ik ben bezig een Google Sitemap XML bestand te genereren. Lokaal (Windows XP, IIS) werkt dit allemaal, en als ik het bestand in m'n browser open krijg ik netjes een XML tree te zien. Nu upload ik het naar mijn server (Linux, Apache) en daar krijg ik een blanco bestand.
Ik ben er achter gekomen dat dit veroorzaakt wordt door de eerste regel van het XML bestand, namelijk:
[ code verwijderd ]
Als ik deze regel weghaal krijg ik wel output te zien, maar is het (natuurlijk) geen XML meer...
Ik heb werkelijk waar géén idee waarom dit is of wat ik er aan zou moeten doen
Scherp.... dat zou het wel eens kunnen zijn.quote:Op maandag 31 december 2007 11:49 schreef Geqxon het volgende:
En Apache parsed de "<?" niet als PHP?
quote:Tells whether the short form (<? ?> ) of PHP's open tag should be allowed. If you want to use PHP in combination with XML, you can disable this option in order to use <?xml ?> inline. Otherwise, you can print it with PHP, for example: <?php echo '<?xml version="1.0"'; ?> . Also if disabled, you must use the long form of the PHP open tag (<?php ?> ).
Mocht je het niet aan kunnen passen:quote:Op maandag 31 december 2007 11:50 schreef Xcalibur het volgende:
[..]
Scherp.... dat zou het wel eens kunnen zijn.
Lokaal staat short open tags uit, online staat het aan.... eens kijken of ik die kan aanpassen :)
1 2 3 | echo "<?xml ............ ": ?> |
En dat lukt mij inmiddels. Het blijft echter gestoei met de weeknummers. Het is op het moment Week 1 van 2007, en dat is waar het ook gelijk goed fout gaat in het script. Ik ga maar weer even worstelen.quote:Op maandag 31 december 2007 11:30 schreef Geqxon het volgende:
[..]
Ik kom er nog steeds niet compleet uit....
Wat ik zoek is een functie die mij de timestamp van de eerste dag van weeknummer X in jaar Y geeft. Ik heb er net weer mee zitten te stoeien, maar ik krijg geen algoritme uit mijn pols geschud die dit voor elkaar krijgt op een manier dat het ook met de jaarwisseling goed gaat.
1 |
quote:Using extended regular expressions, you can specify arbitrary pattern occurrence counts using a more verbose syntax than the question-mark, plus-sign, and asterisk quantifiers. The curly-braces ("{" and "}") can surround a precise count of how many occurrences you are looking for.
The most general form of the curly-brace quantification uses two range arguments (the first must be no larger than the second, and both must be non-negative integers). The occurrence count is specified this way to fall between the minimum and maximum indicated (inclusive). As shorthand, either argument may be left empty: if so the minimum/maximum is specified as zero/infinity, respectively. If only one argument is used (with no comma in there), exactly that number of occurrences are matched.
http://gnosis.cx/publish/programming/regular_expressions.html
Het is week 1 van 2008. En met wat code om de eerste dag van die week te bepalen kom ik op 31 december 2007.quote:Op maandag 31 december 2007 12:30 schreef Geqxon het volgende:
[..]
En dat lukt mij inmiddels. Het blijft echter gestoei met de weeknummers. Het is op het moment Week 1 van 2007, en dat is waar het ook gelijk goed fout gaat in het script. Ik ga maar weer even worstelen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function firstDayOfWeek($week, $year) { $jan1st = mktime(0,0,0,1,1,$year); if(date('W', $jan1st) == 1) { //Correctie toepassen, alleen voor als 1 januari in week 1 zit // En 1 januari kan soms ook bij week 53 of 52 worden gerekend. $week--; } $weekday = date('N', $jan1st) - 1; //Dag 1 is maandag return strtotime('+'.$week.' weeks -'.$weekday.' days', $jan1st); } echo date('Y-m-d', firstDayOfWeek(1,2008)); //Levert 2007-12-31 ?> |
Dat klopt, en als "date('W-Y')" keurig 01-2008 zou tonen dan zou mijn pagina perfect werken, want ook het algoritme dat ik gebruik geeft dan 31 december weer. Helaas, hij geeft nu 01-2007 weer.quote:Op maandag 31 december 2007 14:48 schreef Light het volgende:
[..]
Het is week 1 van 2008. En met wat code om de eerste dag van die week te bepalen kom ik op 31 december 2007.
Edit - de code:
[ code verwijderd ]
Met date("W o") krijg je wel het ISO weeknummer en het ISO jaar. Nadeel is dat je PHP 5.1.0 of nieuwer nodig hebt.quote:Op maandag 31 december 2007 15:04 schreef Geqxon het volgende:
[..]
Dat klopt, en als "date('W-Y')" keurig 01-2008 zou tonen dan zou mijn pagina perfect werken, want ook het algoritme dat ik gebruik geeft dan 31 december weer. Helaas, hij geeft nu 01-2007 weer.
Het is jammer dat de date & time functies van PHP wat rommelig zijn, want "strftime("%W-%Y")" geeft 53-2007 weer, aangezien die weer geen ISO weeknummer geeft.
Een IP is wel een string, bestaat uit getallen met puntjes.quote:Op maandag 31 december 2007 10:32 schreef Tarabass het volgende:
Fix-List:
Variable (volgens mij) nu global gemaakt.
Escape bij declaratie weggehaald en in de query pas meegegeven
If-statements verkort naar 1 if-statement
ID-integer uit de query gesloopt, ook geen idee waarom ik hem er bij had gezet (en dan ook nog als string).
exit; comment weggehaald.
Waarom moet ik de variable $ip escapen in de query? Dit is een integer, en geen string.
$date is een datetime. Waarom vraag je dat?
A List Apart wordt doorgenomen, dank voor de link.
Code na aanpassingen:
[ code verwijderd ]
Kijk voor de grap eens goed naar zijn codequote:Op maandag 31 december 2007 15:29 schreef colourAgga het volgende:
[..]
Een IP is wel een string, bestaat uit getallen met puntjes.
Kijk voor de grap ook eens naar: http://nl3.php.net/manual/en/function.ip2long.php
Dat gebruik ik ook in m'n code. Ik haal hem ook op met long2ipquote:Op maandag 31 december 2007 15:29 schreef colourAgga het volgende:
[..]
Een IP is wel een string, bestaat uit getallen met puntjes.
Kijk voor de grap ook eens naar: http://nl3.php.net/manual/en/function.ip2long.php
Die server_admin variabele bevat de waarde uit de apache config ServerAdmin. CLI gebruikt niet de SAPI en die variabele hoort gewoon leeg te zijn in CLI.quote:Op maandag 31 december 2007 14:43 schreef mschol het volgende:
iemand een idee of ik de $_SERVER['SERVER_ADMIN'] kan benaderen met php in CLI?
of is dat echt helemaal onmogelijk en zal ik het moeten hardcoden?
Wat opmerkingen:quote:Op maandag 31 december 2007 10:32 schreef Tarabass het volgende:
Code na aanpassingen:
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<?php
function CheckPostData() {
$ip = $_SERVER['REMOTE_ADDR'];
$ip = ip2long($ip);
$data = $_POST['data'];
$date = date('y-m-j H:i:s');
Global $mysql_tbn;
if(($data != "Hier je bericht....." && $data != "") && (is_string($data))) {
InsertQuery($ip, $data, $date);
}
}
function InsertQuery($ip, $data, $date) {
Global $mysql_tbn;
$sql_insert = "INSERT INTO " . $mysql_tbn . " SET ";
$sql_insert .= "ip = " . $ip;
$sql_insert .= ", data = '" . mysql_real_escape_string($data) . "'";
$sql_insert .= ", date = '" . $date . "'";
$result = mysql_query($sql_insert);
header("Location: " . $_SERVER['PHP_SELF']);
exit;
}
?>
1 2 3 | $sql_insert = sprintf("INSERT INTO %s SET date='%s',ip=%d, data=' %s' ",$mysql_tbn,$date,$ip,mysql_real_escape_string($data)); ?> |
Dat kan mooier :Pquote:Op maandag 31 december 2007 14:48 schreef Light het volgende:
[..]
Het is week 1 van 2008. En met wat code om de eerste dag van die week te bepalen kom ik op 31 december 2007.
Edit - de code:
[ code verwijderd ]
1 2 3 4 5 6 | { $jan4th = mktime(0, 0, 0, 1, 4, $year); $weekday = date('N', $jan4th) + 6; return strtotime("+$week weeks -$weekday days", $jan4th); } |
1 2 3 4 5 6 7 8 9 | function StartOfWeek($year, $week) { $Jan1 = mktime(1,1,1,1,1,$year); $MondayOffset = (11-date('w',$Jan1))%7-3; $desiredMonday = strtotime(($week-1) . ' weeks '.$MondayOffset.' days', $Jan1); return $desiredMonday; } ?> |
True, rommelig van me maar die had ik laten staan na aanpassingen van de vorige keer (gaf hem toen mee naar de insertquery)quote:Op maandag 31 december 2007 18:55 schreef smesjz het volgende:
* Global $mysql_tbn; heb je niet nodig in CheckPostData
Dit begrijp ik nietquote:* is_string geeft ook true als de invoer ($data) leeg is en dus overbodig.
Eens. Is ook niet de manier die ik nu veel gebruik, inderdaad omdat het zo vervelend lezen is.quote:* De opbouw van $sql_insert vind ik vervelend lezen, gebruik OF een prepared statement of iets als sprintf:
1 2 3 | $sql_insert = "INSERT INTO " . $mysql_tbn . " (ip, data, date) VALUES ('$ip', '" . mysql_real_escape_string($data) . "', '$date')"; ?> |
Is wel netter, maar had het even snel gebouwd, om de veilig te leren en te testen. Beetje zonde van de tijd dus.quote:* Waarom geen else clause bij if ($data blabla) ?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | function CheckPostData() { $ip = $_SERVER['REMOTE_ADDR']; $ip = ip2long($ip); $data = $_POST['data']; $data = trim($data); $date = date('y-m-j H:i:s'); if(($data != "Hier je bericht....." && $data != "") && (is_string($data))) { InsertQuery($ip, $data, $date); } } function InsertQuery($ip, $data, $date) { Global $mysql_tbn; $sql_insert = "INSERT INTO " . $mysql_tbn . " (ip, data, date) VALUES ('$ip', '" . mysql_real_escape_string($data) . "', '$date')"; $sql_insert = mysql_query($sql_insert); header("Location: " . $_SERVER['PHP_SELF']); exit; } ?> |
Je had quotjes om $ip staan, dus ik ging er vanuit dat het een string was. Als $ip een int is dan hoef je inderdaad niet te escapen. Waarom zet je het ip om naar een int? Als dat alleen is om 'm in de db te zetten, dan is het logischer om ip2long dicht bij de sql, dus in InsertQuery() te zetten.quote:Op maandag 31 december 2007 20:24 schreef Tarabass het volgende:
@SuperRembo
Waarom moet ik de variable $ip escapen in de query? Dit is een integer, en geen string.
Je insert dus eigenlijk een string in een datetime veld. Blijkbaar doet MySQL daar niet zo moeilijk over (MS SqlServer bijvoorbeeld zou 't niet pikken). Je zou ook de MySQL functie now() kunnen gebruiken als je de huidige tijd wil inserten.quote:$date is een datetime. Waarom vraag je dat?
Gewoon geen tekst in een veld zetten die je niet in je db wil hebben. Gewoon een label voor het veld zetten.quote:Jaja, gezien. Dubbele spatie Hoe kan ik die spaties mooier opschonen?
ik had eigenlijk echt server_admin adress nodig maar ik heb het maar gehardcode, script genereert nu geen index warnings meer en daar ging het me om (script zelf werkte vlekkeloos alleen gaf hij dus elke keer index warnings, en was te lui om het uittezoeken..quote:Op maandag 31 december 2007 18:37 schreef smesjz het volgende:
[..]
Die server_admin variabele bevat de waarde uit de apache config ServerAdmin. CLI gebruikt niet de SAPI en die variabele hoort gewoon leeg te zijn in CLI.
En ServerAdmin is nou niet iets waar je blindelings op moet vertrouwen.
Bij phpinfo() (of php -i) zie je welke variabelen je tot je beschikking hebt, misschien heb je daar wat aan?
Je hebt:quote:Op maandag 31 december 2007 20:24 schreef Tarabass het volgende:
Zou je dat uit kunnen leggen? Het is toch een 'and' en de string moet dan toch voldoen aan alle drie?
1 2 3 4 5 | if(($data != "Hier je bericht....." && $data != "") && (is_string($data))) { InsertQuery($ip, $data, $date); } ?> |
Nee,quote:Op dinsdag 1 januari 2008 11:05 schreef smesjz het volgende:
[..]
Dus dit is altijd false:
if ($_POST['abc'] == 1234)
[...]
Je hebt gelijk, my bad.quote:Op dinsdag 1 januari 2008 12:39 schreef SuperRembo het volgende:
[..]
Nee,
"1234" == 1234 geeft true
"1234" === 1234 geeft false
Ik zelf werk altijd met timestamps, al zweren andere mensen weer aan MySQL data / datums, omdat je dan in de query zelf berekeningen uit kan voeren. Persoonlijke voorkeur.quote:Op dinsdag 1 januari 2008 15:49 schreef Dzy het volgende:
Ik word helemaal gestoord van met data werken met PHP en MySQL. Kan iemand me even kort uitleggen hoe je dit nu het beste aanpakt? Ik moet het elke keer weer uitzoeken en telkens doe ik het weer anders, is niet echt handig met aanpassen.
Fields voor je database: TIMEDATE ?
Welke functies gebruiken in php? date()?
Queries in MySQL voor bv de laatste week, welke functies?
Ik kom er nu alweer niet uit -_-
Het ligt er een beetje aan waar je de datum voor nodig hebt. Voor data voor 01-01-1970 is een timestamp niet zo geschikt.quote:Op dinsdag 1 januari 2008 15:52 schreef Geqxon het volgende:
[..]
Ik zelf werk altijd met timestamps, al zweren andere mensen weer aan MySQL data / datums, omdat je dan in de query zelf berekeningen uit kan voeren. Persoonlijke voorkeur.
Met functies als date() kun je van een timestamp weer een fatsoenlijk leesbare datum maken.
Timestamp: Het aantal seconden tussen 01-01-1970 en de datum die je bedoeld. Dat is in MySQL en PHP een simpele integer.
Negatieve timestamp?quote:Op dinsdag 1 januari 2008 16:31 schreef Light het volgende:
[..]
Het ligt er een beetje aan waar je de datum voor nodig hebt. Voor data voor 01-01-1970 is een timestamp niet zo geschikt.
quote:The valid range of a timestamp is typically from Fri, 13 Dec 1901 20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT. (These are the dates that correspond to the minimum and maximum values for a 32-bit signed integer). However, before PHP 5.1.0 this range was limited from 01-01-1970 to 19-01-2038 on some systems (e.g. Windows).
PHP heeft sinds 5.1 een DateTime klasse. Nogal slecht gedocumenteerd en 't biedt niet écht veel functionaliteit maar 't werkt wel goed voor tijdzones en tijdsaanpassingen . Zoals bijvoorbeeld.quote:Op dinsdag 1 januari 2008 17:14 schreef Geqxon het volgende:
Ik durf het haast niet te zeggen, maar een tof Date object zou niet verkeerd zijn.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | // Tijd in UTC (als je geen windowssysteem gebruikt en je je klok goed hebt ingesteld) $timestamp = '@'. time(); // De locale tijdzone ... $localTimeZone = new DateTimeZone('Europe/Amsterdam'); // ... en een andere $newyorkTimeZone = new DateTimeZone('EST'); // Maak een date object aan voor de huidige (UTC) tijd $dateTime = new DateTime($timestamp); // Schuif de datum door naar de volgende ijstijd $dateTime->modify('+10000 years -2 weeks'); // Format de date met binnen verschillende tijdzones echo 'UTC : ' . $dateTime->format(DATE_RFC2822) . "\n"; $dateTime->setTimezone($localTimeZone); echo 'Local time : ' . $dateTime->format(DATE_RFC2822) . "\n"; $dateTime->setTimezone($newyorkTimeZone); echo 'New York time : ' . $dateTime->format(DATE_RFC2822); ?> |
Ik zou beginnen bij www.php.net, dan zie je dat Dreamweaver niet echt handig isquote:Op woensdag 2 januari 2008 00:50 schreef Agiath het volgende:
Ik wil een simpele website maken waar bepaalde mensen rechten krijgen om zelf dingen toe te voegen in een blog. Soort van multi blog dus.
Ik ben redelijk handig met computers maar van site's maken weet ik nog maar weinig.
Heeft PHP bijvoorbeeld nou te maken met dit soort multi-upload dingetjes?
En wat voor software kan ik het beste gebruiken? Dreamweaver?
hmm, DW is, imho, juist een van de beste programma's voor php.quote:Op woensdag 2 januari 2008 10:11 schreef Chandler het volgende:
[..]
Ik zou beginnen bij www.php.net, dan zie je dat Dreamweaver niet echt handig is
Waarom zou je dat zien op PHP.net?quote:Op woensdag 2 januari 2008 10:11 schreef Chandler het volgende:
[..]
Ik zou beginnen bij www.php.net, dan zie je dat Dreamweaver niet echt handig is
Omdat ik aanneem dat ze weten welke editors het beste met hun scripting taal omgaan?quote:Op woensdag 2 januari 2008 11:45 schreef super-muffin het volgende:
[..]
Waarom zou je dat zien op PHP.net?
Hm, ben ik het niet met je eens. Het verschilt van persoon tot persoon, dus je kunt het beste zelf een paar programma's uitproberen.quote:Op woensdag 2 januari 2008 15:02 schreef Chandler het volgende:
[..]
Omdat ik aanneem dat ze weten welke editors het beste met hun scripting taal omgaan?
Dat is meer iets van HTML, maar met het attribuut tabindex.quote:Verder even offtopic vraagje; weet iemand hoe je kunt instellen naar welk veld je gaat als je op tab drukt? (zonder JS)
tabindex=quote:Op woensdag 2 januari 2008 15:02 schreef Chandler het volgende:
[..]
Omdat ik aanneem dat ze weten welke editors het beste met hun scripting taal omgaan?
Verder even offtopic vraagje; weet iemand hoe je kunt instellen naar welk veld je gaat als je op tab drukt? (zonder JS)
http://nl2.php.net/manual/en/migration4.phpquote:Op woensdag 2 januari 2008 21:10 schreef mschol het volgende:
wie weet in hoeverre PHP 3 en PHP4 scripts draaien onder PHP5?
dit omdat ik em best wil upgraden maar dan moet ik wel zeker weten dat alles het blijft doen
nice, thnx.quote:Op woensdag 2 januari 2008 21:34 schreef Geqxon het volgende:
[..]
http://nl2.php.net/manual/en/migration4.php
http://nl2.php.net/manual/en/migration5.php
http://nl2.php.net/manual/en/migration51.php
http://nl2.php.net/manual/en/migration52.php
Stap voor stap.
Nee, bij is_numeric() worden 0x005, +123e2 ook als true gezien, dus ook niet de beste oplossing.Imo beste manier (zie hieronder), sowieso beter om als je een getal verwacht de data type naar int te zetten (stel als je ermee berekeningen gaat uitvoeren), maar omdat PHP vergevingsgezind is geeft dit geen fouten.quote:Op donderdag 27 december 2007 11:03 schreef SuperRembo het volgende:
[..]
Dan doe jij het goed en doet colourAgga het fout is_int() met een string als input (in dit geval uit $_GET) geeft altijd false!
intval() levert een integer op, dus is_int(intval()) zal altijd true zijn.quote:Op donderdag 3 januari 2008 01:35 schreef DeKubus het volgende:
[..]
Nee, bij is_numeric() worden 0x005, +123e2 ook als true gezien, dus ook niet de beste oplossing.Imo beste manier (zie hieronder), sowieso beter om als je een getal verwacht de data type naar int te zetten (stel als je ermee berekeningen gaat uitvoeren), maar omdat PHP vergevingsgezind is geeft dit geen fouten.
[ code verwijderd ]
:)
1 2 3 4 5 6 | $blaat = intval($_GET['blaat']; if(0 == $blaat) { //ongeldig! } ?> |
1 2 3 4 5 6 7 8 | $SQL_Value = "100857"; $ODBC_Klant_Connect = odbc_connect ( "S&S Webfile", "", ""); $ODBC_Klant_Select = "SELECT * FROM BAC5130 WHERE Nr = " . $SQL_Value . ""; $ODBC_Klant_Exec = odbc_exec( $ODBC_Klant_Connect, $ODBC_Klant_Select ); $ODBC_Klant_Assoc = odbc_fetch_array ( $ODBC_Klant_Exec ); // geeft netjes 1 row terug :) ?> |
1 2 3 4 5 6 7 8 | $SQL_Value = "aap"; $ODBC_Klant_Connect = odbc_connect ( "S&S Webfile", "", ""); $ODBC_Klant_Select = "SELECT * FROM BAC5130 WHERE NM = '%" . $SQL_Value . "%'"; $ODBC_Klant_Exec = odbc_exec( $ODBC_Klant_Connect, $ODBC_Klant_Select ); $ODBC_Klant_Assoc = odbc_fetch_array ( $ODBC_Klant_Exec ); // geeft 0 rows weer, maar zou 2 rows moeten teruggeven (Schaap en Aapjes zitten in de DB) ?> |
My bad, bedoelde zo::quote:Op donderdag 3 januari 2008 05:47 schreef Light het volgende:
[..]
intval() levert een integer op, dus is_int(intval()) zal altijd true zijn.
[ code verwijderd ]
Overigens zou een database ook +123e2 moeten accepteren als numeriek. Het kan lastiger worden als je 123.2 probeert te plaatsen in een integerveld.
...WHERE NM LIKE '%" . $SQL_Value . "%'...quote:Op donderdag 3 januari 2008 15:39 schreef wobbel het volgende:
[...]
werkt gedeeltelijk.quote:Op donderdag 3 januari 2008 17:47 schreef SuperRembo het volgende:
[..]
...WHERE NM LIKE '%" . $SQL_Value . "%'...
kan je niet beter MATCH...AGAINST gebruiken dan?quote:Op donderdag 3 januari 2008 18:27 schreef wobbel het volgende:
[..]
werkt gedeeltelijk.
Ik heb ook een record met de naam "Mierlo, van"
Als ik als $SQL_Value invul "mierlo" dan vindt ie niks, zoek ik op "Mierlo" (dus met hoofdletter) dan vind ie het wel ineens
Daar heb ik nog nooit mee gewerkt, hoe werkt dat dan? En bovenal, wordt dat ondersteund?quote:Op vrijdag 4 januari 2008 09:09 schreef Xcalibur het volgende:
[..]
kan je niet beter MATCH...AGAINST gebruiken dan?
http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.htmlquote:Op vrijdag 4 januari 2008 09:35 schreef wobbel het volgende:
Daar heb ik nog nooit mee gewerkt, hoe werkt dat dan? En bovenal, wordt dat ondersteund?
Ik werk niet met MySQL, ik gebruik een ODBC plugin voor TopSpeed database, zie enkele posts hierbovenquote:Op vrijdag 4 januari 2008 11:12 schreef Xcalibur het volgende:
[..]
http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html
Je moet alleen een index maken op het veld waarin je zoekt geloof ik, maar dat staat er ongetwijfeld bij. Je hebt ook de optie IN BOOLEAN MODE, zodat je ook met + en - kunt zoeken zeg maar. Werkt prima
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 | X-Message-Status: n:0 X-SID-PRA: Maillinglist v1 <eric******@******.com> X-SID-Result: SoftFail X-Message-Info: JGTYoYF78jG9yuoI+h0kJ1x+NrLFHMOQAIfJCH59JzMK4GcsJQglp8wYMw3/yAlCqsYg6byLbCkhuUFqD9aY0P8j+djMM+jf Received: from server28.icehosting.nl ([195.22.100.18]) by bay0-mc9-f9.bay0.******.com with Microsoft SMTPSVC(6.0.3790.2668); Fri, 4 Jan 2008 02:02:57 -0800 Received: from apache by server28.icehosting.nl with local (Exim 4.67) (envelope-from <ericbrug@******.nl>) id 1JAjOC-0001zj-5h for eric******@******.com; Fri, 04 Jan 2008 11:02:56 +0100 To: eric******@******.com Subject: Preview: Meisjes jatten fiets van postbode X-PHP-Script: mailling.******.nl/index.php for 82.73.150.117 From: "Maillinglist v1" <eric******@******.com> Reply-To: "Maillinglist v1" <eric******@******.com> MIME-Version: 1.0 Message-ID: <1199440976-eric******@******.com> X-Mailer: PHP v5.2.3 Date: Fri, 04 Jan 2008 11:02:56 +0100 Return-Path: ericbrug@******.nl X-OriginalArrivalTime: 04 Jan 2008 10:02:58.0225 (UTC) FILETIME=[FB9B0A10:01C84EB8] Twee meisjes uit Amersfoort en Nieuwegein kregen de politie op hun dak toen ze een fiets steelden. Opzich niet heftig, ware het niet dat de fiets van een postbode was. De 17 en 18 jaar oude dames stalen de fiets bij station Veenendaal-West en fietsten vervolgens naar Overberg. Aan de fiets hing nog een zak met post. Die dumpten ze onderweg samen met wat fietstassen. De politie hield ze vervolgens aan in Overberg. Op het bureau gingen de meisjes door de knieën en bekenden ze dat ze de fiets gejat hadden. Met een proces-verbaal in het vooruitzicht zijn de meisjes naar huis gestuurd. De fiets is teruggegeven aan de postbode van dienst. </ |
Naughty girlsquote:Op het bureau gingen de meisjes door de knieën...
Oh sorry, daar had ik overheen gelezenquote:Op vrijdag 4 januari 2008 12:11 schreef wobbel het volgende:
Ik werk niet met MySQL, ik gebruik een ODBC plugin voor TopSpeed database, zie enkele posts hierboven
Ik gebruik in grote lijnen hetzelfde lijstje, alleen geen date class:quote:Op donderdag 3 januari 2008 14:01 schreef colourAgga het volgende:
Wat denken jullie trouwens, de klasses die je nodig hebt voordat je fatsoenlijk aan een project kan beginnen? Ik denk:
- Date
- Verify
- Authentification
- SQL
- Template
Dat zijn in ieder geval de 5 die ik het meeste gebruik jullie nog toevoegingen?
ziet er opzich prima uit als ik et zo lees, maar omdat je een mailinglist hebt: stel je mailinglist headers in anders wordt het mogelijk als spam gezien.. (o.a. een afmeld adres is zeer handig..)quote:Op vrijdag 4 januari 2008 12:38 schreef Chandler het volgende:
Beste allemaal,
Ik heb een mailing list manager geschreven voor een van mijn sites en daarmee wil ik mailtjes gaan versturen, echter zit ik met een probleem!.
Als ik een test bericht naar mijn eigen email adres stuur (hotmail) krijg ik de inhoud van het bericht niet direct te zien. Ik snap niet waarom en daarom vraag ik hulp
De headers/bericht
[ code verwijderd ]
Heeft iemand een idee wat ik fout doe?
Hoe moet ik de headers instellen dan? en afmeld adres kan in de mail vermeld worden waarbij het script de mogelijkheid heeft om gebruikers af te melden.quote:Op zaterdag 5 januari 2008 10:49 schreef mschol het volgende:
[..]
ziet er opzich prima uit als ik et zo lees, maar omdat je een mailinglist hebt: stel je mailinglist headers in anders wordt het mogelijk als spam gezien.. (o.a. een afmeld adres is zeer handig..)
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 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 | // http://www.metalshell.com/view/source/115/ class mailer { var $errors = array(); var $eol = ""; // email settings var $subject = ""; var $content = array(); // added files var $attatchments = array(); // added var $embedded = array(); // for viewing var $headers = array(); var $boundary = ""; var $boundaries = array(); var $contentType = array(); function mailer() { $this->errors = array("nofilefound" => "Sorry, het bestand %s bestaat niet", "cannotreadfile" => "Sorry, het bestand %s kan niet gelezen worden", "contenttypeerr" => "Sorry, het type content '%s' is incorrect (alleen text/html)"); $this->eol = "\r\n"; $this->contentType = array("text", "html"); $this->boundary = substr(md5(time()), 0, 10); $this->headers = array('MIME-Version:' => '1.0', 'Content-Type:' => 'multipart/mixed; boundary="' . $this->boundary . '"'); $this->charSet = 'iso-8859-1'; } function setHeader($type, $value) { $this->headers[$type.":"] = $value; } function send($to) { $_body = "This is a multi-part message in MIME format." . $this->eol . $this->eol; $_headers = ""; // content first foreach ($this->headers AS $key => $value) { $_headers .= $key . " ". $value . $this->eol; } // werkt niet :( verwijder dit en krijg alleen de text inhoud te zien, niet de html inhoud! $prev .= $this->boundary; foreach ($this->boundaries AS $key) { $_body .= "--" . $prev . $this->eol; $_body .= 'Content-Type: multipart/related; '.$this->eol; $_body .= ' type="multipart/alternative";' . $this->eol; $_body .= ' boundary="--' . $key . '"' . $this->eol; $prev = $key; } $a = array("content", "embedded", "attatchments"); foreach ($a AS $type) { if (count($this->$type) > 0) { foreach ($this->$type AS $content) { $_body .= $this->eol . $content; } } } echo '<pre>'; print_r($_headers); print_r($_body); if (!mail($to, $this->subject, $_body, $_headers)) { return false; } return true; } function subject($subject) { $this->subject = $subject; } function isEmail($email) { if (!preg_match('/^[A-Z0-9._%-]+@(?:[A-Z0-9-]+\\.)+[A-Z]{2,4}$/i', $email)) { return false; } return $email; } function setCharset($charset) { $this->charSet = $charset; } function setContent($text, $type = "text") { /* $text = content to add to email $type = type of content (text/html) */ if (in_array($type, $this->contentType)) { $contentBuffer = $this->eol . '--' . $this->boundary . $this->eol; if ($type == "text") { $contentBuffer .= 'Content-Type: text/plain; charset="' . $this->charSet . '"'. $this->eol; } else { $contentBuffer .= 'Content-Type: text/html; charset="' . $this->charSet . '"' . $this->eol; } $contentBuffer .= 'Content-Transfer-Encoding: quoted-printable' . $this->eol . $this->eol; $contentBuffer .= $text . $this->eol; $this->content[$type] = $contentBuffer; } else { $this->error[] = sprintf($this->errors['contenttypeerr'], $type); } } function clearContent() { /* Clear email content (text/html) */ $this->content = array(); } function addFile($file, $mime = "text/plain", $type = 'attatchment') { /* $file = file to attatch $type = attatchment type (attatchment/embedded) */ if (is_file($file)) { $basename = basename($file); $fileinfo = pathinfo($file); $fd = fopen($file, "rb"); if ($fd) { $filebuffer = fread($fd, filesize($file)); $filebuffer = chunk_split(base64_encode($filebuffer), 72) . $this->eol; $b = substr(md5(time()), 0, 5) . "xxx"; $this->boundaries[] = $b . $this->boundary; $header = '--' . $b . $this->boundary . $this->eol; if ($type == "embedded") { $ref_id = md5(uniqid(time())) . '.' . $fileinfo['extension']; $header .= 'Content-Type: ' . $mime . '; name="' . $basename . '"' . $this->eol; $header .= 'Content-Transfer-Encoding: base64' . $this->eol; $header .= 'Content-Disposition: inline; filename="' . $basename . '"' . $this->eol; $header .= 'Content-ID: <' . $ref_id . '>' . $this->eol . $this->eol; $header .= $filebuffer; $header .= $this->eol . $b . $this->boundary . "--" . $this->eol; $this->embedded[] = $header; return '<img src=3D"cid:' . $ref_id . '">'; } else { $header .= 'Content-Type: '. $mime . '; name="' . $basename . '"' . $this->eol; $header .= 'Content-Transfer-Encoding: base64' . $this->eol; $header .= 'Content-Disposition: attachment; filename="' . $basename . '"'.$this->eol.$this->eol; $header .= $filebuffer; $header .= $this->eol . $b . $this->boundary . "--" . $this->eol; $this->attatchments[] = $header; } } else { $this->error[] = sprintf($this->errors['cannotreadfile'], $file); } } else { $this->error[] = sprintf($this->errors['nofilefound'], $file); } } } $t = new mailer(); // vanaf, reply to etc $t->setHeader("From", '"Eric Bruggema" <****@hotmail.com>'); $t->setHeader("Reply-to", '"Eric Bruggema" <****@hotmail.com>'); // zet onderwerp $t->subject("test bericht van Eric"); $t->addFile("test.txt", "text/plain"); $img = $t->addFile("test.png", "image/png", "embedded"); $t->setContent("hello world"); $t->setContent('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <style type="text/css"> html,body{height:100%;background-color:#F7D708;font-family:verdana;font-size:13px;} #l{float:left;width:200px;height:100%;border-right:5px solid #9CCF31;background-color:#FF9E00;} #logo{text-align:center;width:200px;background-color:#C7EB6E;border-bottom:5px solid #9CCF31;margin:0;} #l h2{margin:0;padding-top:25px;font-size:50px;} #l h3{font-size:15px;padding:0;} #logobot{width:200px;height:100%;text-align:center;} #l UL{list-style-type:none;padding:15px 0 0 0;margin:0;width:100%;} #l LI{padding:0;margin:0;width:100%;text-align:center;font-size:20px;padding-top:10px;font-size:15px} #l a{color:#fff;text-decoration:none;} #l a:hover{font-weight:bold;color:#fff;text-decoration:none;} a{color:#F7D708;text-decoration:none;} a:hover{font-weight:bold;color:#F7D708;text-decoration:none;} #r{float:right;width:495px;height:400px;background-color:#79B837} #c{margin:2%;width:90%;text-align:center;border:5px dotted #9CCF31;margin-top:10px;padding:10px;font-style:italic} p{text-align:left;} .t{padding:5px 10px 0 10px; margin:0;} .t input{width:250px;} #c-c{margin:125px 100px 125px 100px;padding:5px 0px 0 10px;width:275px;background-color:orange;height:150px;border:1px dotted #9CCF31;} </style> </head> <body> <div id="l"> <div id="logo"> <h2>ABC</h2> <h3>DEF</h3> </div> <div id="logobot"> l><li><a href="?p=">Start</a></li><li><a href="?p=i">Informatie</a></li><li><a href="?p=r">Meld je link aan</a></li><li><a href="?p=p">Plugin</a></li><li><a href="?p=z">Zoeken</a></li><li><a href="?p=t">Top 10</a></li><li><a href="?p=c">Contact</a></li></ul></div> </div> <div id="r"> content </div> </body> </html>', "html"); $t->send("****@hotmail.com"); ?> |
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 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 | X-Message-Status: sF:0 X-SID-PRA: Eric Bruggema <****@hotmail.com> X-SID-Result: SoftFail X-Message-Info: JGTYoYF78jE+WU0KSdwFVTx6sCmaha1t92n0MUkmdCuLQ3hZoCgNJ7xYuaHWf0hm0arBXeDtbIUENcq9FHju8cl9f9E2pgal Received: from server28.icehosting.nl ([195.22.100.18]) by bay0-mc1-f12.bay0.hotmail.com with Microsoft SMTPSVC(6.0.3790.2668); Sat, 5 Jan 2008 02:43:34 -0800 Received: from apache by server28.icehosting.nl with local (Exim 4.67) (envelope-from <****@bruggema.nl>) id 1JB6V2-0005pP-9d for ****@hotmail.com; Sat, 05 Jan 2008 11:43:32 +0100 To: *****@hotmail.com Subject: test bericht van Eric X-PHP-Script: *****.php for ***** MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="1a97e8797f" From: "Eric Bruggema" <*****@hotmail.com> Reply-to: "Eric Bruggema" <*****@hotmail.com> Message-Id: <E1JB6V2-0005pP-9d@server28.icehosting.nl> Date: Sat, 05 Jan 2008 11:43:32 +0100 Return-Path: *****@bruggema.nl X-OriginalArrivalTime: 05 Jan 2008 10:43:34.0559 (UTC) FILETIME=[D22FDAF0:01C84F87] This is a multi-part message in MIME format. --1a97e8797f Content-Type: multipart/related; type="multipart/alternative"; boundary="--1a97exxx1a97e8797f" --1a97exxx1a97e8797f Content-Type: multipart/related; type="multipart/alternative"; boundary="--1a97exxx1a97e8797f" --1a97e8797f Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable hello world --1a97e8797f Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> <style type="text/css"> html,body{height:100%;background-color:#F7D708;font-family:verdana;font-size:13px;} #l{float:left;width:200px;height:100%;border-right:5px solid #9CCF31;background-color:#FF9E00;} #logo{text-align:center;width:200px;background-color:#C7EB6E;border-bottom:5px solid #9CCF31;margin:0;} #l h2{margin:0;padding-top:25px;font-size:50px;} #l h3{font-size:15px;padding:0;} #logobot{width:200px;height:100%;text-align:center;} #l UL{list-style-type:none;padding:15px 0 0 0;margin:0;width:100%;} #l LI{padding:0;margin:0;width:100%;text-align:center;font-size:20px;padding-top:10px;font-size:15px} #l a{color:#fff;text-decoration:none;} #l a:hover{font-weight:bold;color:#fff;text-decoration:none;} a{color:#F7D708;text-decoration:none;} a:hover{font-weight:bold;color:#F7D708;text-decoration:none;} #r{float:right;width:495px;height:400px;background-color:#79B837} #c{margin:2%;width:90%;text-align:center;border:5px dotted #9CCF31;margin-top:10px;padding:10px;font-style:italic} p{text-align:left;} .t{padding:5px 10px 0 10px; margin:0;} .t input{width:250px;} #c-c{margin:125px 100px 125px 100px;padding:5px 0px 0 10px;width:275px;background-color:orange;height:150px;border:1px dotted #9CCF31;} </style> </head> <body> <div id="l"> <div id="logo"> <h2>ABC</h2> <h3>DEF</h3> </div> <div id="logobot"> l><li><a href="?p=">Start</a></li><li><a href="?p=i">Informatie</a></li><li><a href="?p=r">Meld je link aan</a></li><li><a href="?p=p">Plugin</a></li><li><a href="?p=z">Zoeken</a></li><li><a href="?p=t">Top 10</a></li><li><a href="?p=c">Contact</a></li></ul></div> </div> <div id="r"> content </div> </body> </html> --1a97exxx1a97e8797f Content-Type: image/png; name="test.png" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="test.png" Content-ID: <bc5b21505784b333b98f32c09225bda2.png> iVBORw0KGgoAAAANSUhEUgAAAzAAAAAmCAYAAAAbb34AAAAABGdBTUEAAK/INwWK6QAAABl0 RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAiPSURBVHja7J1Lkts2EIbZspzk Dl6mcohsffBss8oRsvQZUqmU2RE1ogiCeDQepDie7yvTGlEiAAJgo3+gSYmqDhO/fvkyvchj uzjb9bF9vm0/3bafb9sv0/b7169/DR+Mqb7udfb2b5C5xqaXx77p//tXdBzG7zqMt1cdb3+/ 7RzmOn+muc7gkZgsf8e+6x0jItHvi3usm0fiePW/56aVyHPOVywVGjnP1eeBMktN4zllnc8h Vv50MtKlL50tHQCAHmPkWdN005HYeHp0mfxxubIsoXEgNTZIYGzPleuej/PZqg4MFZrzC1bt cytb0DcK+SruOUX8F794kvI/IvUiofLOacz5OO/F91n8fdN79zjn9TK9uj7L7e9Pnz79cPbi zz/++O328s9j+/e2/Xfbvk/V+/e3b2Pq2CvmttxZjBoFWRTgG7fO9nlf51Iyjnq3NBvSF3vl 9kvLkKb06RD90zQKMACAH0L0bD3Z1+a/UxlMKVbmmztKKgRFNH3VrufTvaYjeerhHVtfl/f7 uvzdzcy1IvGqjD6sMd7ZEB9leAEAAAAAOruxo+fOmjTGxZiBZIQ8AAAAAABAiYCpWhS5VGYG AAAAAADQgnhipknAaOI9IWQAAAAAANDCHEJWzCWTqGUfAAAAAABACaOjL7REa1hCyEIrLggZ AAAAAADoiele+0vpAYgYAAAAAABoxF8kMd+icqHuAAAAAADgRRQ/7TgnYDSjlAAAAAAAAFrF y2DVGFfvACkTM/wkDAAAAAAAVDEOB/0ODAAAAAAAQCsyVKyIlDyFzH9PGBkAAAAAAPQUNF0E TErIAAAAAAAAHCJeSgUMAAAAAADAHnR7jLK2JA4AAAAAAGCkOYRMM/sQMQAAAAAAUEP1okjJ TfzamhkAAAAAAICnNboLmG6ZAQAAAAAAtGgMbuIHAAAAAIDTCRWrgMmFh/EbMAAAAAAA0EPA VP1My8WoiNTwHQAAAAAAAKuAmZDSA2t+yJIVGAAAAAAA6ClmzPqi5ndgLJ8BAAAAAAB0FS8W AQMAAAAAALCHcBkfr24YWTak7ErdQdeeqA8BLVIe0Ei9QQUi9LSjR5vh0V+pewAAaBxSQqsv Wafo2pAZHNzCZ3IVsg737XM6CSD+Pm7dv2dxg0gDADjO3A7rlRgTV4PPHLt5H69hZ2HhOwdU OAAgLF97HmcQNGeb0AIAaDBno2tire7u9SPX2NAwCLiDGsIiUjfGMDJm0AFei9UpZ2XiPPZK K9uwVx2wMgUAHU1Z8ZOOW0LITuV13geVCof5vbjOqfM7rQDYMYys+pwlI1sRU9BPFeRNqbZm IS+7nt77xEOs7t6rSDu6PZQQOwBoZxwKQ8dqBczLRizXOPsG8/nZC+67CK027DaQVJ7f+3A0 dHl5tK+GtEeiO3Y5TQQMHNnnjd1tbfKk6NreXkeavKp+HP0ozXbxLLbTPZdZYImco/32qKMW UcTqEMC7EzBVOqMphGzvez9mI3Q3SAknU2rSfxj/VtEhgTLJSwZBXYoRGNjE/Xy3/MVczqRu eLZPla9nyP7VTomil3Zx8o6wTq8Rw+ukCtOVeFoiWnZwsj/Ladp/GjE2964YpkROK7pC48tB tmxdJh2WOTs55bUjT4EnhmxYRQI4iYgpjuy6ZjxRjYyY3a2ma0imbXpf4vjPsy7mYx7GX3cR G2ExIY7xbxcGidWH+yFrj197nlN81OjXO9T+BS1yRDTrogXPUaT+EkCkvEAv6I5+qmQ7jN9d tFkkNDjh2uInqq3YCWf6KGGZbH9vAkQkVl4ptMP7iK7ZCV+yPMbBDjnysTGx18ScuCvuHVdP WsvXuzwAkBQvxVwNFnxXEeMv98aNTt75X93bUmy89D6AiDGvrFOt24FdS8rijJdVwke3g6// TLOg4y6yTUBL87N/uOQZXlWznXeHgSr5iXReKtEKRxIsTmDQjPWfbkn3leL2tMaRhdLVqjoK Xm3PsCSrcOspLKVQDEpG4KXbP94+mhBpGilXS7hTIG9Zjx9rsSVdxdV8DnOduuHYe4WoRUPA G4XHKmKjUHT4IeqhMqTC2AGgeVDtsgJjyaSrMcsZi7KZFV2cYrV73hpZkYkJnbLVhq2AkNAq jV/eZBYaFwDBicVtDJbmR9TotzU3eVnSS0LtXy4Zh7Q7IQWCxd+Fuji15dP+orbckMXyFdth Q+4aENe/7VRHiYmX3PVhuNbLhKUWikE12wO3PGsroXezuK1Qm/hdyuU3zHrJJyfAxBchahOA 6/Px85OKfqHr4msoxLDecZ/LNao6D0loF0mucCkRQXffY8iHfMceo829NgBd8MPHdr8HpouQ sQiXsCHSiK+vi58eO26IiIVQWiupMfjLKhmh8pA57iAX0z0aHsBdoSRJbaF58aRhR1/9iT2t 6wyhcXzVdtGBSvO7jIdZXZs+kwWNDndg1Qmd1CIc1tf1/n6FdTVCO/UkzzWXxu4qxvPynOOn A6cxudFBWAbFYLhtQytJUuCsh+cnNCvSgmFxWjDZ47anRAoi/nnZVvnmybi1zVVnNWfwRrj1 WLFq28SK39INZCvCUuXy9i0iSTbjVk4M3R0RHTMtHxEvmo6MiD6lLuCjIGQAmgSMqyt2+x2Y biswm0cZR2dPFrGiKVGia12ymEQnHGszwCyCQxKiKLlXM45GzIC7Njvh/Ky+FhQEmnf+1eDS ayjXhNBJWP74eG1z5iTtPxU7RZL32iK1vqOoWPV/5UfpmrTkVn3vH5KnSb9fKhSGMRisXAdE LkWplFSqximCgK0I+Xnq11nO4VdDPYpVvElSqNnEmeYbQH2n3/0sIgA01j80Kt5XYW2aE1Pq Cahl31acbC20Oyn2/FOcwVbdELW4xNBY3okwtpVI0/nhlbZQuqldx3FMio5YZEgo/O3ZTxAy ALWD6Vg2y/XG/wIMACQziaAHit+xAAAAAElFTkSuQmCC 1a97exxx1a97e8797f-- --1a97exxx1a97e8797f Content-Type: text/plain; name="test.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="test.txt" PD9waHANCg0KDQovLyBodHRwOi8vd3d3Lm1ldGFsc2hlbGwuY29tL3ZpZXcvc291cmNlLzEx NS8NCmNsYXNzIG1haWxlcg0Kew0KICAgIHZhciAkZXJyb3JzID0gYXJyYXkoIm5vZmlsZWZv dW5kIiAgICA9PiAiU29ycnksIGhldCBiZXN0YW5kICVzIGJlc3RhYXQgbmlldCIsDQogICAg ICAgICAgICAgICAgICAgICAgICAiY2Fubm90cmVhZGZpbGUiID0+ICJTb3JyeSwgaGV0IGJl c3RhbmQgJXMga2FuIG5pZXQgZ2VsZXplbiB3b3JkZW4iLA0KICAgICAgICAgICAgICAgICAg ICAgICAgImNvbnRlbnR0eXBlZXJyIiA9PiAiU29ycnksIGhldCB0eXBlIGNvbnRlbnQgJyVz JyBpcyBpbmNvcnJlY3QgKGFsbGVlbiB0ZXh0L2h0bWwpIiwNCiAgICAgICAgICAgICAgICAg ICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICB2YXIgJGVvbCA9ICJc clxuIjsNCg0KICAgIC8vIGVtYWlsIHNldHRpbmdzDQogICAgdmFyICRzdWJqZWN0ID0gIiI7 DQogICAgdmFyICRjb250ZW50ID0gYXJyYXkoKTsNCiAgICB2YXIgJGNvbnRlbnRUeXBlcyA9 IGFycmF5KCJ0ZXh0IiwgImh0bWwiKTsNCiAgICANCiAgICAvLyBhZGRlZCBmaWxlcw0KICAg IHZhciAkYXR0YXRjaG1lbnRzID0gYXJyYXkoKTsgLy8gYWRkZWQNCiAgICB2YXIgJGVtYmVk ZGVkICAgICA9IGFycmF5KCk7IC8vIGZvciB2aWV3aW5nDQogICAgDQogICAgdmFyICRib3Vu ZGFyeTsNCiAgICB2YXIgJGNoYXJTZXQgPSAnaXNvLTg4NTktMSc7DQogICAgDQogICAgZnVu Y3Rpb24gbWFpbGVyKCkNCiAgICB7DQogICAgICAgICR0aGlzLT5ib3VuZGFyeSA9ICdfX3Np bXBsZV9tYWlsX2NsYXNzX18nOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHNlbmQoJHRvKQ0K ICAgIHsNCiAgICB9DQogICAgDQogICAgZnVuY3Rpb24gc3ViamVjdCgkc3ViamVjdCkNCiAg ICB7DQogICAgICAgICR0aGlzLT5zdWJqZWN0ID0gJHN1YmplY3Q7DQogICAgfQ0KICAgIA0K ICAgIGZ1bmN0aW9uIGlzRW1haWwoJGVtYWlsKQ0KICAgIHsNCiAgICAgICAgaWYgKCFwcmVn X21hdGNoKCcvXltBLVowLTkuXyUtXStAKD86W0EtWjAtOS1dK1xcLikrW0EtWl17Miw0fSQv aScsICRlbWFpbCkpDQogICAgICAgIHsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAg ICAgICAgfQ0KDQogICAgICAgIHJldHVybiAkZW1haWw7DQogICAgfQ0KDQogICAgZnVuY3Rp b24gc2V0Q2hhcnNldCgkY2hhcnNldCkNCiAgICB7DQogICAgICAgICR0aGlzLT5jaGFyU2V0 ID0gJGNoYXJzZXQ7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gc2V0Q29udGVudCgkdGV4dCwg JHR5cGUgPSAidGV4dCIpDQogICAgew0KICAgICAgICAvKg0KICAgICAgICANCiAgICAgICAg JHRleHQgPSBjb250ZW50IHRvIGFkZCB0byBlbWFpbA0KICAgICAgICAkdHlwZSA9IHR5cGUg b2YgY29udGVudCAodGV4dC9odG1sKQ0KICAgICAgICANCiAgICAgICAgKi8NCiAgICAgICAg DQogICAgICAgIGlmIChpc1NldCgkY29udGVudFR5cGVzWyR0eXBlXSkpDQogICAgICAgIHsN CiAgICAgICAgICAgIGlmICgkdHlwZSA9PSAidGV4dCIpDQogICAgICAgICAgICB7DQogICAg ICAgICAgICAgICAgJGNvbnRlbnRCdWZmZXIgID0gJHRoaXMtPmVvbCAuICctLScgLiAkdGhp cy0+Ym91bmRhcnkgLiAkdGhpcy0+ZW9sOw0KICAgICAgICAgICAgICAgICRjb250ZW50QnVm ZmVyIC49ICdDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9IicgJHRoaXMtPmNo YXJTZXQgLiAnIicuICR0aGlzLT5lb2w7DQogICAgICAgICAgICAgICAgJGNvbnRlbnRCdWZm ZXIgLj0gJ0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUnIC4g JHRoaXMtPmVvbCAuICR0aGlzLT5lb2w7DQogICAgICAgICAgICAgICAgJGNvbnRlbnRCdWZm ZXIgLj0gJHRleHQ7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAgICAg ICAgICB7DQogICAgICAgICAgICAgICAgJGNvbnRlbnRCdWZmZXIgID0gJHRoaXMtPmVvbCAu ICctLScgLiAkdGhpcy0+Ym91bmRhcnkgLiAkdGhpcy0+ZW9sOw0KICAgICAgICAgICAgICAg ICRjb250ZW50QnVmZmVyIC49ICdDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD0i JyAuICR0aGlzLT5jaGFyU2V0IC4gJyInIC4gJHRoaXMtPmVvbDsNCiAgICAgICAgICAgICAg ICAkY29udGVudEJ1ZmZlciAuPSAnQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogcXVvdGVk LXByaW50YWJsZScgLiAkdGhpcy0+ZW9sIC4gJHRoaXMtPmVvbDsNCiAgICAgICAgICAgICAg ICAkY29udGVudEJ1ZmZlciAuPSAkdGV4dDsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAg ICAgJHRoaXMtPmNvbnRlbnRbJHR5cGVdID0gJHRleHQ7DQogICAgICAgIH0NCiAgICAgICAg ZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgICAkdGhpcy0+ZXJyb3JbXSA9IHNwcmludGYo JHRoaXMtPmVycm9yc1snY29udGVudHR5cGVlcnInXSwgJHR5cGUpOw0KICAgICAgICB9DQog ICAgfQ0KICAgIA0KICAgIGZ1bmN0aW9uIGNsZWFyQ29udGVudCgpDQogICAgew0KICAgICAg ICAvKg0KICAgICAgICANCiAgICAgICAgQ2xlYXIgZW1haWwgY29udGVudCAodGV4dC9odG1s KQ0KICAgICAgICANCiAgICAgICAgKi8NCiAgICAgICAgDQogICAgICAgICR0aGlzLT5jb250 ZW50ID0gYXJyYXkoKTsNCiAgICB9DQogICAgDQogICAgZnVuY3Rpb24gYWRkRmlsZSgkZmls ZSwgJHR5cGUgPSAnYXR0YXRjaG1lbnQnKQ0KICAgIHsNCiAgICAgICAgLyoNCiAgICAgICAg DQogICAgICAgICRmaWxlID0gZmlsZSB0byBhdHRhdGNoDQogICAgICAgICR0eXBlID0gYXR0 YXRjaG1lbnQgdHlwZSAoYXR0YXRjaG1lbnQvZW1iZWRkZWQpDQoNCiAgICAgICAgKi8NCg0K ICAgICAgICBpZiAoaXNfZmlsZSgkZmlsZSkpDQogICAgICAgIHsNCiAgICAgICAgICAgICRi YXNlbmFtZSA9IGJhc2VuYW1lKCRmaWxlKTsNCiAgICAgICAgICAgICRmaWxlaW5mbyA9IHBh dGhpbmZvKCRmaWxlKTsNCiAgICAgICAgICAgICRtaW1lICAgICA9IG1pbWVfY29udGVudF90 eXBlKCRmaWxlKTsNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgJGZkID0gZm9wZW4oJGZp bGUsICJyYiIpOw0KICAgICAgICAgICAgaWYgKCRmZCkNCiAgICAgICAgICAgIHsNCiAgICAg ICAgICAgICAgICAkZmlsZWJ1ZmZlciA9IGZyZWFkKCRmZCwgZmlsZXNpemUoJGZpbGUpOw0K ICAgICAgICAgICAgICAgICRmaWxlYnVmZmVyID0gY2h1bmtfc3BsaXQoYmFzZTY0X2VuY29k ZSgkZmlsZWJ1ZmZlciksIDcyKSAuICR0aGlzLT5lb2w7DQoNCiAgICAgICAgICAgICAgICBp ZiAoJHR5cGUgPT0gImVtYmVkZGVkIikNCiAgICAgICAgICAgICAgICB7DQogICAgICAgICAg ICAgICAgICAgICRyZWZfaWQgPSBtZDUodW5pcWlkKHRpbWUoKSkpIC4gJy4nIC4gJGZpbGVp bmZvWydleHRlbnNpb24nXTsNCg0KICAgICAgICAgICAgICAgICAgICAkaGVhZGVyICA9ICct LScgLiAkdGhpcy0+Ym91bmRhcnkgLiAkdGhpcy0+ZW9sOw0KICAgICAgICAgICAgICAgICAg ICAkaGVhZGVyIC49ICdDb250ZW50LVR5cGU6ICcgLiAkbWltZSAuICc7IG5hbWU9IicgLiAk YmFzZW5hbWUgLiAnIicgLiAkdGhpcy0+ZW9sOw0KICAgICAgICAgICAgICAgICAgICAkaGVh ZGVyIC49ICdDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQnIC4gJHRoaXMtPmVv bDsNCiAgICAgICAgICAgICAgICAgICAgJGhlYWRlciAuPSAnQ29udGVudC1EaXNwb3NpdGlv bjogaW5saW5lOyBmaWxlbmFtZT0iJyAuICRiYXNlbmFtZSAuICciJyAuICR0aGlzLT5lb2w7 DQogICAgICAgICAgICAgICAgICAgICRoZWFkZXIgLj0gJ0NvbnRlbnQtSUQ6IDwnIC4gJHJl Zl9pZCAuICc+JyAuICR0aGlzLT5lb2wgLiAkdGhpcy0+ZW9sOw0KICAgICAgICAgICAgICAg ICAgICAkaGVhZGVyIC49ICRmaWxlYnVmZmVyOw0KDQogICAgICAgICAgICAgICAgICAgICR0 aGlzLT5lbWJlZGRlZFtdID0gJGhlYWRlcjsNCg0KICAgICAgICAgICAgICAgICAgICByZXR1 cm4gJzxpbWcgc3JjPTNEImNpZDonIC4gJHJlZl9pZCAuICciPic7DQogICAgICAgICAgICAg ICAgfQ0KICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICB7DQogICAgICAg ICAgICAgICAgICAgICRoZWFkZXIgID0gJy0tJyAuICR0aGlzLT5ib3VuZGFyeSAuICR0aGlz LT5lb2w7DQogICAgICAgICAgICAgICAgICAgICRoZWFkZXIgLj0gJ0NvbnRlbnQtVHlwZTog Jy4gJG1pbWUgLiAnOyBuYW1lPSInIC4gJGJhc2VuYW1lIC4gJyInIC4gJHRoaXMtPmVvbDsN CiAgICAgICAgICAgICAgICAgICAgJGhlYWRlciAuPSAnQ29udGVudC1UcmFuc2Zlci1FbmNv ZGluZzogYmFzZTY0JyAuICR0aGlzLT5lb2w7DQogICAgICAgICAgICAgICAgICAgICRoZWFk ZXIgLj0gJ0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSInIC4g JGJhc2VuYW1lIC4gJyInLiR0aGlzLT5lb2wuJHRoaXMtPmVvbDsNCiAgICAgICAgICAgICAg ICAgICAgJGhlYWRlciAuPSAkZmlsZWJ1ZmZlcjsNCg0KICAgICAgICAgICAgICAgICAgICAk dGhpcy0+YXR0YWNobWVudFtdID0gJGhlYWRlcjsNCiAgICAgICAgICAgICAgICB9DQogICAg ICAgICAgICB9DQogICAgICAgICAgICBlbHNlDQogICAgICAgICAgICB7DQogICAgICAgICAg ICAgICAgJHRoaXMtPmVycm9yW10gPSBzcHJpbnRmKCR0aGlzLT5lcnJvcnNbJ2Nhbm5vdHJl YWRmaWxlJ10sICRmaWxlKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBl bHNlDQogICAgICAgIHsNCiAgICAgICAgICAgICR0aGlzLT5lcnJvcltdID0gc3ByaW50Zigk dGhpcy0+ZXJyb3JzWydub2ZpbGVmb3VuZCddLCAkZmlsZSk7DQogICAgICAgIH0NCiAgICB9 DQp9DQoNCj8+DQo= 1a97exxx1a97e8797f-- </pr |
ik pak even de headers , die er toe lijken te doen, van de nieuwsbrief van m'n broer:quote:Op zaterdag 5 januari 2008 11:51 schreef Chandler het volgende:
[..]
Hoe moet ik de headers instellen dan? en afmeld adres kan in de mail vermeld worden waarbij het script de mogelijkheid heeft om gebruikers af te melden.
die staan er extra in, en kennelijk zorgt dit er voor dat een mailing in princiepe altijd om een spamfilter komt (mits de headers netjes worden gevolgd door het anti-spam middel).quote:Precedence: list
List: lists
List-Unsubscribe: <http://domein.com/lists>
List-Owner: <lists@domein.com>
X-Priority: 3
X-Mailer: mailer
List-ID: <http://domein.com/lists>
List-Subscribe: <http://domein.com/lists>
List-URL: <http://domein.com/lists>
Mijn basisklassen voor een webapplicatie zijn meestal:quote:Op donderdag 3 januari 2008 14:01 schreef colourAgga het volgende:
Wat denken jullie trouwens, de klasses die je nodig hebt voordat je fatsoenlijk aan een project kan beginnen? Ik denk:
- Date
- Verify
- Authentification
- SQL
- Template
Dat zijn in ieder geval de 5 die ik het meeste gebruik jullie nog toevoegingen?
Ik gebruik een date class om alle mogelijke berekeningen met tijd te doe en dat in alle mogelijke tijdsformaten in en uit te lezenquote:Op zaterdag 5 januari 2008 10:31 schreef Xcalibur het volgende:
[..]
Ik gebruik in grote lijnen hetzelfde lijstje, alleen geen date class:
- ADOdb
- Authenticator (zelfgeschreven authenticatie class)
- Importexport (zelfgeschreven CSV import / export class)
- phpMailer
- phpThumb
- Smarty
- UTF-8
- Validator (zelfgeschreven validatie class)
Wat gebruik jij voor date class? Ik heb eerlijk gezegd nooit echt problemen met datums, dus ik ben wel benieuwd waarom die van jou zo handig is?
1 2 3 4 5 | $Core->mod_Template->replace( 'tieten', 'borsten' ); //Aanspreken van module $Core->mod_Gallery->store( 'plaatje' ); //Standaard spul opslaan bij een module $Core->mod_Gallery->config( 'thumbnails', '120x120' ); //Override van settings ?> |
Schopquote:Op donderdag 3 januari 2008 15:39 schreef wobbel het volgende:
Wij hebben op het werk een administratie programma welke op TPS bestanden draait (TopSpeed database)
Nu lukt het mij prima om er wat gegevens uit te krijgen door te zoeken op klant nummer met onderstaande code:
[ code verwijderd ]
Nu zou ik ook graag willen zoeken op naam, dat als ik zoek naar "aap" ik alle resultaten krijg zoals "Schaap, Aapjes" etc...dus ik dacht dit:
[ code verwijderd ]
Maar helaas, dit werkt niet ik krijg dan geen resultaten...als ik de wildcards (%) weglaat en ik vul de exacte naam in dan vind ik het wel
Hoe kan ik zoeken met wildcards? Hier staat iets meer info over ODBC TopSpeed (PDF)
1 |
Ik denk dat je zelf op zoek moet naar betere / uitgebreidere documentatie over die TopSpeed db. Dat pdfje is wel erg beknopt.quote:Op maandag 7 januari 2008 14:14 schreef wobbel het volgende:
LET OP!! Is geen MySQL, maar een ODBC plugin voor TopSpeed
quote:Op maandag 7 januari 2008 17:59 schreef markiemark het volgende:
hoe schrijf ik een functie die uit een string één of meerdere woorden haalt die in een array staan en de rest weg laat? bijvoorbeeld:
$string = "morgen vlieg ik naar new york";
$steden = array("amsterdam", "barcelona", "new york");
dan wil ik dat alleen new york wordt weergegeven, de rest mag wegvallen. en als de waarde niet voor komt in de array dat er ook niks wordt weergegeven.. alvast bedankt
1 2 3 4 5 6 7 8 9 | $string = "morgen vlieg ik naar new york"; $steden = array("amsterdam", "barcelona", "new york"); foreach($steden as $stad) { if(false !== strpos($string, $stad)) { echo $stad; } } ?> |
helemaal top!! dank je wel!quote:
Nee, als je wilt weten of een string in een andere string voorkomt dan is strpos sneller dan een regular expression. Dat staat ook in de PHP handleiding. Overigens kan het wel efficienter want foreach is niet de geheugenvriendelijkste methode.quote:Op maandag 7 januari 2008 18:45 schreef Geqxon het volgende:
Is een regular expression dan niet sneller, Light?
Dan zou ik niet kiezen voor een foreach-methode. Het kan efficienter, zeker als de array is opgebouwd zoals je beschrijft (dus met numerieke keys).quote:Op maandag 7 januari 2008 18:33 schreef markiemark het volgende:
[..]
helemaal top!! dank je wel!
het gaat om een lijst van +/- 5000 steden en het is een vrij druk bezochte site.. gaat dit een probleem worden?
1 2 3 4 5 | $steden = array('barcalona', 'amsterdam', 'newyork'); $output = array_intersect($steden, str_word_count($tekst, 1)); ?> |
Daar is niks zinnigs over te zeggen zonder specifiek te weten wat:quote:Op woensdag 9 januari 2008 10:12 schreef Chandler het volgende:
Misschien een stom vraagje; maar wil graag weten m.b.t. de preformance van PHP hoe lang het geschat kan duren voor het versturen van 250 mailtjes met PHP (mailtje is max 1kb)
Wil geen simulatie uitvoeren aangezien ik niet 250x dezelfde email wil ontvangen
Mijn ervaring is dat PHP (afhankelijk hoe snel de SMTP server is) er rustig 2000 mailtjes in een seconden door heen kan knallen van 1KB/ps (per stuk) .quote:Op woensdag 9 januari 2008 10:12 schreef Chandler het volgende:
Misschien een stom vraagje; maar wil graag weten m.b.t. de preformance van PHP hoe lang het geschat kan duren voor het versturen van 250 mailtjes met PHP (mailtje is max 1kb)
Wil geen simulatie uitvoeren aangezien ik niet 250x dezelfde email wil ontvangen
Dan is dit je antwoord.quote:Op woensdag 9 januari 2008 10:38 schreef WyriHaximus het volgende:
[..]
Mijn ervaring is dat PHP (afhankelijk hoe snel de SMTP server is) er rustig 2000 mailtjes in een seconden door heen kan knallen van 1KB/ps (per stuk) .
Dat is duidelijk danquote:Op woensdag 9 januari 2008 10:40 schreef Scorpie het volgende:Dan is dit je antwoord.
Ok tof dankje, zat dus zelf iig al een heel eind de goede kant op .quote:Op woensdag 9 januari 2008 11:52 schreef Xcalibur het volgende:
Lees in ieder geval deze eens
http://www.nicknettleton.com/zine/php/php-utf-8-cheatsheet#body
Ik gebruik zelf ook deze UTF-8 class:
http://sourceforge.net/projects/phputf8/
Ik zou niet graag 300.000 mails versturen met de mail() functie. Die is daar niet zo geschikt voor, omdat de verbinding met de mailserver iedere keer wordt afgesloten en opnieuw geopend. Zie ook mail().quote:Op woensdag 9 januari 2008 10:40 schreef Chandler het volgende:
Juist, een klant van mij wil ruim 300.000 mailtjes versturen en nu heb ik een script geschreven die om de xxx mailjes de pagina 10 seconden laat wachten en dan op naar de volgende xxx mailtjes gaat.
Maar 1000 mailtjes is dus simpel mogelijk zonder gezeur van PHP/MYSQL en natuurlijk de SMTP server
[..]
Dat is duidelijk dan
hij had het toch al over een smtp server?quote:Op woensdag 9 januari 2008 18:55 schreef Geqxon het volgende:
http://www.phpguru.org/static/mime.mail.html
Voor als je wilt weten hoe je via SMTP mail verstuurt.
quote:Op woensdag 9 januari 2008 10:40 schreef Chandler het volgende:
Juist, een klant van mij wil ruim 300.000 mailtjes versturen en nu heb ik een script geschreven die om de xxx mailjes de pagina 10 seconden laat wachten en dan op naar de volgende xxx mailtjes gaat.
Maar 1000 mailtjes is dus simpel mogelijk zonder gezeur van PHP/MYSQL en natuurlijk de SMTP server
[..]
Dat is duidelijk dan
Nog niet zo heel lang geleden heeft iemand in dit topic (het vorige deel gok ik) een aardig complete opsomming gemaakt.... ik dacht eigenlijk dat jij dat wasquote:Op woensdag 9 januari 2008 12:24 schreef WyriHaximus het volgende:
Ok tof dankje, zat dus zelf iig al een heel eind de goede kant op .
1 2 3 | $query = "SELECT * FROM employees WHERE age LIKE '%$age%'"; ?> |
omdat hij het zelf ook kan?quote:Op woensdag 9 januari 2008 19:19 schreef JortK het volgende:
Waaom zou je zoveel berichten niet laten versturen door bedrijven die er tenslotte in specialiseerd zijn
Like is een string-operator, dus is het wel logisch dat het niet werkt met integers. Je zou je ook nog kunnen afvragen of het zinvol is om Like te gebruiken, of dat je de gegevens op een andere manier ook kunt krijgen.quote:Op woensdag 9 januari 2008 21:41 schreef Tarabass het volgende:
Ongelooflijk. Kom er net achter dat als je met mysql in een selectquery een like operator wilt gebruiken om een integer op te halen je dat als een string moet doen om dat werkend te krijgen..
Om de like-operator toe te passen op een integer-dataveld moet je dus dit doen:
[ code verwijderd ]
Of zou hij het gewoon pikken en moet ik dit anders doen?
Hahahaha! Ben altijd al fan geweest van de Wrox serie: http://www.wrox.com/WileyCDA/WroxTitle/productCd-0764557831.htmlquote:Op woensdag 9 januari 2008 22:10 schreef wobbel het volgende:
Ik moet m'n vriendin PHP leren wat is de ALLERMAKKELIJKSTE instap curus voor PHP? (jaja, wat een vertrouwen )
Dus heel simpel echo dingen en hele simpele if en else statements?
dat is te moeilijk, dan moet ze 2 talen leren (engels ) en dan kost het me geldquote:Op woensdag 9 januari 2008 22:15 schreef WyriHaximus het volgende:
[..]
Hahahaha! Ben altijd al fan geweest van de Wrox serie: http://www.wrox.com/WileyCDA/WroxTitle/productCd-0764557831.html
lol ik ze niks, me eingen vriendin is ook niet al te goed met engels . Dit anders wat? Misschien bij de bied? http://www.nl.bol.com/is-bin/INTERSHOP.enfinity/eCS/Store/nl/-/EUR/BOL_DisplayProductInformation-Start?Section=BOOK&BOL_OWNER_ID=1001004002133647quote:Op woensdag 9 januari 2008 22:16 schreef wobbel het volgende:
[..]
dat is te moeilijk, dan moet ze 2 talen leren (engels ) en dan kost het me geld
en nee, ze is geen mongooltje
haha die heb ik op 't werk wel liggen volgensmij eens meenemenquote:Op woensdag 9 januari 2008 22:22 schreef WyriHaximus het volgende:
[..]
lol ik ze niks, me eingen vriendin is ook niet al te goed met engels . Dit anders wat? Misschien bij de bied? http://www.nl.bol.com/is-bin/INTERSHOP.enfinity/eCS/Store/nl/-/EUR/BOL_DisplayProductInformation-Start?Section=BOOK&BOL_OWNER_ID=1001004002133647
w3schoolsquote:Op woensdag 9 januari 2008 22:10 schreef wobbel het volgende:
Ik moet m'n vriendin PHP leren wat is de ALLERMAKKELIJKSTE instap curus voor PHP? (jaja, wat een vertrouwen )
Dus heel simpel echo dingen en hele simpele if en else statements?
Ik weet inmiddels dat het anders moet (REGEXP?), maar het is toch absurd dat hij (mysql-server) het allemaal pikt. Echt raar. Met een string-operator een integer ophalen. Hoe weet je dan dat je het goed doet, als alles werktquote:Op woensdag 9 januari 2008 22:09 schreef Light het volgende:
[..]
Like is een string-operator, dus is het wel logisch dat het niet werkt met integers. Je zou je ook nog kunnen afvragen of het zinvol is om Like te gebruiken, of dat je de gegevens op een andere manier ook kunt krijgen.
Wat wil je eigenlijk bereiken? Een REGEXP is net als LIKE een string operator, dus die is ook niet bedoeld om naar een int te zoeken. Waarom kan je geen =, <, > of BETWEEN gebruiken?quote:Op woensdag 9 januari 2008 23:15 schreef Tarabass het volgende:
[...] Ik weet inmiddels dat het anders moet (REGEXP?) [...]
dummie meldtquote:Op woensdag 9 januari 2008 23:15 schreef Tarabass het volgende:
[..]
Ik weet inmiddels dat het anders moet (REGEXP?), maar het is toch absurd dat hij (mysql-server) het allemaal pikt. Echt raar. Met een string-operator een integer ophalen. Hoe weet je dan dat je het goed doet, als alles werkt
dacht dat dit subforum voor dummies was, maar krijg steeds meer het idee dat dit het expert-subforum is
Expert meld . (*WyriHaximus walgt even van zichzelf en gaat weer verder. *WyriHaximus schaamt zich nog steeds dat hij niet echt eerder met UTF-8 aan de gang is gegaan !) Maar goed zonder experts is het ook weer zo saai voor de dummies .quote:Op woensdag 9 januari 2008 23:15 schreef Tarabass het volgende:
[..]
dacht dat dit subforum voor dummies was, maar krijg steeds meer het idee dat dit het expert-subforum is
Hehe nee dat was ik niet . Maar goed dit heeft me aan het denken gezet aan gezien UTF-8 best wel een pre is als je echt internationaal wilt gaan werken. Nu zat ik te denken om een aantal nuttige posts in de OP er bij te zetten aangezien die nu wat karig is. Wat denken jullie er van?quote:Op woensdag 9 januari 2008 20:54 schreef Xcalibur het volgende:
[..]
Nog niet zo heel lang geleden heeft iemand in dit topic (het vorige deel gok ik) een aardig complete opsomming gemaakt.... ik dacht eigenlijk dat jij dat was
Ik ben met ajax bezig en wil dat als je een cijfer ingeeft in een tekstbox 'age' hij alle records ophaalt die dat getal bevatten. Als je een 1 intypt moet hij dus de leeftijden 1 ophalen, maar ook 14 of 51. Als ik de integer $age tussen quotes zet werkt dat gewoon op een integer-veld. En op de mysql-site vond ik dat regexp ook zou werken.quote:Op woensdag 9 januari 2008 23:55 schreef SuperRembo het volgende:
[..]
Wat wil je eigenlijk bereiken? Een REGEXP is net als LIKE een string operator, dus die is ook niet bedoeld om naar een int te zoeken. Waarom kan je geen =, <, > of BETWEEN gebruiken?
Balen dat alles bij mysql werkt, want op die manier weet je geeneens of het de juiste manier is, en wil het zo graag goed doen. Maar alles werkt aarggh. Wat zou ik voor een integer moeten gebruiken?quote:A character class “[...]” matches any character within the brackets. For example, “[abc]” matches “a”, “b”, or “c”. To name a range of characters, use a dash. “[a-z]” matches any letter, whereas “[0-9]” matches any digit.
semi-dummy/expert meld...quote:Op woensdag 9 januari 2008 23:15 schreef Tarabass het volgende:
[..]
Ik weet inmiddels dat het anders moet (REGEXP?), maar het is toch absurd dat hij (mysql-server) het allemaal pikt. Echt raar. Met een string-operator een integer ophalen. Hoe weet je dan dat je het goed doet, als alles werkt
dacht dat dit subforum voor dummies was, maar krijg steeds meer het idee dat dit het expert-subforum is
Waarom wil je als je een 1 invult ook 51 hebben? Klinkt me vrij onlogisch in de oren. Dat is hetzelfde als je bij autocomplete een P invult je dan ook AAP als voorbeeld krijgt. Als je dit niet doet kun je dit ook op een veel elegantere manier doen.quote:Op donderdag 10 januari 2008 10:11 schreef Tarabass het volgende:
[..]
Ik ben met ajax bezig en wil dat als je een cijfer ingeeft in een tekstbox 'age' hij alle records ophaalt die dat getal bevatten. Als je een 1 intypt moet hij dus de leeftijden 1 ophalen, maar ook 14 of 51. Als ik de integer $age tussen quotes zet werkt dat gewoon op een integer-veld. En op de mysql-site vond ik dat regexp ook zou werken.
[..]
Balen dat alles bij mysql werkt, want op die manier weet je geeneens of het de juiste manier is, en wil het zo graag goed doen. Maar alles werkt aarggh. Wat zou ik voor een integer moeten gebruiken?
Voorbeeld
Het gaat niet om een autocomplete maar om een zoek-functie. Als je dus zoekt op 7 wil ik alle leeftijden met een 7 erin hebben. Waarom? Eigenlijk gewoon daaromquote:Op donderdag 10 januari 2008 14:23 schreef Dzy het volgende:
[..]
Waarom wil je als je een 1 invult ook 51 hebben? Klinkt me vrij onlogisch in de oren. Dat is hetzelfde als je bij autocomplete een P invult je dan ook AAP als voorbeeld krijgt. Als je dit niet doet kun je dit ook op een veel elegantere manier doen.
Stel je vult een 2 in. Dan zijn de mogelijkheden dus 2, 20-29, 200-299. Verder dan dat hoef je niet te gaan. Dan kun je dus een SELECT query met een paar ORs en met BETWEEN werken.
Vul je ook een 2e cijfer in, bijvoorbeeld 14, dan kun je dus een query bouwen met 14, en 140-149. Dit gaat een stuk sneller, weet je zeker dat het goed gaat en heb je geen lelijke string searches op een integer field. Helaas kun je het dus niet zo oplossen als je ook wilt dat je 51 kunt vinden met een 1.
1 |
Maar mysql is slim genoeg om een integer gewoon te casten naar een string als je er string operators op loslaat. Ik zie het probleem niet. Like met een integer werkt gewoon.quote:Op donderdag 10 januari 2008 14:39 schreef Scorpie het volgende:
Een like operator is per definitie een string operator hoor, dat is basis SQL kennis.
Wat ik eerder ook al voor wobbel ze GF suggereerde is de P2P serie van Wrox erg goed om eens naar te kijken .quote:Op donderdag 10 januari 2008 15:28 schreef markiemark het volgende:
met welk boek leer ik het snelste object georienteerd programmeren in php?
ik kan wel aardig programmeren in php, maar nog niet object oriented. nu wil ik dit wel leren en een boek kopen daar voor, maar welke kan ik het beste nemen?
Hier ga ik even mee stoeien. Bedankt..quote:Op donderdag 10 januari 2008 14:58 schreef Dzy het volgende:
Je kunt natuurlijk ook je PHP scriptje een set laten maken en daar een mooie query door uit laten poepen. Nog steeds voelt het wat ranzig aan maarja, niet heel veel aan te doen. Stel dat de leeftijd maximaal 100 is, kun je bijvoorbeeld bij een 2 invullen zo'n query laten maken:
[ code verwijderd ]
Dan krijg je alsnog alle goede leeftijden terug en gebruik je geen ranzige LIKE operators die bedoeld zijn voor strings. De php code om zo'n query te maken is ook niet zo moeilijk.
1 |
wat bedoel je?quote:Op donderdag 10 januari 2008 17:30 schreef BugWorks het volgende:
Beste allemaal,
Ik ben bezig met een gastenboek te maken, dit werkt allemaal prima. Nu wilde ik daar als toevoeging smilies aan toe voegen, ook dit werkt prima.
Nu geef ik van iedere smilie de locatie map aan, dit wil ik verkorten door het gebruik van een variabele.
Even een voorbeeld hoe het nu is:
[ code verwijderd ]
Wat ik dus graag zou willen wijzigen is "./files/images/smiles" vervangen door een variabele ($dir_smiles). Dit wil me dus niet lukken aangezien de wijzingen overgenomen als zijnde tekst.
Wie kan en wil me hiermee helpen. Alvast bedankt
Ok, je wil dus gewoon zoeken alsof het tekst is. Een regexp is nergens voor nodig (is alleen langzamer), een LIKE is wat je nodig hebt. Als je het echt netjes wil doen, dan converteer je de INT kolom eerst naar VARCHAR voordat je de LIKE vergelijking gebruikt:quote:Op donderdag 10 januari 2008 14:34 schreef Tarabass het volgende:
[..]
Het gaat niet om een autocomplete maar om een zoek-functie. Als je dus zoekt op 7 wil ik alle leeftijden met een 7 erin hebben. Waarom? Eigenlijk gewoon daarom :)
Dus om dit te bewerkstelligen wil ik een like-manier hebben, maar dan voor een integer..
1 |
Volgens mij moet je een heel eind kunnen komen metquote:Op donderdag 10 januari 2008 14:23 schreef Dzy het volgende:
Helaas kun je het dus niet zo oplossen als je ook wilt dat je 51 kunt vinden met een 1.
1 |
waar staat de MOD 10 voor?quote:Op donderdag 10 januari 2008 18:58 schreef Light het volgende:
[..]
Volgens mij moet je een heel eind kunnen komen met
[ code verwijderd ]
Modulo 10. Ofwel delen door 10 en als antwoord de rest teruggeven.quote:
Zie: http://dev.mysql.com/doc/(...)ns.html#function_modquote:
1 2 3 4 | echo floor(20 / 7); // 2 echo 20 % 7; // 6 ?> |
Zo kun je het inderdaad ook aanpakken, nog wel een mooiere oplossing dan die van mij. Wist niet dat dat in MySQL kon Weer wat geleerd.quote:Op donderdag 10 januari 2008 18:58 schreef Light het volgende:
[..]
Volgens mij moet je een heel eind kunnen komen met
[ code verwijderd ]
Met alleen MOD 10 ben je er niet, en het is onnodig ingewikkeld.quote:Op donderdag 10 januari 2008 18:58 schreef Light het volgende:
[..]
Volgens mij moet je een heel eind kunnen komen met
[ code verwijderd ]
Waarom zou je zo ingewikkeld doen? Vergeet ook niet dat je input uit een textbox komt. En het moet natuurlijk ook resultaat geven als je een getal van 2 cijfers invoert... daar ga je dan met je modulo 10.quote:Op donderdag 10 januari 2008 19:18 schreef Dzy het volgende:
Zo kun je het inderdaad ook aanpakken, nog wel een mooiere oplossing dan die van mij.
Ik reageerde op een deel van een post, namelijk dat het niet mogelijk zou zijn om alles te pakken met een bepaald eindcijfer. Daarvoor heb je genoeg aan een MOD 10.quote:Op donderdag 10 januari 2008 19:19 schreef SuperRembo het volgende:
[..]
Met alleen MOD 10 ben je er niet, en het is onnodig ingewikkeld.
Je hebt gelijk, misschien is mijn oplossing toch wel beter Maar met dat typecasten, ik denk dat het een stuk sneller gaat als je het gewoon op mijn manier doet, omdat MySQL dan van elke rij de age column moet gaan omzetten terwijl je het op mijn manier maar een paar instructies in php kost en MySQL gewoon kan doen waar het goed in is.quote:Op donderdag 10 januari 2008 19:19 schreef SuperRembo het volgende:
[..]
Waarom zou je zo ingewikkeld doen? Vergeet ook niet dat je input uit een textbox komt. En het moet natuurlijk ook resultaat geven als je een getal van 2 cijfers invoert... daar ga je dan met je modulo 10.
quote:Op donderdag 10 januari 2008 14:58 schreef Dzy het volgende:
Je kunt natuurlijk ook je PHP scriptje een set laten maken en daar een mooie query door uit laten poepen. Nog steeds voelt het wat ranzig aan maarja, niet heel veel aan te doen. Stel dat de leeftijd maximaal 100 is, kun je bijvoorbeeld bij een 2 invullen zo'n query laten maken:
[ code verwijderd ]
Dan krijg je alsnog alle goede leeftijden terug en gebruik je geen ranzige LIKE operators die bedoeld zijn voor strings. De php code om zo'n query te maken is ook niet zo moeilijk.
1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 | $query = "SELECT * FROM users WHERE (age = ".$age.")"; if ($age<10) { $query .= " OR (age BETWEEN " . $age*10 . " AND ". $age *10+9 . ") OR (age IN (" for ($i=1;$i<10;$i++) { if ($i<>1) $query .= ","; $query .= 10*$i+$age; } $query .= "))"; } $result = mysql_query($query); |
Zo zou het eruit moeten zien: "./files/images/smiles/icon_smile.gif"quote:
Heh. Dat is inderdaad mooier. Dit ga ik vaak gebruiken denk ik Ik kende de range function niet, en gebruik toch wel redelijk vaak set queries.quote:Op donderdag 10 januari 2008 19:39 schreef Geqxon het volgende:
Dat kan denk ik netter met een range(0,10) die je met implode tot een string samenvoegt.
Range is best een handige functie als je een array met nummertjes wilt hebben. Ik gebruik het wel eens als ik bijvoorbeeld een pull-down menutje met alle weeknummers wil genereren, dan is dat best wel makkelijk. :)quote:Op donderdag 10 januari 2008 19:44 schreef Dzy het volgende:
[..]
Heh. Dat is inderdaad mooier. Dit ga ik vaak gebruiken denk ik :P Ik kende de range function niet, en gebruik toch wel redelijk vaak set queries.
1 2 3 4 5 | foreach (range(1,52) as $weeknumber){ } ?> |
quote:Op donderdag 10 januari 2008 17:30 schreef BugWorks het volgende:
Beste allemaal,
Ik ben bezig met een gastenboek te maken, dit werkt allemaal prima. Nu wilde ik daar als toevoeging smilies aan toe voegen, ook dit werkt prima.
Nu geef ik van iedere smilie de locatie map aan, dit wil ik verkorten door het gebruik van een variabele.
Even een voorbeeld hoe het nu is:
[ code verwijderd ]
Wat ik dus graag zou willen wijzigen is "./files/images/smiles" vervangen door een variabele ($dir_smiles). Dit wil me dus niet lukken aangezien de wijzingen overgenomen als zijnde tekst.
Wie kan en wil me hiermee helpen. Alvast bedankt
1 2 3 4 | $path = "./files/images/smiles/"; $text = str_replace(':)','<img src="'.$path.'icon_smile.gif" border="0" alt="" />',$text); ?> |
Dit deed ik altijd met een for-loopje. Dit is inderdaad mooierquote:Op donderdag 10 januari 2008 19:48 schreef Geqxon het volgende:
[..]
Range is best een handige functie als je een array met nummertjes wilt hebben. Ik gebruik het wel eens als ik bijvoorbeeld een pull-down menutje met alle weeknummers wil genereren, dan is dat best wel makkelijk.
[ code verwijderd ]
Overigens is de derde parameter van de functie range wel enkel voor php 5.0.0 en hoger.
Datgene wat jij gepost heb lijkt hier niet te werken, helaas. Heeft namelijk hetzelfde effect als wat ik geprobeerd heb.quote:Op donderdag 10 januari 2008 19:49 schreef Tarabass het volgende:
[..]
[ code verwijderd ]
Bedoel je dit? Mooier is natuurlijk zelf een functie te schrijven die de parameter-input (de ':)') omzet naar de image-tag en dat weer returned. En de border met css meegeven..
Dan heb je een '/' teveel, waarschijnlijk heb je die nog voor 'icon_smile.gif' staan en die moet je dan even weghalen..quote:Op donderdag 10 januari 2008 20:00 schreef BugWorks het volgende:
[..]
Datgene wat jij gepost heb lijkt hier niet te werken, helaas. Heeft namelijk hetzelfde effect als wat ik geprobeerd heb.
(edit)
Afbeelding niet zichtbaar, maar in de broncode is alleen het volgende te zien "/icon_smile.gif".
Overigens worden de ':)' codes omgezet middels een functie, leek me niet relevant om die te posten vandaar alleen die ene regel.
1 2 3 4 5 | $text = ':)'; $path = "./files/images/smiles/"; echo $text = str_replace(':)','[img src="'.$path.'icon_smile.gif" border="0" alt="" /]',$text); ?> |
ok maar ik zag dat er een beginners en een pro versie is van dit boek. bij het pro boek want zo zag ik mezelf tot nu toe staat dat het verder gaat op de oo inleiding van het beginners boek. aangezien ik nog echt niks weet van oo wil ik geen stappen over slaan. ik vind het denk ik een beetje zonde om het beginners boek te kopen terwijl ik al veel weet..quote:Op donderdag 10 januari 2008 15:58 schreef WyriHaximus het volgende:
[..]
Wat ik eerder ook al voor wobbel ze GF suggereerde is de P2P serie van Wrox erg goed om eens naar te kijken .
das wel heel erg nerderigquote:Op donderdag 10 januari 2008 22:07 schreef PiRANiA het volgende:
[TEL *HIER* AF] Unix Timestamp verjaardag!
de timestamp is bijna bij de 120 miljoen
Tel eens opnieuwquote:Op donderdag 10 januari 2008 22:07 schreef PiRANiA het volgende:
[TEL *HIER* AF] Unix Timestamp verjaardag!
de timestamp is bijna bij de 120 miljoen
De 120 miljoen timestamp was lang geleden...quote:
quote:Op vrijdag 11 januari 2008 13:16 schreef PiRANiA het volgende:
zit ik er een nul naast?:P
De max is in principe het datatype dat je in mysql gebruikt voor elke kolom. Als die 2500 tekens kan bevatten dan is het dus geen probleem.quote:Op vrijdag 11 januari 2008 16:20 schreef Flaccid het volgende:
hallo.
ik wil zelf een klein systeempje schrijven om de inhoud van pagina's te beheren. maar heeft de inhoud van een mysql row een maximale waarde aan tekens? Stel dat ik 2500 tekens erin wil, kan dat dan? Of wat is de max?
Iets zegt mij dat dat ook met Javascript gedaan is.quote:Op vrijdag 11 januari 2008 17:07 schreef LeeHarveyOswald het volgende:
CSS vraagje Denk dat die ook wel hier kan?
Hoe een DIV layer laten zweven? Dus bij wijze van spreken de banner hier rechts van fok ALTIJD rechts in beeld houden op een vaste positie - ook als je het topic door scrolled?
hopen dat Danny niet meeleest
Die hiernaast doet niet wat ik wilquote:Op vrijdag 11 januari 2008 17:12 schreef Geqxon het volgende:
[..]
Iets zegt mij dat dat ook met Javascript gedaan is.
Al las ik hier wel wat over IE6 support:quote:Op vrijdag 11 januari 2008 17:23 schreef HuHu het volgende:
In CSS een position:fixed opgeven. Werk alleen in moderne browsers.
zo simpelquote:Op vrijdag 11 januari 2008 17:23 schreef HuHu het volgende:
In CSS een position:fixed opgeven. Werk alleen in moderne browsers.
Ja, en anders zijn er vrij simpele "replace" codes. Dit is wat ik gebruik om in een chat bericht te filteren op 'codes' die ik wil replacen met een emoticon ( dus : ) met :) vervangen, zeg maar):quote:Op vrijdag 11 januari 2008 21:23 schreef Flaccid het volgende:
Hoe kan je het beste een BBCODE dingetje maken? Zijn die dingen er kant en klaar?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // Laden van lijst met emoticons. Deze lijst direct toepassen! $sql = "SELECT * FROM Emotibase"; $query = mysql_query($sql) or die(mysql_error()); while ($result = mysql_fetch_array($query)) { $emotitext = $result['EmoticonText']; $emotihtml = $result['EmoticonHTML']; $bericht = str_replace ($emotitext, $emotihtml, $bericht); } ?> |
1 2 3 4 | width: 600px; margin: 1 auto; } |
Hoe ziet die database eruit precies?quote:Op vrijdag 11 januari 2008 21:33 schreef LeeHarveyOswald het volgende:
[..]
Ja, en anders zijn er vrij simpele "replace" codes. Dit is wat ik gebruik om in een chat bericht te filteren op 'codes' die ik wil replacen met een emoticon ( dus : ) met vervangen, zeg maar):
[ code verwijderd ]
Dit kan je dus ook doen door in de database jou 'bbcode' te zetten
Mijn bug lijkt te zitten in:
[ code verwijderd ]
Is dat mogelijk? In IE word volgens mij de hele container gewoon naar links geduwd...
(www.boeroendoek.nl nogsteeds. Mooi in FF, gaar in IE...)
1 2 3 4 5 6 7 8 | function openTarget (form, features, windowName) { if (!windowName) windowName = 'formTarget' + (new Date().getTime()); form.target = windowName; open ('', windowName, features); } </SCRIPT> |
1 |
dan staat er dus in jouw geval:quote:Op vrijdag 11 januari 2008 22:16 schreef LeeHarveyOswald het volgende:
Database heeft enkel een veld EmoticonText (Prim key) en EmoticonHTML.
In jou geval zou je daar dus BB en HTML voor kunnen gebruiken
1 |
1 2 3 4 | width: 600px; margin: 1 auto; } |
Je kunt het beste altijd een eenheid vermelden, dus 1px of 1em ipv alleen 1. Alleen bij 0 is de eenheid niet noodzakelijk, maar ook daar kan het geen kwaad.quote:Op vrijdag 11 januari 2008 22:25 schreef LeeHarveyOswald het volgende:
margin: 1 auto; >>> dat lijkt het stuk waar hij op botst!
nl2br() ?quote:Op vrijdag 11 januari 2008 22:28 schreef Flaccid het volgende:
[..]
dan staat er dus in jouw geval:
[ code verwijderd ]
hoe ging dat ookalweer met een newline in een text area?
werkt dat dan wel?quote:Op vrijdag 11 januari 2008 23:55 schreef LeeHarveyOswald het volgende:
Heb er 0 van gemaakt op 'aanraden' van css validator.
Een manier om zowel de performance te houden van een grote batch queries als het kunnen achterhalen is het zetten van een flag (of een timestamp) op je duplicaat tabelrow. Je zou bijvoorbeeld zoiets kunnen doen als :quote:Op zaterdag 12 januari 2008 10:31 schreef Xcalibur het volgende:
Ik heb een dilemma :)
Ik heb ooit eens een CSV-import functie geschreven en op zich werkt die prima. Door middel van een unieke index in mijn tabel zorg ik er met INSERT IGNORE INTO / REPLACE INTO voor dat er geen dubbele records in mijn database komen.
Als gevolg daarvan worden er dus records geweigerd. Omdat ik eerst alle data verzamel in 1 grote query die ik in 1x insert weet ik achteraf alleen hoeveel records er zijn geweigerd, maar niet wélke. Om erachter te komen welke records het zijn zou ik ze 1 voor 1 moeten inserten, en dan de mislukte verzamelen in een array. Maar dat levert nogal veel queries op als je een beetje een flink bestand hebt...
Wat zijn jullie ideeën hierover? Staat het uitvoeren van 30.000 queries ipv 1 in verhouding tot de extra informatie die het oplevert? :)
1 2 3 4 5 6 7 8 | INSERT INTO csv (field, value) VALUES (?, ?) ON DUPLICATE KEY UPDATE duplicate_inserted = 1; // Haal alle duplicaten op SELECT c.field FROM csv c WHERE c.duplicate_inserted = 1; // Reset alle duplicaten weer UPDATE csv SET duplicate_insert = 0; |
Donequote:Op zaterdag 12 januari 2008 09:50 schreef Tarabass het volgende:
@LeeHarveyOswald
Stuur mij de html en css eens via pm, dan knap ik het even op voor je als je dat wilt. Moet geen probleem zijn lijkt me..
Let op, want hij is nu niet meer goed in firefox. Wees voorzichtig met veranderingen en probeer in verschillende browsers hoe het er uit ziet. Let ook op dat f5 drukken soms niet de css vernieuwd, doe dat dus met ctrl-f5quote:Op zaterdag 12 januari 2008 19:00 schreef LeeHarveyOswald het volgende:
[..]
Je bent helemaal geweldig!!!!!!!
Ja, hier is 'ie nu ook weer goed. Ik had trouwens de <p>-tags gecommentariseerd maar als je in css de p-tag een margin van 0 meegeeft moet het wel goed gaan in beide browsers. Margin wordt standaard in verschillende browsers per tag in verschillende afstanden weergegeven wat de site lelijk kan maken. Door de margin zelf in te stellen voorkom je dat en is de margin overal hetzelfde. Succes verder met je site!quote:Op zaterdag 12 januari 2008 19:41 schreef LeeHarveyOswald het volgende:
Hier (ook firefox) issie wel goed?
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 | class HTML{ private $title; private $content; private $disable_menu; public function HTML($title = '', $disable_menu = false){ } public function addHTML($html){ $this->content .= $html; } public function addHeader($text, $level = 2){ // voeg een header (h1 tot h7) aan de pagina toe } public function addParagraph($text, $class = ""){ // voeg een paragraaf aan de pagina toe } public function addAnchor($name){ // voeg een <a name="$name"> aan de pagina toe } private function getMenu(){ // returned op basis van de ingelogde user een menu } public function getContent(){ return $this->content; } public function getOutput(){ $header = "<!DOCT ...... "; $footer = ".....</html>"; return $header . $this->getMenu() . $this->getContent() . $footer; } } ?> |
1 2 3 4 5 6 7 8 9 10 | $template = new HTML("Logfile"); $template->addHeader("Recent activity",2); $template->addParagraph("In the .... place:"); [...] $template->addHTML($log_table); echo $template->getOutput(); ?> |
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 | <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl"> <head> <title>Portfolio - Logfile</title> <link rel="stylesheet" type="text/css" href="include/stylesheet.css" /> <script type="text/javascript" src="include/javascript.js"></script> </head> <body> <h1>Mijn portfolio</h1> <ul class="menu"> [...] <li><a href="logfile.php">Logfile</a></li> [...] </ul> <h2>Recent activity</h2> <p>In the [...] place:</p> <table> [...] </table> <p class="footer">© 2008</p> </body> </html> |
Ik begrijp je functies niet, bijv "addParagraph", waar voegt ie dan een paragraaf toe? Aan het einde? Aan het begin? Ergens in het midden? Lijkt me weinig flexibel, hoe dan ook.quote:Op zaterdag 12 januari 2008 20:06 schreef Geqxon het volgende:
Om mijn layout te maken heb ik hetvolgende geschreven:
[ code verwijderd ]
Het aanmaken van een pagina gaat nu als volgt:
[ code verwijderd ]
Mijn vragen:Maak ik nu correct gebruik van OO in PHP? Is dit een fatsoenlijke manier om een template systeem op te zetten?
Bedankt, hier heb ik wat aan.quote:Op zaterdag 12 januari 2008 22:12 schreef Farenji het volgende:
[..]
Ik begrijp je functies niet, bijv "addParagraph", waar voegt ie dan een paragraaf toe? Aan het einde? Aan het begin? Ergens in het midden? Lijkt me weinig flexibel, hoe dan ook.
En een header, dat is voor mij meestal een http header (bijv "Content-type: text/html"), de doctype is gewoon deel van de html.
Ik heb het idee dat je het jezelf moeilijker maakt dan noodzakelijk, waarom niet gewoon een template gebruiken die je inlaadt? Hier loop je jezelf alleen maar te beperken. Object georienteerd programmeren is niet iets dat "moet" maar het is iets dat je leven als programmeur makkelijker maakt en zorgt voor duidelijke structuur die je later ook makkelijk kan hergebruiken. De structuur die je hier hebt is veel te specifiek en te beperkt - misschien bruikbaar voor die ene applicatie maar voor een andere mag je het weer opnieuw doen. Dat is zonde.
Ik begrijp niet precies wat je bedoelt, maar ik vind op zich de timestamp-suggestie niet onaardig....quote:Op zaterdag 12 januari 2008 11:06 schreef autocue het volgende:
Een manier om zowel de performance te houden van een grote batch queries als het kunnen achterhalen is het zetten van een flag (of een timestamp) op je duplicaat tabelrow. Je zou bijvoorbeeld zoiets kunnen doen als :
[ code verwijderd ]
Niet supernetjes en het werkt alleen onder MySQL, maar 't doet (als 't goed is) z'n werk .
De opmaak gaat eigenliijk per definitie via css, daar is css voor, maar de structuur... hoe doe je dat dan?quote:Op zaterdag 12 januari 2008 22:24 schreef Geqxon het volgende:
De opmaak gaat via CSS, dus een template inladen is hier niet nodig.
Die kwak ik van top-to-bottom in de body neer, en geef ik een passende class-naam mee. Dat gaat voor nu prima, een stukje hierboven staat een voorbeeld hoe ik met deze class een pagina opbouw.quote:Op zaterdag 12 januari 2008 22:52 schreef Farenji het volgende:
[..]
De opmaak gaat eigenliijk per definitie via css, daar is css voor, maar de structuur... hoe doe je dat dan?
Als je niet gaat positioneren via je class maar dat static via css gaat doen wat is dan nog het doel van de class? Imo wordt het pas bruikbaar als je alle css-styles meegeeft in de tags in het html-bestand. Anders kun je beter een template aanmaken en die elke keer gebruiken.quote:Op zaterdag 12 januari 2008 23:02 schreef Geqxon het volgende:
[..]
Die kwak ik van top-to-bottom in de body neer, en geef ik een passende class-naam mee. Dat gaat voor nu prima, een stukje hierboven staat een voorbeeld hoe ik met deze class een pagina opbouw.
Als je de MySQL ON DUPLICATE functionaliteit gebruikt kun je juist de duplicaten markeren en deze dus later selecteren, daar doelde ik op .quote:Op zaterdag 12 januari 2008 22:26 schreef Xcalibur het volgende:
[..]
Ik begrijp niet precies wat je bedoelt, maar ik vind op zich de timestamp-suggestie niet onaardig....
Alleen heb ik dan juist alle niet-gewijzigde records te pakken, wat niet per se hetzelfde is als alle duplicaten...
Depends. Want als er dan toch stiekem ooit 2 records zijn, weet je niet zeker of hij wel de goede van de twee update. Als je dan toch een LIMIT 1 doet, gelijk ook maar even een ORDER BY erbij, zodat hij wel de "beste" van de twee pakt.quote:Op zondag 13 januari 2008 02:22 schreef saban het volgende:
Heeft het nut om LIMIT 1 te gebruiken bij een UPDATE wanneer je zeker bent dat de limit ook altijd 1 is? Of is het overbodig?
Ik ga d'r even naar kijkenquote:Op zondag 13 januari 2008 02:14 schreef autocue het volgende:
Als je de MySQL ON DUPLICATE functionaliteit gebruikt kun je juist de duplicaten markeren en deze dus later selecteren, daar doelde ik op .
Ik zag het! Anders viel in IE het menu over de titelkop...quote:Op zaterdag 12 januari 2008 19:47 schreef Tarabass het volgende:
[..]
Ja, hier is 'ie nu ook weer goed. Ik had trouwens de <p>-tags gecommentariseerd maar als je in css de p-tag een margin van 0 meegeeft moet het wel goed gaan in beide browsers. Margin wordt standaard in verschillende browsers per tag in verschillende afstanden weergegeven wat de site lelijk kan maken. Door de margin zelf in te stellen voorkom je dat en is de margin overal hetzelfde. Succes verder met je site!
Duidelijk, thanksquote:Op zondag 13 januari 2008 11:39 schreef Xcalibur het volgende:
Het zoeken op een geindexeerd ID gaat echt onwaarschijnlijk snel, dus ik vermoed dat de UPDATE zelf de bottleneck is zeg maar.... het toevoegen van een LIMIT zal wellicht *iets* uitmaken, maar dan heb je het toch wel over (tien?)duizenden van seconden denk ik...
Maak anders een een benchmarkje, waarin je beide varianten 10.000 draait en de tijd bijhoudt
Je kan de server als een service installeren en daarvan kun je aangeven of die automatisch of handmatig gestart moet worden.quote:Op maandag 14 januari 2008 12:54 schreef Flaccid het volgende:
Als ik een simpel php servertje op mn pc wil instaleren, is dat dan mogelijk zonder dat dat ding altijd loopt? Dat ik hem alleen run wanneer nodig? Zijn er nog verschillende manieren om zon php server te maken? Ik wil hem gewoon om wat scriptjes te testen...
www.wampserver.com, voor windows, bevat alles wat nodig is om gelijk te beginnen.quote:Op maandag 14 januari 2008 12:54 schreef Flaccid het volgende:
Als ik een simpel php servertje op mn pc wil instaleren, is dat dan mogelijk zonder dat dat ding altijd loopt? Dat ik hem alleen run wanneer nodig? Zijn er nog verschillende manieren om zon php server te maken? Ik wil hem gewoon om wat scriptjes te testen...
Bedankt, ga het zo eens uitchecken!quote:Op maandag 14 januari 2008 13:11 schreef Scorpie het volgende:
[..]
www.wampserver.com, voor windows, bevat alles wat nodig is om gelijk te beginnen.
Kan je zelf aan/uit zetten.
1 2 3 4 5 6 7 8 | $data = array('foo'=>'bar', 'baz'=>'boom', 'cow'=>'milk', 'php'=>'hypertext processor'); echo http_build_query($data); // foo=bar&baz=boom&cow=milk&php=hypertext+processor ?> |
Kan je een login systeem ook het beste met sessies doen? Want ik wil nog een login systeem in mijn cms doen uiteraard.quote:Op maandag 14 januari 2008 14:14 schreef HuHu het volgende:
Opslaan in een sessie is een goede optie. Als je het via de URL wilt meegeven kan dat bijvoorbeeld middels de http_build_query() functie. Het resultaat daarvan kun je gebruiken na de ? in de URL.
[ code verwijderd ]
Bron: http://php.net/http_build_query
Zelf maak ik ook gebruik van een sessie bij een zelfgebouwd CMS. Ik controleer dan of die sessie bestaat en of de waarde juist is, en dan geef ik pas de content weer.quote:Op maandag 14 januari 2008 14:40 schreef Flaccid het volgende:
[..]
Kan je een login systeem ook het beste met sessies doen? Want ik wil nog een login systeem in mijn cms doen uiteraard.
Ik heb ooit es iets met sessies gedaan maar snapte er niets van. Weet iemand goede tut?quote:Op maandag 14 januari 2008 14:44 schreef DaFrenk het volgende:
[..]
Zelf maak ik ook gebruik van een sessie bij een zelfgebouwd CMS. Ik controleer dan of die sessie bestaat en of de waarde juist is, en dan geef ik pas de content weer.
Zoals ik het laatst opgelost heb: klikken op een vlaggetje laadt het script met als enige param language=blaat. Het script ziet de language param, zet de juiste taal in de sessie, en doet een redirect naar de referrer (die lees je gewoon uit uit de server vars), waar wel voor de zekerheid een evt language param uit is gefilterd (een eeuwige circulaire redirect is niet zo fijn namelijk). Op deze manier hoef je je geen zorgen te maken om eventuele andere params die al in de url staan.quote:Op maandag 14 januari 2008 14:07 schreef DaFrenk het volgende:
Iemand een tip hoe ik een eenvoudige taalkeuze mogelijkheid kan bouwen?
Op het moment include ik een van de 2 mogelijke talen door middel van de controle van een sessie. In die sessie sla ik de keuze van de taal op.
Echter moet ik dus een knopje krijgen die een bepaalde waarde toekent aan die sessie. Ik zat te denken aan een ?language=nl in de URL toe te voegen, en die uit te lezen in de top van de code door te submitten naar PHP_SELF. Echter hebben enkele pagina's weer bepaalde waardes in de URL meegegeven, en anderen weer niet.
Dus dacht ik aan een 'toggle' pagina. De huidige URL wordt opgeslagen in een sessie waarna je naar een pagina gaat die aan de hand van de ?language=XX in de url de sessie waarde veranderd en hij je weer terug redirect naar de URL in de sessie.
Dat moet in principe werken, maar misschien is er nog een veel betere manier die ik niet ken
Kan wel, maar dan gaat hij de volgende keer verder tellen vanaf dat nummer. Laten we zeggen dat je 2 records er in hebt staan met ID 1 en ID 2, en je voegt er een in met ID 5, dan gaat hij bij de volgende rij verder met ID 6.quote:Op maandag 14 januari 2008 13:37 schreef Flaccid het volgende:
[..]
Bedankt, ga het zo eens uitchecken!
Als je in een mysql table een row met auto_increment hebt, kan je deze waarde dan updaten naar iets anders zonder die auto increment?
Aight! Zo heb ik het nu ook gedaan. Vroeg me gewoon af of er betere methodes waren. Zijn er misschien wel, maar dit functioneerd eigenlijk prima.quote:Op maandag 14 januari 2008 16:15 schreef Farenji het volgende:
[..]
Zoals ik het laatst opgelost heb: klikken op een vlaggetje laadt het script met als enige param language=blaat. Het script ziet de language param, zet de juiste taal in de sessie, en doet een redirect naar de referrer (die lees je gewoon uit uit de server vars), waar wel voor de zekerheid een evt language param uit is gefilterd (een eeuwige circulaire redirect is niet zo fijn namelijk). Op deze manier hoef je je geen zorgen te maken om eventuele andere params die al in de url staan.
Bovenaan lees je dan gewoon de taal uit uit de sessie et voila.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | session_start(); if(!empty($_POST)){ include("dbcon.php"); $wachtwoord_md = md5($_POST["wachtwoord"]); $query = "SELECT * FROM gebruiker WHERE Gebruikersnaam='" . $_POST["gebruikersnaam"] ."' AND Wachtwoord='". $wachtwoord_md ."'"; $result = mysql_query($query); if(mysql_num_rows($result) > 0){ $user = $_POST["gebruikersnaam"]; $_SESSION['user'] = $user; $_SESSION['wachtwoord'] = $wachtwoord_md; header("Location: shout.php"); exit(); } else{ header("Location: index.php"); } } ?> |
1 |
1 |
ok. Het gaat bij mij om de volgorde van een aantal items. stel ik heb items met ID1 ,2 en 3, en ik wil van 3 -> 1 maken en van 1 -> 3 maken, dan gaat dat toch goed?quote:Op maandag 14 januari 2008 16:15 schreef FrozenOne23 het volgende:
[..]
Kan wel, maar dan gaat hij de volgende keer verder tellen vanaf dat nummer. Laten we zeggen dat je 2 records er in hebt staan met ID 1 en ID 2, en je voegt er een in met ID 5, dan gaat hij bij de volgende rij verder met ID 6.
1 2 3 4 5 6 7 8 9 10 11 | function checkvalue($variable,$text) { if($variable==''){ echo $text; } else{ echo $variable; } } ?> |
http://www.neohide.com/ht(...)w-domain-name-prefixquote:Op maandag 14 januari 2008 17:37 schreef super-muffin het volgende:
Ik heb een heel klein vraagje: Hoe kan ik er voor zorgen dat als iemand mijn website bezoek door http://mijnsite.nl in te tikken op http://www.mijnsite.nl terecht komt?
Hm, bij PCExtreme kon je dat apart aangeven ergens op hun site. Dus misschien moet je even bij je hoster vragen?quote:Op maandag 14 januari 2008 17:37 schreef super-muffin het volgende:
Ik heb een heel klein vraagje: Hoe kan ik er voor zorgen dat als iemand mijn website bezoek door http://mijnsite.nl in te tikken op http://www.mijnsite.nl terecht komt?
Array maken en met een loop langsgaan of er lege values bijzitten.quote:Op maandag 14 januari 2008 17:20 schreef Flaccid het volgende:
[..]
ok. Het gaat bij mij om de volgorde van een aantal items. stel ik heb items met ID1 ,2 en 3, en ik wil van 3 -> 1 maken en van 1 -> 3 maken, dan gaat dat toch goed?
Hoe kan ik trouwens makkelijk checken of een rij variables een value heeft? laten we zeggen ik heb $a $b $c $d. Hoe kan ik makeklijk kijken of ze iets bevatten? Is daar een handig ding voor? met 1 tegelijk is het nog met if te doen, maar ik heb er 7, dus dat wordt een warboel! Dit is mijn functie tot nu toe:
[ code verwijderd ]
waarbij $text de tekst is om te weergeven of ie leeg is. functies zijn handig!
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 | $name = $_POST['name']; $title = $_POST['title']; $shortlink = $_POST['shortlink']; $linkname = $_POST['linkname']; $content = $_POST['content']; $homepage = $_POST['homepage']; $showlink = $_POST['showlink']; function checkvalue($variable,$text) { if($variable==''){ echo '<span class="warning">'.$text.'</span>'; } else{ echo $variable; } }; function createrow($coltitle,$colvar) { echo '<tr>'; echo '<td>'.$coltitle.'</td>'; echo '<td>'; checkvalue($colvar,$coltitle.' niet ingevoerd'); echo '</td>'; echo '</tr>'; } $varlist = array(); $varlist['name'] = 'Naam'; $varlist['title'] = 'Title'; $varlist['shortlink'] = 'Shortlink'; $varlist['linkname'] = 'Linkname'; echo' <table width="100%" border="0" cellspacing="0" cellpadding="0">'; foreach($varlist as $var => $caption) { createrow($caption,$name); } echo' </table> ' ?> |
1 2 3 4 5 6 7 8 9 10 | function checkvalue($variable,$text) { if($variable=='') { echo '<span class="warning">'.$text.'</span>'; } else { echo $variable; } } ?> |
1 2 3 4 5 6 | $name = $_POST['name']; $title = $_POST['title']; $shortlink = $_POST['shortlink']; $linkname = $_POST['linkname']; ?> |
Bedankt. Tis gelukt.quote:Op maandag 14 januari 2008 17:42 schreef mschol het volgende:
[..]
http://www.neohide.com/ht(...)w-domain-name-prefix
htaccess + mod_rewrite
bedankt voor de tips. ik had het ook over de manier waarop het geprogrammeerd is. Want nu weet ik zelf ff niet meer wat ik doe.quote:Op maandag 14 januari 2008 18:09 schreef HuHu het volgende:
Ik vind 't er niet zo beroerd uit zien hoor Flaccid. Je zou wel wat meer witruimte kunnen gebruiken, bijvoorbeeld binnen je if's:
[ code verwijderd ]
De ; aan het einde van de functie hoort daar niet en de inspringing is zo wat beter. Een lijstje variabelen kun je nog zo doen:
[ code verwijderd ]
Meer over coding-stanards vind je hier: http://pear.php.net/manual/en/standards.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 | $name = $_POST['name']; $title = $_POST['title']; $shortlink = $_POST['shortlink']; $linkname = $_POST['linkname']; $content = $_POST['content']; $homepage = $_POST['homepage']; $showlink = $_POST['showlink']; function checkvalue($variable,$text) { if($variable=='') { echo '<span class="warning">'.$text.' niet ingevoerd</span>'; } else { echo $variable; } }; function createrow($coltitle,$colvar) { echo '<tr>'; echo '<td>'.$coltitle.'</td>'; echo '<td>'; checkvalue($colvar,$coltitle); echo '</td>'; echo '</tr>'; } $varlist = array(); $varlist[$name] = 'Naam'; $varlist[$title] = 'Titel'; $varlist[$shortlink] = 'Shortlink'; $varlist[$linkname] = 'Linkname'; $varlist[$content] = 'Content'; echo' <table width="100%" border="0" cellspacing="0" cellpadding="0">'; foreach($varlist as $var => $caption) { createrow($caption,$var); } echo' <tr> <td>Homepage</td> <td>'; if($homepage=='on'){echo'Ja';}else{echo'Nee';} ;echo '</td> </tr> <tr> <td width="40%">Showlink</td> <td>'; if($showlink=='on'){echo'Ja';}else{echo'Nee';} ;echo '</td> </tr> </table> ' ?> |
Uiteraard moet je controleren of de taal wel een geldige waarde krijgt. En of de referrer wel meegegeven is bij de aanroep (en naar je eigen server verwijst). De meeste waarden in $_SERVER moet je net zo wantrouwend behandelen als $_GET en $_POST.quote:Op maandag 14 januari 2008 16:15 schreef Farenji het volgende:
[..]
Zoals ik het laatst opgelost heb: klikken op een vlaggetje laadt het script met als enige param language=blaat. Het script ziet de language param, zet de juiste taal in de sessie, en doet een redirect naar de referrer (die lees je gewoon uit uit de server vars), waar wel voor de zekerheid een evt language param uit is gefilterd (een eeuwige circulaire redirect is niet zo fijn namelijk). Op deze manier hoef je je geen zorgen te maken om eventuele andere params die al in de url staan.
Bovenaan lees je dan gewoon de taal uit uit de sessie et voila.
1 2 3 4 5 6 7 8 9 10 | if($variable=='') { echo '<span class="warning">'.$text.' niet ingevoerd</span>'; } else { echo $variable; } ?> |
1 2 3 | echo (empty($variable)) ? '<span class="warning">'.$text.' niet ingevoerd</span>' : $variabele; ?> |
1 2 3 4 5 6 | if(empty($variable)) echo '<span class="warning">'.$text.' niet ingevoerd</span>'; else echo $variable; ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | function checkvalue($variable,$text) { if($variable=='') { echo '<span class="warning">'.$text.' niet ingevoerd</span>'; } else { echo $variable; } }; function createrow($coltitle,$colvar) { echo '<tr>'; echo '<td>'.$coltitle.'</td>'; echo '<td>'; checkvalue($colvar,$coltitle); echo '</td>'; echo '</tr>'; } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | function checkvalue($variable,$text) { if($variable=='') { return '<span class="warning">'.$text.' niet ingevoerd</span>'; } else { return $variable; } }; function createrow($coltitle,$colvar) { return ' <tr> <td>'.$coltitle.'</td> <td>' . checkvalue($colvar, $coltitle) . '</td> </tr> '; } ?> |
1 2 3 | echo ($homepage=='on') ? 'Ja' : 'Nee'; ?> |
Ik vind het heel lelijk als er html tussen de applicatiecode staat. Die hoort daar niet. Functies geven (references naar) variabelen terug, die je vervolgens in een template object plempt. In die templates staat al je html, nergens anders. En in die templates komt weer geen php/andere applicatie logica voor.quote:Op maandag 14 januari 2008 19:15 schreef Geqxon het volgende:
[ code verwijderd ]
naar
[ code verwijderd ]
Korter, maar minder leesbaar. Eventueel:
[ code verwijderd ]
Verder vind ik het niet netjes als functies zelf maar wat gaan echo-en, ik vind het mooier als ze een return waarde hebben. Voorbeeld:
[ code verwijderd ]
word dan:
[ code verwijderd ]
Edit
Ook hier valt wat aan te pimpen:
[ code verwijderd ]
Mooi en aardig, maar of het in de praktijk haalbaar is? Dan zou je elk klein stukje HTML code ergens in een template hebben moeten zitten, en heb je enorm veel classes danwel objecten...quote:Op maandag 14 januari 2008 20:38 schreef Farenji het volgende:
[..]
Ik vind het heel lelijk als er html tussen de applicatiecode staat. Die hoort daar niet. Functies geven (references naar) variabelen terug, die je vervolgens in een template object plempt. In die templates staat al je html, nergens anders. En in die templates komt weer geen php/andere applicatie logica voor.
Maar aan de andere kant is php juist ontworpen om tussen de html te staan en andersom, daarom vind ik het ook zo'n ranzig taaltje. Het zou niet moeten mogen. Dat soort praktijken zorgen voor rampzalige onderhoudbaarheid van je applicaties.
1 2 3 4 5 6 7 8 9 | {if $smarty.section.outer.index is odd by 2} {$smarty.section.outer.rownum} . {$FirstName[outer]} {$LastName[outer]} {else} {$smarty.section.outer.rownum} * {$FirstName[outer]} {$LastName[outer]} {/if} {sectionelse} none {/section} |
Je zult altijd wat logica nodig hebben om te bepalen wat je laat zien. Met IF-structuren en wat loopjes moet je een heel eind kunnen komen, al dan niet in combinatie met opmaakfuncties. Maar HTML en het verzamelen van data hoort niet echt bij elkaar, naar mijn mening dan.quote:Op maandag 14 januari 2008 22:21 schreef Geqxon het volgende:
[..]
Mooi en aardig, maar of het in de praktijk haalbaar is? Dan zou je elk klein stukje HTML code ergens in een template hebben moeten zitten, en heb je enorm veel classes danwel objecten...
Uiteraard is het haalbaar, kwestie van een beetje nadenken over je applicatie, je templates goed opzetten en content goed scheiden van opmaak en structuur. Templates hoeven niet ingewikkeldere dingen te doen dan wat variabelen weer te geven, wat simpele if/then statements en misschien een array in een loopje in html omzetten.quote:Op maandag 14 januari 2008 22:21 schreef Geqxon het volgende:
[..]
Mooi en aardig, maar of het in de praktijk haalbaar is? Dan zou je elk klein stukje HTML code ergens in een template hebben moeten zitten, en heb je enorm veel classes danwel objecten...
Dat dusquote:Op maandag 14 januari 2008 23:07 schreef Light het volgende:
Je zult altijd wat logica nodig hebben om te bepalen wat je laat zien. Met IF-structuren en wat loopjes moet je een heel eind kunnen komen, al dan niet in combinatie met opmaakfuncties. Maar HTML en het verzamelen van data hoort niet echt bij elkaar, naar mijn mening dan.
Als je de volgorde wilt bepalen moet je een kolom toevoegen om dit in te doen.quote:Op maandag 14 januari 2008 17:20 schreef Flaccid het volgende:
ok. Het gaat bij mij om de volgorde van een aantal items. stel ik heb items met ID1 ,2 en 3, en ik wil van 3 -> 1 maken en van 1 -> 3 maken, dan gaat dat toch goed?
Ik ben op zich een vrij erge "MVC nazi" geworden, in de zin dat ik zelf bijv never nooit html in mijn code meer zet en die dingen gescheiden houd, maar dat ben ik niet zomaar geworden. Als je een keer een echt grote applicatie hebt moeten onderhouden en uitbouwen waar die scheiding tussen html en applicatie absoluut niet is doorgevoerd, dan word je dat vanzelf. Tering wat is dat naar. Nachtmerries heb ik er van gehad. Voor een klein scriptje of een beginnersprojectje is het niet zo van belang maar als je iets geeft om onderhoudbaarheid en uitbreidbaarheid dan is het essentieel. Maar dat zijn meestal dingen waar mensen pas later the hard way achter komen (ik ook dus).quote:Op maandag 14 januari 2008 23:07 schreef Light het volgende:
[..]
Je zult altijd wat logica nodig hebben om te bepalen wat je laat zien. Met IF-structuren en wat loopjes moet je een heel eind kunnen komen, al dan niet in combinatie met opmaakfuncties. Maar HTML en het verzamelen van data hoort niet echt bij elkaar, naar mijn mening dan.
Wat ik in mijn geval doe:quote:Op maandag 14 januari 2008 23:07 schreef Light het volgende:
[..]
Je zult altijd wat logica nodig hebben om te bepalen wat je laat zien. Met IF-structuren en wat loopjes moet je een heel eind kunnen komen, al dan niet in combinatie met opmaakfuncties. Maar HTML en het verzamelen van data hoort niet echt bij elkaar, naar mijn mening dan.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |