Allereerst even voor de duidelijkheid:quote:Op maandag 21 februari 2011 20:16 schreef GlowMouse het volgende:
MySQL cluster gebruikt een storage engine die sterk afwijkt van de overige storage engines.
Beide gebruiken de NDB storage engine, dus mijn opmerking slaat op beide.quote:Op maandag 21 februari 2011 21:23 schreef Flepke het volgende:
[..]
Allereerst even voor de duidelijkheid:
Je bedoeld voor zover ik kan zien "het product" MySQL cluster?
http://www.mysql.com/products/cluster/
Ik heb me een beetje zitten inlezen,
http://www.howtoforge.com/loadbalanced_mysql_cluster_debian
Percona kan het ongetwijfeld, maar daar betaal je voor. Een gemiddelde php professional heeft onvoldoende verstand van MySQL, en heeft vrijwel zeker geen enkele ervaring met MySQL cluster.quote:Waar zijn er mensen in te huren (freelance?) (prijs/uur?) die zo'n cluster zouden kunnen bedenken, opzetten onderhouden & queries ervoor kunnen schrijven?
Mag ik er vanuit gaan dat een gemiddeld 'php professional' code hiervoor kan schrijven?
Je moet je afvragen wat je precies nodig hebt. NDB hoort niet in dat rijtje thuis.quote:Ik ben namelijk bezig met het uitdenken of een bepaald redelijk complex idee wat ik in mijn hoofd heb zitten mogelijk is.
De database kant volledig uitbesteden zou al weer een zorg minder zijn...
Klopt.quote:Nu we het toch over clustering hebben, een apache cluster is toch mag ik hopen niet zulk gespecialiseerd werk als een mysql cluster?
Ziet er goed uit, meest rendabele lijkt me dan iemand in vaste dienst aan nemen en die naar zo'n trainings course te sturen, ziet er redelijk betaalbaar uit.quote:Op maandag 21 februari 2011 21:46 schreef GlowMouse het volgende:
Percona kan het ongetwijfeld, maar daar betaal je voor. Een gemiddelde php professional heeft onvoldoende verstand van MySQL, en heeft vrijwel zeker geen enkele ervaring met MySQL cluster.
Uiteraard zal ik in de eerste maanden niet een cluster van 100'en - 1000'en servers nodig hebben, het gaat mij erom dat ik liever zo weinig mogelijk geld en tijd besteed aan het continue herschrijven.quote:Op maandag 21 februari 2011 21:46 schreef GlowMouse het volgende:
Je moet je afvragen wat je precies nodig hebt. NDB hoort niet in dat rijtje thuis.
Hmm.quote:Op maandag 21 februari 2011 22:14 schreef GlowMouse het volgende:
Je weet dat bij een NDB cluster alle data op elke server in het geheugen moet passen?
Ik weet niet of hij helemaal klopt. Maar zoiets?quote:Op woensdag 23 februari 2011 23:50 schreef mwvrs het volgende:
Graag wil ik dat op mijn website iedere keer een willekeurige achtergrondfoto getoond wordt. Nu kan ik zelf wel met een php scriptje een willekeurige achtergrond uit een map op mijn server met allemaal achtergrondafbeeldingen laten selecteren.
Het lijkt me echter vrij irritant voor een bezoeker dat iedere keer dat er op een link geklikt wordt er een andere achtergrond geselecteerd wordt. Het liefst zou de site per bezoek willekeurig een achtergrond moeten selecteren uit de map en deze blijven tonen gedurende het hele bezoek, los van hoeveel pagina's binnen de website men bezoekt.
Kan dit bijv. met behulp van sessies opgelost worden? Of op een andere manier? Ik heb zelf geen ervaring met sessies om dit concreet op te lossen.
In ieder geval alvast hartelijk bedankt.
| 1 2 3 4 5 6 7 8 9 10 11 | <?php session_start(); if (!isset($_SESSION['achtergrond'])) { $alleachtergrondfotos = array('1.png', '2.png', 'etc...'); shuffle($alleachtergrondfotos); $_SESSION['achtergrond'] = array_shift($alleachtergrondfotos); } ?> |
| 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 | <?php session_start(); if(isset($_SESSION['randombgimg'])) { $_SESSION['randombgimg'] = $imgarray[$rand]; echo '<img src="../images/gallery/'.$imgarray[$rand].'">'; } else { $dir=opendir("/path/to/your/images/folder/"); $i=0; while($imgfile=readdir($dir)) { if ($imgfile != "." && $imgfile!="..") { $imgarray[$i]=$imgfile; $i++; } } closedir($dir); $rand=rand(0,count($imgarray)-1); if($rand >= 0) { $_SESSION['randombgimg'] = $imgarray[$rand]; echo '<img src="../images/gallery/'.$imgarray[$rand].'">'; } } ?> |
| 1 2 3 4 5 6 7 | <?php if ($imgfile != "." && $imgfile!="..") { $imgarray[$i]=$imgfile; $i++; } ?> |
| 1 2 3 4 5 6 | <?php if ($imgfile != "." && $imgfile!="..") { $imgarray[]=$imgfile; } ?> |
HIer zou ik persoonlijk javascript voor gebruiken. Alhoewel het met puur php ook wel te maken is.quote:Op maandag 21 februari 2011 20:15 schreef erikkll het volgende:
Ik heb een vraagje! Voor m'n werk moet ik een formuliertje maken. Hierbij moeten keuzes gemaakt worden die de rest van het formulier beïnvloeden. Voorbeeldje van hoe ik dit voor me zie:
1. Is er een keuze gemaakt? Radiobuttons ja/nee
indien ja => 2a. inputveld verschijnt met iets van een label 'keuze'
indien nee =>2b. inputveld verschijnt met iets van een label 'datum waarop keuze wordt gemaakt'
Dit gaat tot op 4 niveaus diep.
Hoe zouden jullie dit doen? Zelf heb ik hier wel ideeën over - Ik hoef geen concrete aanwijzingen/code; meer een globale beschrijving. Ik ben voornamelijk benieuwd naar hoe jullie het zouden aanpakken en hoop inspiratie op te doen.
If, then.quote:Op maandag 21 februari 2011 20:15 schreef erikkll het volgende:
Ik heb een vraagje! Voor m'n werk moet ik een formuliertje maken. Hierbij moeten keuzes gemaakt worden die de rest van het formulier beïnvloeden. Voorbeeldje van hoe ik dit voor me zie:
1. Is er een keuze gemaakt? Radiobuttons ja/nee
indien ja => 2a. inputveld verschijnt met iets van een label 'keuze'
indien nee =>2b. inputveld verschijnt met iets van een label 'datum waarop keuze wordt gemaakt'
Dit gaat tot op 4 niveaus diep.
Hoe zouden jullie dit doen? Zelf heb ik hier wel ideeën over - Ik hoef geen concrete aanwijzingen/code; meer een globale beschrijving. Ik ben voornamelijk benieuwd naar hoe jullie het zouden aanpakken en hoop inspiratie op te doen.
| 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 | <?php session_start(); if(isset($_SESSION['randombgimg'])) { $_SESSION['randombgimg'] = $imgarray[$rand]; echo '<img src="../images/gallery/'.$imgarray[$rand].'">'; } else { $imgarray=array(); $path = "/path/to/your/images/folder/"; foreach (glob($path."*.jpg") as $filename) { $imgarray[] = basename($filename) } $rand=rand(0,count($imgarray)-1); if($rand >= 0) { $_SESSION['randombgimg'] = $imgarray[$rand]; echo '<img src="../images/gallery/'.$imgarray[$rand].'">'; } } ?> |
quote:
| 1 2 3 4 | <?php $fileType = '[jJ][pP][gG]'; foreach (glob($path."*.".$fileType) as $filename) { ?> |
Met array_walk kun je die foreach nog wegwerken.quote:
array_rand() is nog netter, dan krijg je 1 (of meer) random key uit de array. Werkt ook met niet-numerieke keys.quote:Op donderdag 24 februari 2011 16:54 schreef GlowMouse het volgende:
rand lijkt me sneller als je een grote array hebt.
| 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 | <?php $newsid = $_GET['newsid']; $query = "SELECT reactieid, newsid, reactiebericht, reactieposter, reactiedatum, reactietijd FROM newsreactie WHERE newsid =$newsid "; $result = mysql_query($query); $aantalrijen = mysql_num_rows($result); while ($row = mysql_fetch_array($result)) { if( $aantalrijen == 0) { echo "<div class='info reactie2'> <p>Er zijn nog geen reacties op dit bericht.</p> </div>"; } else { $bericht = nl2br("$row[reactiebericht]"); $maand = substr("$row[reactiedatum]", -5, 2); $dag = substr("$row[reactiedatum]", -2, 2); $jaar = substr("$row[reactiedatum]", -11, 4); $tijd = substr("$row[reactietijd]", -8, 5); echo "<div class='info reactie2'> <p>$bericht</p> </div> <div class='reactie3'> <h2>Geplaatst door: $row[reactieposter] op $dag-$maand-$jaar om $tijd</h2> </div>"; } } ?> |
mysql_num_rows uit de while-loop halen. Deze controle is slechts één keer nuttig...quote:Op zaterdag 26 februari 2011 01:03 schreef Dennis82 het volgende:
Ik kom er even niet meer uit. Ik wil iets heel eenvoudigs. Namelijk dat als er geen rows uit een database worden gehaald er een melding komt en zodra er wel row uit de database komt, dan moet hij die info weergeven. Dit is mijn code:
[ code verwijderd ]
Hiermee laat hij echter gewoon de reactie zien als er wel wat uit de query komt en niets zodra er ook niets uit de query komt.
Ik heb zelf een echo op de $aantalrijen gedaan en dan komt er wel netjes 1 of 0 uit.
| 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 | <?php include 'includes/dbconnect.inc.php'; include 'includes/appinfo.inc.php'; include 'includes/bouncer.inc.php'; $id = $_SESSION['ingelogd']; //$getty = mysql_query("SELECT * FROM gebruker WHERE id=$id"); //$getty2 = mysql_fetch_assoc($getty); //$username = $getty2['username']; // This code is released under GPL 3.0 which is included in the bundle // Files to hide in the directory listing // add and subtract as you please $hide = array( 'resources', 'index.php', '.htaccess', '.htpasswd', '.DS_Store'); error_reporting(E_ERROR); // When downloading force it to actually download // rather than just open it in the browser if ($_GET['download']) { $file = str_replace('/', '', $_GET['download']); $file = str_replace('..', '', $file); if (file_exists($file)) { header("Content-type: application/x-download"); header("Content-Length: ".filesize($file)); header('Content-Disposition: attachment; filename="'.$file.'"'); readfile($file); die(); } } $filepath = "/data/$user/"; $scriptname = basename($filepath); $readpath = str_replace($scriptname, "", $filepath); $handle = opendir($readpath); // If deleting if (isset($_GET['rmfile'])) { unlink($readpath . $_GET['rmfile']); } // If uploading if ($_FILES['file']) { $success = move_uploaded_file($_FILES['file']['tmp_name'], $_FILES['file']['name']); } while ($file = readdir($handle)) { if ($file == "." || $file == ".." || in_array($file, $hide)) continue; $key = @filemtime($file); $files[$key] = $file; } closedir($handle); // Sort our files @ksort($files, SORT_NUMERIC); $files = @array_reverse($files); ?> <!DOCTYPE html> <html> <head> <title>Super Simple PHP File Manager</title> <link rel="stylesheet" type="text/css" href="../../media/styles.css" /> </head> <body> <?php $baseurl = $_SERVER['PHP_SELF']; ?> <table border="0" cellspacing="5" cellpadding="5"> <?php $arsize = sizeof($files); for ($i=0; $i<$arsize; $i++) { $ext = strtolower(substr($files[$i], strrpos($files[$i], '.')+1)); $filename = stripslashes($files[$i]); $fileurl = $files[$i]; if (strlen($filename) > 43) { $filename = substr($files[$i], 0, 40) . '...'; } ?> <tr> <td><img src="../../media/zip.gif" /></td> <td><a href="./index.php?download=<?php echo $filename; ?>"><?php echo $filename; ?></a></td> <td><?php echo round(filesize($leadon.$files[$i])/1024); ?>KB</td> <td><?php echo date ("d/m/y", filemtime($leadon.$files[$i]));?></td> <td><a href="./index.php?rmfile=<?php echo $filename; ?>">Delete</a></td> </tr> <?php } ?> </table> <div id="upload"> <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>" enctype="multipart/form-data"> <p><input type="file" name="file" /></p> <p><input type="submit" value="Upload" /></p> </form> </div> </body> </html> |
| 1 2 3 | <?php $success = move_uploaded_file($_FILES['file']['tmp_name'], $_FILES['file']['name']); ?> |
Tegenwoordig downloaden we tutorials via het net. Althans ik.quote:Op maandag 28 februari 2011 21:52 schreef Jump het volgende:
83 delen verder staat mijn grapje van "cd niet bijgeleverd" nog altijd in de OP
quote:Op maandag 28 februari 2011 23:36 schreef Ofyles2 het volgende:
[..]
Tegenwoordig downloaden we tutorials via het net. Althans ik.
Wel gecombineerd met literatuur kopen...
Op basis van jouw advies heb ik de volgende query gemaakt:quote:
| 1 2 3 4 5 6 | SELECT swtickets.ticketid, swtickets.subject, swtickets.email,open.dateline, close.dateline, response.dateline FROM swtickets JOIN swauditlogs open ON(swtickets.ticketid=open.ticketid AND open.actiontype=11) JOIN swauditlogs close ON(swtickets.ticketid=close.ticketid AND close.actiontype=8 AND close.actionmsg LIKE '%to: Nog te factureren%') JOIN swauditlogs response ON(swtickets.ticketid=response.ticketid AND response.actiontype=12) WHERE (swtickets.ticketstatusid=3 OR swtickets.ticketstatusid=4) AND swtickets.email LIKE '%trinicom%' |
Zoals je ziet zijn de records hetzelfde, met uitzondering van het laatste veld. Hoe kan ik er nu voor zorgen dat alleen de record met de LAAGSTE waarde van response.dateline wordt weergegeven?quote:9668 Email aanmaken mailadres@adres.nl 1298907438 1298966816 1298965276
9668 Email aanmaken mailadres@adres.nl 1298907438 1298966816 1298965822
9668 Email aanmaken mailadres@adres.nl 1298907438 1298966816 1298966801
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php $filepost = $_POST['filename']; $extensie=".php"; $filename = $filepost.$extensie ; $file = $filename; $handle = fopen($file, 'w'); $data = "Jane Doe\n"; fwrite($handle, $data); $data = include 'galleria.php'; fwrite($handle, $data); print "Data Written"; fclose($handle); ?> |
| 1 2 3 | <?php $data = file_get_contents('galleria.php'); ?> |
je hebt gelijkquote:$filename via $_POST is niet handig, wat als $filepost = 'index'?
dit heb ik inmiddels opgelost!quote:Op dinsdag 1 maart 2011 10:34 schreef erikkll het volgende:
[..]
Op basis van jouw advies heb ik de volgende query gemaakt:
[ code verwijderd ]
Mooi he?
Nu heb ik nog een vraagje. Daarvoor geef ik even een mogelijk resultaat:
[..]
Zoals je ziet zijn de records hetzelfde, met uitzondering van het laatste veld. Hoe kan ik er nu voor zorgen dat alleen de record met de LAAGSTE waarde van response.dateline wordt weergegeven?
| 1 2 3 4 5 6 7 | SELECT swtickets.ticketid, swtickets.subject, swtickets.email, open.dateline, close.dateline, MIN(response.dateline) FROM swtickets JOIN swauditlogs open ON(swtickets.ticketid=open.ticketid AND open.actiontype=11) JOIN swauditlogs close ON(swtickets.ticketid=close.ticketid AND close.actiontype=8 AND close.actionmsg LIKE '%to: Nog te factureren%') JOIN swauditlogs response ON(swtickets.ticketid=response.ticketid AND response.actiontype=12) WHERE (swtickets.ticketstatusid=3 OR swtickets.ticketstatusid=4) AND swtickets.email LIKE '%trinicom%' GROUP BY swtickets.ticketid |
Geen probleem. Ik werd er inmiddels enigszins moedeloos van, tot ik dit vond:quote:
Hmm. Ja, nouja, close.dateline kan meerdere keren voorkomen; het gaat om een ticket-systeem dat wij gebruiken. Die close.dateline is het moment dat een ticket naar 'Nog te factureren' wordt gezet. Het komt echter voor dat mensen dan een reactie in het ticket zetten, en dan gaat het automatisch terug naar 'Eerste lijn'.quote:Op dinsdag 1 maart 2011 19:52 schreef GlowMouse het volgende:
Ja, ik ben trots op je notatie. Let alleen wel op dat open.dateline en close.dateline uniek zijn bij één ticketid.
| Forum Opties | |
|---|---|
| Forumhop: | |
| Hop naar: | |