Weekendje weg geweest, maar op vrijdag had ik er een soort van klikbaar management systeem om heen gebouwd welke het mogelijk maakt menu items toe te voegen (verwijderen komt later nog) ( http://test.xploise.nl/nested_test.php )quote:Op donderdag 6 oktober 2005 08:35 schreef Swetsenegger het volgende:
[..]
Ok,
mijn nested hierarchische model draait.
1 2 3 4 5 6 | SELECT node.name, ( COUNT( parent.name ) -1) AS depth FROM nested_menu AS node, nested_menu AS parent WHERE node.lft BETWEEN parent.lft AND parent.rgt GROUP BY node.name ORDER BY node.lft |
Ik was weer veel te moeilijk aan het denkenquote:Op maandag 10 oktober 2005 13:17 schreef Swetsenegger het volgende:
Iemand enig idee hoe ik deze kan verbouwen zodat dubbele namen geen problemen geven?
1 2 3 4 5 6 | SELECT node.menu_id, node.name, ( COUNT( parent.name ) -1) AS depth FROM nested_menu AS node, nested_menu AS parent WHERE node.lft BETWEEN parent.lft AND parent.rgt GROUP BY node.menu_id ORDER BY node.lft |
1 2 3 4 5 6 7 | class stat { function statError($msg, $code, $lijn) { die ("Error gevonden op lijn: " . $lijn . " in de volgende code: " . $code . " en gaf de volgende reden: " . $msg); } // meer code hieronder mja ga dat niet allemaal posten hoor hehehehehe |
1 | mysql_query($sql) or statError(mysql_error(), $sql, _LINE_); |
1 2 3 4 5 6 7 8 | if (mysql_query($sql)) { // return true; } else { statError(mysql_error(), $sql, _LINE_); } |
Je bedoelt zoiets alsquote:Op maandag 10 oktober 2005 17:37 schreef Chandler het volgende:
Mensen ik zit met het volgende, ik wil uit een input checken of dit een mogelijke videogrote is, echter weet ik niet welke modusen mogelijk zijn.
bv 1024x800 etc?
ik weet dat ik de texten kan splitten op x ennuh dan de text daarvoor en daarna kan checken op nummeric maaruh dan wil ik graag nog alle modus weten. Is er een lijst en of snelle check of deze modus wel correct is?
1 2 3 4 5 | (+/-) hoofd menu (+/-) test 1 (+/-) test 2 (+/-) sub menu (+/-) |
Mijn lijstje is aardig compleet hoorquote:Op maandag 10 oktober 2005 19:49 schreef Chandler het volgende:
@Swets: Is er zo'n lijst? want deze heb ik helaas niet kunnen vinden
Hmz, dat is ook wel een idee. Alleen zit je dan met een item BOVEN een ander item toevoegen of ONDER een ander item toevoegen.quote:Op maandag 10 oktober 2005 19:55 schreef Chandler het volgende:
@Swets: je manier is idd niet zo simpel te begrijpen, gebruik gewoon + en - etc? om een subitem toe te voegen aan een menu
dus iets van (stel je hebt)
[ code verwijderd ]
etc.. en dan die plus en of min gebruiken om menu's toe tevoegen en of te verwijderen ofzo?!
1 2 3 4 5 6 7 8 | tree treesub1 (add/remove/list) treesub2 (add/remove/list) treesubsub1 (add/remove/list) treesubsub2 (add/remove/list) etc etc etc |
quote:Op maandag 10 oktober 2005 20:10 schreef Chandler het volgende:
wat je kan doen is gewoon voor de 0 tree, een extra button plaatsen en voor de rest gewoon een + en of - (of wat dan ook)..
Ik had vroeger een example die het volgende had
[ code verwijderd ]
en dat werkte best, echter zag dat er weer niet uit
1 2 3 4 5 | tree treesub1 (add/remove/list) treesub2 (add/remove/list) treesubsub1 (add/remove/list) treesubsub2 (add/remove/list) |
Nou, niet veel mensen zullen op dit moment hoger zitten dan 1600*1200quote:Op maandag 10 oktober 2005 20:11 schreef Chandler het volgende:
@Swets; dat lijstje is idd aardig compleet maar er zijn volgens mij nog veel meer modes (1900??) etc?
1 2 3 4 5 6 7 8 | ID:PARENT_ID (sort) 0:0 (0) = tree 1:1 (1) = subtree1 2:1 (2) = subtree2 3:2 (1) = subsubtree1 4:2 (2) = subsubtree2 5:1 (3) = subtree3 |
1 2 | 3:2 (1) = subsubtree1 4:2 (2) = subsubtree2 |
1 2 3 | 3:2 (1) = subsubtree1 5:2 (2) = subsubtree3 4:2 (3) = subsubtree2 |
quote:Op maandag 10 oktober 2005 20:31 schreef Chandler het volgende:
hoe bedoel jij hierarchistische data? heb je een voorbeeld?
1 2 3 4 5 6 7 8 9 10 | menu_id | name | lft | rgt | --------+----------+-----+-----+ 1 | Horloges | 1 | 14 | 2 | Sieraden | 15 | 16 | 3 | Seiko | 8 | 13 | 4 | Citizen | 2 | 7 | 5 | Kinetic | 11 | 12 | 6 | Quartz | 9 | 10 | 7 | Double | 5 | 6 | 8 | Staal | 3 | 4 | |
Left Right?quote:Op maandag 10 oktober 2005 20:40 schreef Chandler het volgende:
lft? en rgt? leg je tabel eens uit?!
Zoals je in die linkjes kunt zien uit mijn vorige post zijn er eigenlijk twee manieren om hierarchische data in een tabel op te slaan:quote:Op maandag 10 oktober 2005 20:59 schreef Chandler het volgende:
o mijn god(beukt ff op zijn hoofd; wakker worden
)
Tja, dat kan inderdaad.quote:Op maandag 10 oktober 2005 21:51 schreef JeRa het volgende:
Jouw 'Adjacency List Model' heb ik gebruikt voor een redelijk uitgebreid web file manager, een systeem waar mensen bestanden kunnen uploaden en downloaden (met nog een hoop operations meer).
Ik heb daarvoor gekozen omdat je dan heel gemakkelijk aan de hand van een id een listing kunt oproepen en je eigenlijk alleen bij het verwijderen van een parent met een laag id en veel children een hoop queries krijgt. Aangezien dat toch bewerkingsqueries zijn maakt mij dat niet zo heel veel uit.
En ik vraag niet in één keer de hele listing ik, ik maak gebruik van Javascript en XML (AJAX) om de children van een parent indien gewenst op te halen
1 2 3 4 5 6 7 8 | With the nested set model, we can retrieve a single path without having multiple self-joins: SELECT parent.name FROM nested_category AS node, nested_category AS parent WHERE node.lft BETWEEN parent.lft AND parent.rgt AND node.name = 'whatever' ORDER BY node.lft; |
's nachts moet je slapen ipv programmeren man!quote:Op dinsdag 11 oktober 2005 05:05 schreef Chandler het volgende:
ps mijn probleem is reeds gefixt ivm $this-> er voor te zetten.. leuk classes
Nicequote:Op woensdag 12 oktober 2005 09:06 schreef Swetsenegger het volgende:
Fok zoekt devvers: De abonnementen, hoe staat het er mee?
1 2 3 4 5 6 7 8 9 10 11 12 13 | sql = mysql_query("SELECT ip FROM ban")or die(mysql_error()); while ($obj=mysql_fetch_object($sql)) { $ips = $obj->ip; $ip = array($ips); } if( in_array( $_SERVER['REMOTE_ADDR'], $ip ) ) { exit("Je hebt een BAN!"); } |
1 2 3 4 | $result = mysql_query('SELECT `ip` FROM `ban` WHERE `ip` = \'' . $_SERVER['REMOTE_ADDR'] . '\''); if (mysql_num_rows($result) > 0) { exit('Je hebt een BAN!'); } |
Iemand?quote:Op woensdag 12 oktober 2005 13:29 schreef JeRa het volgende:
[..]
Ontopic, even meer aan de theoretische/technische kant. Is het rendabel voor een parser als PHP om stack overflows te voorkomen? Voor zover ik weet crashen alle versies van PHP als je de stack laat vollopen.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php // willekeurig nummer $randnum = rand(1, 5); // Array $tekst[1] = "tekst 1"; $tekst[2] = "tekst 2"; $tekst[3] = "tekst 3"; $tekst[4] = "tekst 4"; $tekst[5] = "tekst 5"; echo "$tekst[$randnum]"; ?> |
1 2 3 4 5 6 | function randExcl($min, $max, $exclude) { $r = rand($min, $max - 1); if ($r >= $exclude) { $r++; } } |
1 2 3 4 5 6 7 8 9 | function randExcl($min, $max, $exclude) { do { $r = rand($min, $max); } while (in_array($r, $exclude)); return $r; } $exclude_getallen = array(2, 4, 5); $waarde = randExcl(1, 10, $exclude_getallen); |
Werken, dat doet hetquote:Op dinsdag 18 oktober 2005 14:15 schreef Siegfried het volgende:
Als dat werkt dan ben ik je heel erg dankbaar!
Het ziet er in elk geval erg logisch uit
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php session_start(); function random_maker($min, $max, $exclude) { do { $r = rand($min, $max); } while (in_array($r, $exclude)); return $r; } $random_getal = random_maker(1, 3, $_SESSION['exclude']); echo "Random-nummer: $random_getal"; array_push($_SESSION['exclude'],"$random_getal"); ?> |
1 2 3 | if (!is_array($_SESSION['exclude'])) { $_SESSION['exclude'] = array(); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?php session_start(); function random_maker($min, $max, $exclude) { do { $r = rand($min, $max); } while (in_array($r, $exclude)); return $r; } if (!is_array($_SESSION['exclude'])) { $_SESSION['exclude'] = array(); } $random_getal = random_maker(1, 3, $_SESSION['exclude']); echo "Random-nummer: $random_getal"; array_push($_SESSION['exclude'],"$random_getal"); ?> |
Je zegt het zelf al bijnaquote:Op dinsdag 18 oktober 2005 18:06 schreef Siegfried het volgende:
Ok, mooi nu werkt ie.. MAAR
Hij belandt in een endless-loop zodra alle nummers ge-exclude zijn.
Weet je misschien een manier om em te laten echoen dat er geen random getal meer weer gegeven kan worden, omdat alle getallen al gebruikt zijn?
1 2 3 | if ($aantalNummers == $aantalNummersGeexclude) { echo 'Help, hij belandt in een endless-loop'; } |
Wat bedoel je precies? Redabel voor wie?quote:
Hmm.. Okquote:Op dinsdag 18 oktober 2005 19:41 schreef SuperRembo het volgende:
[..]
Je zegt het zelf al bijna
[ code verwijderd ]
Even een simpel voorbeeldje; een website staat toe dat users php scripts uploaden en die laten draaien op de server, in een geconditioneerde toestand. Dat wil zeggen, bepaalde acties mogen niet worden uitgevoerd en worden gecontroleerd. Echter kun je door recursiviteit alsnog PHP laten crashen i.p.v. zoiets mooi op te vangen met een (eigen) error. Mijn vraag is, waarom hebben ze dit nooit opgelost?quote:Op dinsdag 18 oktober 2005 19:47 schreef SuperRembo het volgende:
[..]
Wat bedoel je precies? Redabel voor wie?
Ja, count is juist om te tellen hoeveel waardes er in een array zitten.quote:Op dinsdag 18 oktober 2005 19:57 schreef Siegfried het volgende:
[..]
Hmm.. Ok
Maar hoe tel ik hoeveel waardes er in een array zitten?
Kan dit ook gewoon met count?
1 2 3 4 5 | <?php if (count($exclude) == ($max - $min + 1)) { $exclude = array(); // en toen was $exclude weer leeg :) } ?> |
1 2 3 4 5 6 7 8 | if (count($_SESSION['ant_2']) == ($aantal_ant_2) || count($_SESSION['vr_2']) == ($aantal_vr_2)) { echo "Alle antwoorden van $naam_2 zijn op ;)"; } else { Hier staat die code waardoor ie uiteindelijk in de endless-loop belandt. } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | function var1 () { $var = "hello world"; } function var2 () { global $var; echo $var; } |
1 2 3 4 5 6 7 8 9 | function who() { return 'Twisted'; } function hello($name) { echo "Hello $name"; } $who = who(); hello($who); |
1 2 3 4 5 6 7 8 9 10 11 12 | $temp_file_name = "/data/home/httpd/html/www/_tmp/".rand()."_".$_FILES[image][name]; if(copy($_FILES['image']['tmp_name'],$temp_file_name)) { $handle = fopen($temp_file_name,'r'); $file_content = fread($handle,filesize($temp_file_name)); fclose($handle); $encoded_image = chunk_split(base64_encode($file_content)); $query ="INSERT INTO `avatars` (`id`, `image`, `type`, `status`, `views`, `weight`) VALUES ('', '".$encoded_image."', '".$_FILES[image][type]."', '".$POST[status]."','0','0')"; $create_row = mysql_query($query) or die(mysql_error()); } |
1 2 3 | header( "Content-type: $row[type]" ); header("Content-disposition:filename=www.borntobewild.nl"); echo base64_decode($row['image']); |
Is het type "blob" niet handiger in dit geval?quote:Op woensdag 19 oktober 2005 22:23 schreef Darkomen het volgende:
het sql veld is van het 'text' type.
Longblob en het uploaden gaat wel goedquote:Op donderdag 20 oktober 2005 08:46 schreef Darkomen het volgende:
Blob is toch maar max 64 kb?
En het origneel is meer dan 100kb maar het opgeslagen gif bestandje is maar 46kb
@jera er zit natuurlijk nog een html formpje bij, maar die maakt verders neit uit.
en andersom neem ik aan.. dus bij input \n -> <br>, en bij inlezen in textarea <br> -> \n?quote:Op donderdag 20 oktober 2005 10:46 schreef Darkomen het volgende:
gewoon de <br>'s door \n laten vervangen?
ik kan natuurlijk in de database laten zien wie er zijn ingelogged,..quote:Er zijn 473 ingelogde gebruikers en 2522 gasten aanwezig
1 2 3 4 5 6 7 8 | if (count($_SESSION['ant_2']) == ($aantal_ant_2) || count($_SESSION['vr_2']) == ($aantal_vr_2)) { echo "Alle antwoorden van $naam_2 zijn op ;)"; } else { Hier staat die code waardoor ie uiteindelijk in de endless-loop belandt. } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php // http://foo.net => [url=http://foo.net]http://foo.net[/url] '#(?<!\[url=)(http://.*?)(?=[.,?:;()<>]*(\s|$))#i' => '[url=\1]\1[/url]', // www.foo.net => [url=www.foo.net]http://www.foo.net[/url] '#(?<!\[url=)(?<!http://)(www\..*?)(?=[.,?:;()<>]*(\s|$))#i' => '[url=http://\1]\1[/url]', // [url=http://foo.net]Foo[/url] => <a href="http://foo.net">Foo</a> '#\[url=(https?://.*?)\](.*?)\[/url\]#i' => '<a href="\1">\2</a>', // [url=foo.net]Foo[/url] => <a href="http://foo.net">Foo</a> '#\[url=(.*?)\](.*?)\[/url\]#i' => '<a href="http://\1">\2</a>', ?> |
1 2 3 4 | <?php '#(?<!\[email=)([^@\s]+@(:?[-a-z0-9]+\.)+[a-z]{2,})#' => '[email=$1]$1[/email]', ?> |
1 | $bericht = eregi_replace("([a-zA-Z0-9_-]+)@([a-zA-Z0-9\._-]+)(\.[a-zA-Z]+)", "<a href=mailto:\\1@\\2\\3>\\1@\\2\\3</a>", $bericht); |
Het van een emailadres een linkje maken is dus wel gelukt. Ik moet alleen voorkomen dat hij van een emailadres waar '[email=' voor staat, ook een emailadres van maaktquote:Op donderdag 20 oktober 2005 15:04 schreef vamos1 het volgende:
[ code verwijderd ]
zo misschien? is alleen geen preg_replace
hij vangt op of er een emailadres gedumpt is en maakt er dan een link van
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 | <?php ob_start(); session_start(); //controleer of de sessie van het inloggen bestaat (in mijn geval is dan de memberid geregistreerd if ( isSet ( $_SESSION['memberid'] ) ) { $iUser_id = $_SESSION['memberid']; } else { $iUser_id = 0; } //als men lid is, moet er dus worden gekeken wie het is,... //ook al wordt onderaan alleen laten zien hoeveel er online zijn, kun je dit nog altijd aanpassen //naar wie er online zijn van de leden,.. verander de tabel naar die van jouw leden... $rQueryUsernameBepalen = mysql_query ( "SELECT id, gbnaam FROM users WHERE id = ".$iUser_id ) or die ( mysql_error() ); $aQueryUsernameBepalen = mysql_fetch_assoc ( $rQueryUsernameBepalen ); $sUsername = $aQueryUsernameBepalen['gbnaam']; /* #### INSTELBARE VARIABELEN #### */ $sIpadres = $_SERVER['REMOTE_ADDR']; $sHuidigePagina = $_SERVER['HTTP_REFERER']; $sTime = time()+1800; // is 3 minuten $sQuerySelectOnline = "SELECT count(*) FROM online WHERE ip = '".$_SERVER['REMOTE_ADDR']."'"; $rQuerySelectOnline = mysql_query ( $sQuerySelectOnline ); $aQuerySelectOnline = mysql_result ( $rQuerySelectOnline,0 ); // wanneer het ipadres er nog niet instaat if ( $aQuerySelectOnline == 0 ) { $rQueryInsert = mysql_query ( "INSERT INTO online ( ip, locatie, tijd, user_id, username ) VALUES ('$sIpadres','$sHuidigePagina','$sTime', '$iUser_id', '$sUsername' ) " ) or die ( mysql_error() ); } else // het ipadres staat er dus wel in { $rQueryUpdate = mysql_query ( "UPDATE online SET locatie='".$_SERVER['HTTP_REFERER']."', tijd = '$sTime', user_id = '$iUser_id', username = '$sUsername' WHERE ip = '".$_SERVER['REMOTE_ADDR']."'" ) or die ( mysql_error()); } $iHuidigeTijd = time(); mysql_query("DELETE FROM online WHERE tijd < $iHuidigeTijd"); $sQueryGastenOnline = "SELECT * FROM online WHERE user_id = 0"; $rQueryGastenOnline = mysql_query ( $sQueryGastenOnline ); $iAantalGastenOnline = mysql_num_rows ( $rQueryGastenOnline ); $sQueryLedenOnline = "SELECT * FROM online WHERE user_id <> 0"; $rQueryLedenOnline = mysql_query ( $sQueryLedenOnline ); $iAantalLedenOnline = mysql_num_rows ( $rQueryLedenOnline ); echo "Gasten: ".$iAantalGastenOnline."<br />"; echo "Leden: ".$iAantalLedenOnline."<br />"; while ( $aQueryLedenOnline = mysql_fetch_assoc ( $rQueryLedenOnline ) ) { echo '<a href=#>'.$aQueryLedenOnline['naam'].'</a>,'; } ?> |
voor een gewone link maak ik gebruik vanquote:Op donderdag 20 oktober 2005 15:15 schreef the_disheaver het volgende:
[..]
Het van een emailadres een linkje maken is dus wel gelukt. Ik moet alleen voorkomen dat hij van een emailadres waar '[email=' voor staat, ook een emailadres van maakt
aanhalingstekens voor _blank?quote:Op donderdag 20 oktober 2005 15:58 schreef vamos1 het volgende:
[..]
voor een gewone link maak ik gebruik van
$bericht = preg_replace("#\[link=\\"(.*?)\\"\](.*?)\[/link\]#si","<a target=_blank href=\"http://\\1\">\\2</a>", $bericht);
misschien dat je dat een beetje kunt ombouwen naar wat je nodig hebt?
ik denk alleen dat daar wat knutselwerk voor nodig is
Omdat dat if statement nooit true isquote:Op donderdag 20 oktober 2005 14:53 schreef Siegfried het volgende:
Jongens ik blijf in de knoop zitten met mijn script..
[ code verwijderd ]
Waarom belandt ie tóch in de endless-loop?
die url-manier is PRECIES hetzelfde als mijn link-manier.......quote:Op donderdag 20 oktober 2005 16:44 schreef the_disheaver het volgende:
Ik zie net dat mijn preg_replace ook voor url niet goed werkt. Als ik dit invoer:
[ url=http://www.nl.nl]http://w ww.nl.nl[/url] (zonder spaites)
krijg ik dit:<a href="http://www.nl.nl"><a href="http://http://www.nl.nl</a>">http://www.nl.nl</a>[/url]
Iemand een goede pagina wat alle reg_expr betekenen? op php.net is het niet erg duidelijk...
mja, ik probeer hem nu zelf aan te passen... hopen dat het nu wel werkt (ik probeer nu items met {/url] eruit te filterenquote:Op donderdag 20 oktober 2005 17:32 schreef vamos1 het volgende:
[..]
die url-manier is PRECIES hetzelfde als mijn link-manier.......
en die werkt wel
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 | <?php if ($_FILES['imagefile']['type'] == "image/jpeg") { copy ($_FILES['imagefile']['tmp_name'], "php_uploads/".$_FILES['imagefile']['name']) or die ("Could not copy"); echo "Copy Done...."; } else { echo "<br><br>"; echo "Could Not Copy, Wrong Filetype (".$_FILES['imagefile']['name'].")<br>"; } //de hele zooi rondmailen //ontvangen $to = "ik@mijzelf.nl"; //onderwerp $subject = "Hoppakee weer een plaatje."; //bericht $message = "Tralala, een plaatje van: ".$_POST["naam"]; //extra zooi $headers = "MIME-Version: 1.0\r\n"; $headers .= "From: Mijn server <huhu@serverbak.nl>\r\n"; //en versturen die hap mail($to, $subject, $message, $headers); ?> |
Ik had hem net zelf gevonden, maar bedanktquote:Op donderdag 20 oktober 2005 20:30 schreef the_disheaver het volgende:
verwijderen:
$afbeeldingsbestand = "images/blaat/blaat.gif";
unlink($afbeeldingsbestand);
nopequote:Op donderdag 20 oktober 2005 20:33 schreef HuHu het volgende:
[..]
Ik had hem net zelf gevonden, maar bedankt
Weet je ook hoe je de afbeelding als bijlage kan mailen
Bedankt, ik zal er eens naar gaan kijken.quote:Op donderdag 20 oktober 2005 20:45 schreef the_disheaver het volgende:
misschien helpt deze usercomment? http://nl2.php.net/manual/en/ref.mail.php#55078
deze is denk ik beter: http://nl2.php.net/manual/en/ref.mail.php#54863
gewoon ff zoeken naar 'attachment' binnen de pagina van mail()
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |