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 | <?php Define(DB,"database12");//define database Define(EMAIL,"backup@domein.com");//define email function MailBackup($content) { $filename = "Backup_".DB."_".date("d_m_y").".zip"; $content = gzencode($content); //should be a "more unique" string, worked for the test $boundary = md5(time()); //base-64 encode $content = chunk_split(base64_encode($content)); $subject = 'Backup van '.DB.' - '.date("m_d_y"); $headers = 'MIME-Version: 1.0' ."\n" . 'Content-type: multipart/mixed; boundary="' .$boundary .'"' ."\n" . 'From: archive.php <postmaster@domein.nl>' ."\n" . 'Reply-To: postmaster@domein.nl ' ."\n"; $headers .= "--" .$boundary ."\n" . "Content-type: multipart/mixed;\n" . 'Content-Disposition: attachment;' . 'filename='.$filename .";\n" . 'Content-transfer-encoding: base64' ."\n\n" . $content ."\n\n" . '--' .$boundary .'--'; mail(EMAIL, $subject, $message, $headers); } ?> |
Ehm.. nee.. Hier snap ik dus serieus helemaal geen hol van. Maar misschien ligt dat gewoon aan mij. :squote:Op vrijdag 21 oktober 2005 16:42 schreef Ali Salami het volgende:
De tijd die staat voor 12 uur die nacht - time() is het aantal seconden dat time() verwijderd is van middernacht. Dat kun je vervolgens in setcookie voor 3600 in de plaats zetten. Het uitvinden hoe je de middernachtdatum uit kunt vinden lukt je vast wel
1 2 3 | <?php $koekje=mktime(00,00,00,$maand,$dag,$jaar); ?> |
1 2 3 | <?php setcookie("tellerblokkeren", "true",$koekje, "/"); ?> |
Yep. Je mag ipv 0 ook 0:0:0 schrijven, dat komt op hetzelfde neerquote:Op vrijdag 21 oktober 2005 18:18 schreef Ali Salami het volgende:
Die nul geeft dan aan dat het op 00.00 uur moet worden gezet? Zo ja, dan is dat nog simpeler
1 2 3 4 5 6 7 8 9 | <?php $randoms = array(); for($i=0;$i<10000;$i++) { $randoms[rand(1,10)] += 1; } echo "<pre>"; var_dump($randoms); echo "</pre>"; ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | array(10) { [9]=> int(993) [1]=> int(991) [4]=> int(1021) [6]=> int(1065) [2]=> int(956) [10]=> int(1069) [5]=> int(982) [3]=> int(949) [7]=> int(995) [8]=> int(979) } |
Hoe kom je daar bijquote:Op zaterdag 22 oktober 2005 09:32 schreef the_disheaver het volgende:
Het is normaal, omdat uitersten gewoon meer voorkomen. (1-3,7-10) en (4-6)
Dit werkt perfect! Thx!quote:Op vrijdag 21 oktober 2005 17:49 schreef Light het volgende:
En waarom niet gewoon:
[ code verwijderd ]
Er is heel wat geschreven over de bagger implementaties van random functies die in heel wat compilers e.d. worden gebruikt. Ik zou er dus niet blindelings op vertrouwen.quote:Op zaterdag 22 oktober 2005 11:21 schreef SuperRembo het volgende:
[..]
Hoe kom je daar bijrand() heeft een uniforme distributie, elke mogelijke uitkomst heeft een gelijke kans.
Dat zal best. Maar geldt dat ook voor php? Uit een testje zoals die van Light blijkt helemaal geen afwijking.quote:Op zaterdag 22 oktober 2005 12:15 schreef vbmot het volgende:
[..]
Er is heel wat geschreven over de bagger implementaties van random functies die in heel wat compilers e.d. worden gebruikt. Ik zou er dus niet blindelings op vertrouwen.
Ja, de uitkomst zou iig gelijk zijn, en is het waarschijnlijk nagenoeg ook.quote:Op zaterdag 22 oktober 2005 11:21 schreef SuperRembo het volgende:
[..]
Hoe kom je daar bijrand() heeft een uniforme distributie, elke mogelijke uitkomst heeft een gelijke kans.
Dan ga je het testen, zoals met die paar regels code van mij.quote:Op zaterdag 22 oktober 2005 12:15 schreef vbmot het volgende:
[..]
Er is heel wat geschreven over de bagger implementaties van random functies die in heel wat compilers e.d. worden gebruikt. Ik zou er dus niet blindelings op vertrouwen.
Dat ligt gewoon aan wat jij onder "uiterste waarde" verstaat. Je kan ook zeggen dat 1 en 10 de uiterste waarden zijn, dan is de kans op een uiterste waarde 20%.quote:Op zaterdag 22 oktober 2005 12:33 schreef the_disheaver het volgende:
[..]
Ja, de uitkomst zou iig gelijk zijn, en is het waarschijnlijk nagenoeg ook.
Maar als je naar de getallen 1-10 kijkt, en daar de uiterste waarde uit gaat halen:
Dat zijn 1,2,3&8,9,10
De niet uiterste waarde zijn 4,5,6,7
Ofwel: 6/10de is een uiterste waarde, ofwel de kans op een uiterste waarde is 60%.
Gallery?quote:Op zaterdag 22 oktober 2005 20:45 schreef fokME2 het volgende:
Ik ben opzoek naar een script om fotoalbums 'online' te krijgen. Ik heb al redelijk wat gezocht, gecopy-paste, maar het lukt met maar niet..
Ik zoek een script waarbij je:
>> Zipfiles uploaden
>> Zipfiles die je ftp hebt geupload openen
>> De foto's automatisch resizen
>> De foto dumpen in een aparte map per fotoalbum
Iemand?
Misschien iets met eval() ?quote:Op zaterdag 22 oktober 2005 18:38 schreef Darkomen het volgende:
Vraagje:
Ik heb een cms gebouw, de pagina;s worden opgelagen in een mysql tabel.
Maar ik wil in een enkele pagina ook php gebruiken hoe kan ik dat doen?
niet?quote:Op zaterdag 22 oktober 2005 18:38 schreef Darkomen het volgende:
Vraagje:
Ik heb een cms gebouw, de pagina;s worden opgelagen in een mysql tabel.
Maar ik wil in een enkele pagina ook php gebruiken hoe kan ik dat doen?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | if (isset($verzonden)) { $_SESSION['tekst'] = $tekst; } echo "<form method=\"post\" action=\"$PHP_SELF\">\n"; echo "<td><font color=\"#DAAE57\"> Tekst: </td>"; echo "<td><input type=\"text\" name=\"tekst\" size=\"17\" maxlength=\"9\">"; echo "<td><font size=\"1\" face=\"Arial\"><font color=\"#FFFFFF\">Max. 9 posities in hoofdletters</font</td>"; echo "</tr><tr>"; echo "<td><font color=\"#DAAE57\"> Kleur opdruk: </td>"; echo "<td><select size=\"1\" name=\"kleuropdruk\"> <option>Zwart</option> <option>Wit</option></select></td>"; echo "<input type=\"submit\" name=\"verzonden\" value=\"Toevoegen\">"; echo "</form>"; ?> |
1 |
edit: whats wrong with it ?quote:Warning: Delimiter must not be alphanumeric or backslash in /usr/home/jeroen/www/forum/sources/functions.php on line 2135
1 |
1 |
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 | /// /// Find file sources/functions.php /// at the beginning after php and copyright insert these lines (between ///) /// function include_hack_handler($buf) { global $include_temp_str; $include_temp_str.=$buf; return ""; } /// /// In sources/functions.php find this line: $text = preg_replace( "/(<|<)% (BOARD HEADER|CSS|JAVASCRIPT|TITLE|BOARD|STATS|GENERATOR|COPYRIGHT|NAVIGATION) %(>|>)/i", "<% \2 %>", $text ); /// Replace it with $text = preg_replace( "/(<|<)% (BOARD HEADER|CSS|JAVASCRIPT|TITLE|BOARD|STATS|GENERATOR|COPYRIGHT|NAVIGATION|INCLUDE \"\S*?\") %(>|>)/i", "<% \2 %>", $text ); /// /// ///In file sources/functions.php find function do_output($output_array) { global $DB, $Debug, $skin_universal, $ibforums; /// replace with function do_output($output_array) { global $DB, $Debug, $skin_universal, $ibforums, $include_temp_str; /// /// ///In file sources/functions.php after $ibforums->skin['template'] = str_replace( "<% NAVIGATION %>" , $nav , $ibforums->skin['template']); /// insert this // // Include tag hack // $incmatches=array(); while (preg_match("x3C% INCLUDE \"(S*?)\" %x3E",$ibforums->skin['template'],$incmatches)>0) { $include_temp_str=""; ob_start('include_hack_handler'); include($incmatches[1]); ob_end_flush(); $ibforums->skin['template'] = str_replace("<".$incmatches[0].">",$include_temp_str,$ibforums->skin['template']); $incmatches=array(); } /// //Now you can use this directive in board wrapper: <% INCLUDE "http://www.yourdomain.com/test.php" %> //You can include any valid PHP or HTML file this way. ?> |
[offtopic]quote:Op dinsdag 25 oktober 2005 21:16 schreef SuperRembo het volgende:
Ik zie wel dat de nieuwe code-tag met scrollbars knap waardeloos is als de horizontale scrollbar buiten beeld is
Dat heb ik inderdaad ook wel eens gezien, en dat werkt ook wel handigquote:Op woensdag 26 oktober 2005 05:53 schreef Ro�a� het volgende:
In principe kan je code tags idd gewoon collapsen tot één regel waar alleen "klik hier voor alle code" staat. Geen idee of dat is wat GoT doet?
Wow, volgens mij gaat er iets niet goed met de encoding van Roönaäns naam in die quotequote:Op woensdag 26 oktober 2005 06:40 schreef Light het volgende:
[..]
Dat heb ik inderdaad ook wel eens gezien, en dat werkt ook wel handig
1 2 3 4 5 6 7 8 9 | if (isset($verzonden)) { $_SESSION['tekst']['artikel_id'] = $tekst; } echo "<form method=\"post\" action=\"$PHP_SELF\">\n"; echo "<td><font color=\"#DAAE57\">Tekst:</td>"; echo "<td><input type=\"text\" name=\"tekst\" size=\"17\" maxlength=\"9\">"; ?> |
1 2 3 4 | echo "<td width=\"85\" align=\"center\"><font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">".$tekst['artikel_id']."</td>"; ?> |
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 | php session_start(); include "config.inc.php"; echo "<body bgcolor=\"#000000\">"; echo "<body link=\"#FFFFFF\" vlink=\"#FFFFFF\" alink=\"#FFFFFF\">"; // Toevoegen if( isset( $_POST['ADD'] ) && ereg('^[1-9][0-9]*$', $_POST['aantal'])) { $_SESSION['winkelwagen'][$_POST['artikelid']] = $_POST['aantal']; } // Verwijderen if( isset( $_GET['DEL'] ) ) { unset($_SESSION['winkelwagen'][$_GET['DEL']]); } // Laat lijst zien if( $_SESSION['winkelwagen'] ) { $totaal = 0; $totaalart = 0; echo "<table border=\"0\" width=\"539\" cellspacing=\"0\" cellpadding=\"0\" id=\"table1\">"; echo "<tr>"; echo "<td width=\"47\" align=\"center\"><b><font size=\"2\" face=\"Verdana\" color=\"#DAAE57\">Aantal</font></b></td>"; echo "<td width=\"58\" align=\"center\"><b><font face=\"Verdana\" color=\"#DAAE57\" size=\"2\">Naam</font></b></td>"; echo "<td width=\"152\" align=\"center\"><b><font size=\"2\" face=\"Verdana\" color=\"#DAAE57\">Omschrijving</font></b></td>"; echo "<td width=\"73\" align=\"center\"><b><font size=\"2\" face=\"Verdana\" color=\"#DAAE57\">Prijs in ¤</font></b></td>"; echo "<td width=\"85\" align=\"center\"><b><font size=\"2\" face=\"Verdana\" color=\"#DAAE57\">Tekst</font></b></td>"; echo "<td width=\"91\" align=\"center\"><b><font size=\"2\" face=\"Verdana\" color=\"#DAAE57\">Tekst kleur</font></b></td>"; echo "<td width=\"20\" align=\"center\"> </td>"; echo "</tr>"; foreach ( $_SESSION['winkelwagen'] as $key=>$val ) { $sql = "SELECT * FROM artikel WHERE artikel_id=$key"; $resultaat = mysql_query($sql); while ($rij = mysql_fetch_array($resultaat)) { echo "<tr>"; echo "<td width=\"47\" align=\"center\"><font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">$val</td>"; echo "<td width=\"58\" align=\"center\"><font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">".$rij["naam"]."</td>"; echo "<td width=\"152\" align=\"center\"><font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">".$rij["omschrijving"]."</td>"; $totaalart = totaalart + ($rij["prijs"] * $val); echo "<td width=\"73\" align=\"center\"><font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">".number_format($totaalart, 2, ',', ' ')."</td>"; echo "<td width=\"85\" align=\"center\"><font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">".$tekst[$artikel_id]."</td>"; echo "<td width=\"91\" align=\"center\"><font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\"></td>"; echo "<td width=\"20\" align=\"center\"><font size=\"2\" face=\"Verdana\" color=\"#DAAE57\"><a href=\"$PHP_SELF?DEL=$key\"><img src=\"images\del.gif\" border=\"0\" alt=\"Verwijder ".$rij["naam"]."\"></a></td>"; echo "</tr>"; $totaal = $totaal + ($rij["prijs"] * $val); } } echo "<tr>"; echo "<td width=\"47\" align=\"center\"> </td>"; echo "<td width=\"58\" align=\"center\"> </td>"; echo "<td width=\"152\" align=\"center\"><b><font size=\"2\" face=\"Verdana\" color=\"#DAAE57\">Totaal bedrag:</font></b></td>"; echo "<td width=\"73\" align=\"center\"><font size=\"2\" face=\"Verdana\" color=\"#DAAE57\">".number_format($totaal, 2, ',', ' ')."</font></td>"; echo "<td width=\"85\" align=\"center\"> </td>"; echo "<td width=\"91\" align=\"center\"> </td>"; echo "<td width=\"20\" align=\"center\"> </td>"; echo "</tr>"; echo "</table>"; } else { echo "<font color=\"#FFFFFF\">De winkelwagen is momenteel leeg..."; } if ($_GET["artikelid"]) { $sql = "SELECT * FROM artikel WHERE artikel_id=".$_GET["artikelid"]; $result = mysql_query($sql); if (mysql_num_rows($result) > 0) { $naam = mysql_result($result, 0, "Naam"); $prijs = number_format(mysql_result($result, 0, "Prijs"), 2, ',', ' '); echo "<font color=\"#DAAE57\">Artikel toevoegen aan winkelwagen</font>"; echo "<form method=\"post\" action=\"$PHP_SELF\">"; echo "<input type=\"hidden\" name=\"artikelid\" value=\"$artikelid\">"; echo "<input type=\"text\" name=\"aantal\" value=\"1\" size=\"2\" maxlength=2>"; echo "<font color=\"#FFFFFF\"> x Artikel: $naam (prijs: $prijs euro)</font>"; echo "<input type=\"submit\" name=\"ADD\" value=\"Toevoegen\">"; echo "</form>"; } } ?> |
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 | php session_start(); include "config.inc.php"; echo "<body bgcolor=\"#000000\">"; echo "<body link=\"#FFFFFF\" vlink=\"#FFFFFF\" alink=\"#FFFFFF\">"; $sitepad = "images/"; if($_SESSION['winkelwagen'] ) { foreach($_SESSION['winkelwagen'] as $key=>$val ) { $sql = "SELECT * FROM artikel WHERE artikel_id=$key"; $resultaat = mysql_query($sql); while ($rij = mysql_fetch_array($resultaat)) for ($nr=1; $nr<=$val; $nr++) { $sql = "SELECT * FROM afbeelding WHERE artikel_id=".$rij["artikel_id"]; $afbeeldingen = mysql_query($sql); if (mysql_num_rows($afbeeldingen) > 0) { while ($afb_rij = mysql_fetch_array($afbeeldingen)) { $bestandsnaam = $sitepad.$afb_rij["afbeelding_id"].$afb_rij["bestandstype"]; echo "$key"; echo "".$tekst['__artikel_id__'].""; echo "<table border=0>"; echo "<tr>"; echo "<td><font color=\"#DAAE57\">Artikel:</td>"; echo "<td><img src=\"$bestandsnaam\" width=\"125\" height=\"30\"></td>"; echo "<td align=\"left\" valign=\"top\"></td>"; echo "</tr><tr>"; echo "<td>"; echo "<font color=\"#DAAE57\">Prijs per stuk:"; echo "</td>"; echo "<td><font color=\"#DAAE57\">".number_format($rij["prijs"], 2, ',', '')."</td>"; echo "<td></td>"; echo "</tr><tr>"; if (isset($verzonden)) { $_SESSION['tekst'][$artikel_id] = $tekst; } echo "<form method=\"post\" action=\"$PHP_SELF\">\n"; echo "<td><font color=\"#DAAE57\">Tekst:</td>"; echo "<td><input type=\"text\" name=\"tekst\" size=\"17\" maxlength=\"9\">"; echo "<td><font size=\"1\" face=\"Arial\"><font color=\"#FFFFFF\">Max. 9 posities in hoofdletters</font></td>"; echo "</tr><tr>"; echo "<td><font color=\"#DAAE57\">Kleur opdruk:</td>"; echo "<td></td>"; echo "<input type=\"submit\" name=\"verzonden\" value=\"Toevoegen\">"; echo "</form>"; echo "</tr>"; echo "</table>"; } } } } } ?> |
1 2 | dan hoef je "dubbele quotes" niet te escapen'; |
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 | $header=""; $message=""; $boundary='--' . md5( time() ); $priority='3 (Normal)'; $charset="iso-8859-1"; $ctencoding="8bit"; $subject="Een nieuwe afbeelding"; $body = "Een nieuwe afbeelding."; $to="mij@mail.nl"; $from=$naam."<".$email.">"; $sep= chr(13) . chr(10); $ctype=$_FILES['imagefile']['type']; $disposition="inline"; $filename = basename($path); $message .="--$boundary\n"; $message .= "Content-Type: text/plain; charset=$charset\n"; $message .= "Content-Transfer-Encoding: $ctencoding\nContent-Disposition: $disposition\n\n" . $body ."\n"; $message .="--$boundary\nContent-Type: $ctype; name=\"$filename\"\n"; $message .="Content-Transfer-Encoding: base64\nContent-Disposition: attachment; filename=\"$filename\"\n"; $linesz= filesize($path)+1; $fp= fopen( $path, 'r' ); $content = chunk_split(base64_encode(fread( $fp, $linesz))); fclose($fp); $message .= $sep.$content.$sep.$boundary."--"; $header.="From: $from\nX-Priority: $priority\n"; $header.="Mime-Version: 1.0\nContent-Type: multipart/mixed;\n boundary=\"$boundary\"\n"; $header.="Content-Transfer-Encoding: $ctencoding\nX-Mailer: Php/libMailv1.3\n"; mail($to,$subject,$message."\n",$header); ?> |
Die bovenste link is niet voor bijlagen, voor zover ik het begrijp.quote:Op woensdag 26 oktober 2005 19:34 schreef sylvesterrr het volgende:
http://nl3.php.net/manual/en/function.mail.php#57725
http://pear.php.net/package/Mail
http://phpmailer.sourceforge.net/
Ok... ik heb PHPmailer geinstalleerd en hij werkt. Maar mijn probleem is nog steeds niet over. JPG bestanden met daarin EXIF informatie (eigenaar, merk, datum, enz...) kan ik niet als bijlage meegeven. De mail wordt dan gewoon niet verzonden. Dat terwijl PHPmailer gewoon een "Message has been sent" geeft.quote:Op donderdag 27 oktober 2005 05:47 schreef Roonaan het volgende:
Gewoon phpmailer gebruiken. Een class is niets meer dan een phpscript met een class definition erin. Als je zelf php files op je server kan zetten, kan je ook de derde class erop zetten. PEAR kan je ook zelf erop zetten, maar kost wat meer moeite als je beginnende PHPer bent. (Niet veel moeite though).
Als je de count in je WHERE clausule zet, moet je die ook wel in je select zetten. Dat INNER JOIN is volgens mij niet nodig, en kan je gewoon vervangen door een komma.quote:Op donderdag 27 oktober 2005 09:13 schreef Darkomen het volgende:
Ik ben niet zo goed met joins etc, dus dat wil ik leren maar wat doe ik fout bij deze join?
"SELECT p.username,p.id,p.Model FROM profielen p INNER JOIN profielen_images i ON i.user_id = p.id WHERE COUNT(i.id) > 0"
Ik heb dus 2 tabellen, profielen en profielen_images en ik wil de profielen selecteren welke 1 of meerdere fotos hebben?
Echo de mail eens, eens kijken wat je krijgt.quote:Op donderdag 27 oktober 2005 09:15 schreef HuHu het volgende:
[..]
Ok... ik heb PHPmailer geinstalleerd en hij werkt. Maar mijn probleem is nog steeds niet over. JPG bestanden met daarin EXIF informatie (eigenaar, merk, datum, enz...) kan ik niet als bijlage meegeven. De mail wordt dan gewoon niet verzonden. Dat terwijl PHPmailer gewoon een "Message has been sent" geeft.
Kan het soms aan de mailserver liggen?
Het werkt wel, de headers en zo zijn allemaal correct. Er wordt alleen niets verzonden. Gebruik ik een andere JPG of een tekst-document als bijlage, dan krijg ik binnen een seconde die mail in m'n inbox.quote:Op donderdag 27 oktober 2005 09:31 schreef Darkomen het volgende:
[..]
Echo de mail eens, eens kijken wat je krijgt.
Edit: Die query klopt ook niet, ik begin er steeds minder van te begrijpen :S
1 2 3 4 | FROM profielen p WHERE p.id IN (SELECT i.user_id FROM profielen_images i) |
zoals hierboven al gezegd, voor een count moet je een Group By in je query hebben.quote:Op donderdag 27 oktober 2005 09:56 schreef Darkomen het volgende:
Huhu uddm die komen daar niet in voor, ik kreeg "SELECT count(*), p.id FROM profielen p, profielen_images i WHERE i.user_id = p.id AND count(p.id) > 0
Invalid use of group function"
En 1 van die kinderziektes blijkt toch iets ernstiger...quote:Op woensdag 26 oktober 2005 16:49 schreef LeeHarveyOswald het volgende:
ik heb het min of meer opgelostnog wel wat kleine kinderziektes..
nou snap ik het ff niet meer, met mn eerste query kreeg je toch ook een error? Werkt het nou allemaal wel of niet?quote:Op donderdag 27 oktober 2005 10:01 schreef Darkomen het volgende:
Nah je bovenstaande query werkt ook al dus ik ben blij, maar toch even geprobeerd
SELECT count(*), p.id FROM profielen p, profielen_images i WHERE i.user_id = p.id AND count(p.id) > 0 GROUP BY p.id
Invalid use of group function
dat is onnodig moeilijk doen.quote:Op donderdag 27 oktober 2005 10:19 schreef Darkomen het volgende:het werkt met de query:
SELECT p.id
FROM profielen p
WHERE p.id IN (SELECT i.user_id
FROM profielen_images i)
Deze levert mij meerdere (157) resultaten op , dus alle images die in profiel_images staan.quote:Op donderdag 27 oktober 2005 10:30 schreef Tokus het volgende:
[..]
dat is onnodig moeilijk doen.
select p.id
from profielen p, profielen_images i
where p.id = i.user_id
zou precies hetzelfde resultaat moeten geven, maar is wel beter.
Ah a, meerdere images. Dan zet je er een distinct tussen.quote:Op donderdag 27 oktober 2005 10:45 schreef Darkomen het volgende:
[..]
Deze levert mij meerdere (157) resultaten op , dus alle images die in profiel_images staan.
De eerste query geeft me de disctincte userid op.
hey hey hey trekken we geen nummertjes meer tegenwoordigquote:Op donderdag 27 oktober 2005 11:19 schreef Pronk het volgende:
Is het mogelijk om te checken of een pagina ge-include is of niet?
Ik heb namelijk een probleem dat een php pagina af en toe ge-include wordt door een andere pagina, maar meestal gewoon direct wordt aangeroepen.
Deze pagina maakt gebruik van sessies, op het moment dat deze pagina ge-include wordt door een andere pagina krijg ik dus een session start error.
Nu wil ik dus eigenlijk in deze pagina een check maken of hij direct is aangeroepen of dat de pagina ge-include is. Aan de hand van het resultaat van deze check wil ik dan bepalen of de sessie gestart moet worden.
Ik hoop dat ik zo duidelijk genoeg ben geweest, zoja... is zoiets mogelijk?
Dat werkt inderdaad perfect! THXquote:Op donderdag 27 oktober 2005 12:16 schreef Darkomen het volgende:
Er worden hier nooit nummertjes getrokken, jij hebt het probleem dat je een forum van een andere gebruikt en daar een hack van nog iemand anders gebruikt en ja niet iedereen kan je daar wat over vertellen.
In je pagina die de andere pagina include define('geinclude', true);
Op de geinclude pagina:
if ( defined('geinclude') )
{
/doe je sessie
}
http://nl3.php.net/exifquote:Op donderdag 27 oktober 2005 10:07 schreef HuHu het volgende:
Kutserver
Op een andere server werkt het zonder problemen
Maar het probleem is dus (deels) opgelost. Het ligt in ieder geval niet aan mij.
quote:Requirements
Your PHP must be compiled in with --enable-exif. PHP does not require any additional library for the exif module. Windows users must also have the mbstring extension enabled.
1 2 3 4 5 6 7 8 9 10 11 12 13 | php $val = 5; for ($nr=1; $nr<=$val; $nr++) { echo "<form method='post' action='$PHP_SELF'>"; echo "<input type='text' name='arr[]' size='12' maxlength='9'><br>"; } echo "<input type='submit' value='Toevoegen'>"; echo "</form>"; $test = $_POST['arr']; echo "$test"; ?> |
Ja dat ziet er goed uit.quote:Op donderdag 27 oktober 2005 18:07 schreef Darkomen het volgende:
je maakt toch van arr een array dan is het logisch dat er array staat.
Doe maar eens print_r($_POST['arr']);
Ja. Overigens staan dat soort dingen zeer duidelijk in de documentatie die jij uiteraard hebt doorgelezen.quote:Op donderdag 27 oktober 2005 18:46 schreef Lariekoek het volgende:
[..]
Ja dat ziet er goed uit.
Die array is nu met een for lus weer uit te lezen neem ik aan?
Ja!quote:Op donderdag 27 oktober 2005 19:00 schreef sylvesterrr het volgende:
[..]
Ja. Overigens staan dat soort dingen zeer duidelijk in de documentatie die jij uiteraard hebt doorgelezen.
5% van valueA is niks anders danquote:Op donderdag 27 oktober 2005 20:16 schreef Swetsenegger het volgende:
Bestaat er een php functie welke een waarde snel procentueel kan vergelijken.
Met andere woorden:
if valueA-valueB < 5% van valueA
want (valueA-valueB)*(valueA/100) vind ik wat ranzig
Joh!quote:Op donderdag 27 oktober 2005 21:07 schreef the_disheaver het volgende:
[..]
5% van valueA is niks anders dan
valueA * 0,05
if(valueA-valueB < valuaA / 20)quote:Op donderdag 27 oktober 2005 20:16 schreef Swetsenegger het volgende:
Bestaat er een php functie welke een waarde snel procentueel kan vergelijken.
Met andere woorden:
if valueA-valueB < 5% van valueA
want (valueA-valueB)*(valueA/100) vind ik wat ranzig
dusch...quote:Op donderdag 27 oktober 2005 20:34 schreef Swetsenegger het volgende:
Ik zat heel ranzig te denken, maar toen ik hem hier boven uittikte vond ik het eigenlijk ook wel meevallen
Bedankt voor de tip.quote:Op donderdag 27 oktober 2005 21:26 schreef Wifibro het volgende:
Hee Superrembo, kom je weer meedoen met PHP Golf?
http://www.phpfreakz.nl/forum.php?forum=5&iid=721061![]()
quote:Beste PHP-ers,
--[ PHP Golf
Een nieuwe editie van PHP Golf!
--[ Wat is PHP Golf?
De bedoeling is een PHP script te maken met zo min mogelijk karakters.
Dus zo min mogelijk letters, nummers, spaties, newlines en dergelijke.
Met het script moet je een doelstelling bereiken.
We gaan ervan uit dat je de recenste PHP 4.x, op het moment 4.4,
versie hebt en standaard php.ini configuratie. Tenzij anders vermeld.
(Standaard: register_globals = off)
Het script moet op UNIX-gebaseerde en Windows systemen werken.
--[ Voor wie is PHP Golf?
De competitie is voor iedereen toegankelijk.
--[ Inzendingen
Je kunt je oplossing sturen naar:
phpgolf [at] gmail.com
(Disclaimer: je e-mail zal niet worden gebruikt voor
spam of worden doorgegeven aan derden)
--[ Doelstelling
Het script moet de volgende output genereren:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
BCDEFGHIJKLMNOPQRSTUVWXYZA
CDEFGHIJKLMNOPQRSTUVWXYZAB
DEFGHIJKLMNOPQRSTUVWXYZABC
EFGHIJKLMNOPQRSTUVWXYZABCD
FGHIJKLMNOPQRSTUVWXYZABCDE
GHIJKLMNOPQRSTUVWXYZABCDEF
HIJKLMNOPQRSTUVWXYZABCDEFG
IJKLMNOPQRSTUVWXYZABCDEFGH
JKLMNOPQRSTUVWXYZABCDEFGHI
KLMNOPQRSTUVWXYZABCDEFGHIJ
LMNOPQRSTUVWXYZABCDEFGHIJK
MNOPQRSTUVWXYZABCDEFGHIJKL
NOPQRSTUVWXYZABCDEFGHIJKLM
OPQRSTUVWXYZABCDEFGHIJKLMN
PQRSTUVWXYZABCDEFGHIJKLMNO
QRSTUVWXYZABCDEFGHIJKLMNOP
RSTUVWXYZABCDEFGHIJKLMNOPQ
STUVWXYZABCDEFGHIJKLMNOPQR
TUVWXYZABCDEFGHIJKLMNOPQRS
UVWXYZABCDEFGHIJKLMNOPQRST
VWXYZABCDEFGHIJKLMNOPQRSTU
WXYZABCDEFGHIJKLMNOPQRSTUV
XYZABCDEFGHIJKLMNOPQRSTUVW
YZABCDEFGHIJKLMNOPQRSTUVWX
ZABCDEFGHIJKLMNOPQRSTUVWXY
Nu mag jij het script programmeren en liefst zo kort mogelijk.
--[ Deadline:
De deadline is over 8 dagen.
Vrijdag 19:00 4 november 2005
-----
Post in dit topic vragen/suggesties.
GEEN OPLOSSINGEN!
Mocht je een oplossing hebben, dan mag je gerust je karakter aantal posten.
Dit om andere te stimuleren![]()
Diegene die het minste karakters heeft gebruikt, wint!
Veel succes,
Tri Pham
1 2 | <?php $Bericht[] = array('Thomas','iemand@hotmail.com',' ','Hoogkerk','14-09-2004 23:16:05','Berichtje'); ?> |
staan er array's in het tekstbestand of platte tekst welke je zelf array maakt?quote:Op donderdag 27 oktober 2005 23:12 schreef sh4dow het volgende:
Even een vraag, ik heb een tijdje een gastenboek script gebruikt met een tekstbestand. Nu heb ik zelf een nieuw gastenboek gemaakt met een mySQL database.
Graag zou ik de oude berichten uit het tekstbestand willen toevoegen aan de database, om de oude berichten niet verloren te laten gaan.
Het tekstbestand ziet er zo uit:
[ code verwijderd ]
enz, zo staan er 311 berichten in dit tekstbestand, in Arrays.
Hoe kan ik deze array nu splitten, en dan ieder bericht in een loop toevoegen aan de database?
1 2 3 4 5 6 7 | include_once('mijntekstbestandmetberichten.php'); for($i=0;$i<count($Berichten);$i++) { // huidig bericht = $Bericht[$i] (array!) } ?> |
que?quote:Op vrijdag 28 oktober 2005 16:28 schreef Swetsenegger het volgende:
Alleen.... hoe laat je hem de tweede keer van 66 tot 90 PLUS 65 echoën![]()
Doet ie goed.quote:Overigens zegt iemand op 52 karakters te zitten.
Als je de { en } weghaalt zit je al op 62 tekensquote:Op vrijdag 28 oktober 2005 17:55 schreef Roonaan het volgende:
64 tekens
[ code verwijderd ]
Hij kan efficienter als je die nummers bij 0 kan laten starten tot 702. Alleen moeten dan de modulussen anders.
quote:Op vrijdag 28 oktober 2005 18:08 schreef Roonaan het volgende:
[ code verwijderd ]
57.
55 als je de sluittags weghaalt.
1 |
Waarom zou het een beetje schoon moeten blijvenquote:Op vrijdag 28 oktober 2005 18:27 schreef ikke_ook het volgende:
[Centraal]PHP - Golf wedstrijd
Daar kunnen jullie lekker verder spelen met jullie Golf, dan blijft dit topic een beetje schoon
-edit-
Oeps, ik zie dat ik dat topic onder de naam van mn vriendin heb gepost
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 | $arr = array(11 => array(13, 14, 15, 16, 17), 12 => array(13, 14, 15, 16, 17), 13 => array(11, 12, 16, 17), 14 => array(11, 12, 17), 15 => array(11, 12, 16, 17), 16 => array(11, 12, 13, 14, 15, 17), 17 => array(11, 12, 13, 14, 15, 16)); foreach ($arr as $id => $narr) { $tmpArr = $narr; if (isSet($remove) && is_array($remove)) { foreach ($remove as $x => $verwijderkey) { foreach ($tmpArr as $xx => $value) { if ($tmpArr[$xx] == $verwijderkey) { unset ($tmpArr[$xx]); } } } } if (is_array($tmpArr) && count($tmpArr) > 1) { $code = $tmpArr[rand(0, count($tmpArr)-1)]; } else { foreach ($tmpArr as $key => $value) { $code = $value; } } $remove[] = $code; echo 'gebruiker ' . $id . ' heeft gebruiker ' . $code . ' getrokken <br>'; } var_dump($remove); ?> |
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 | $arr = array("eric" => array("tess", "joop", "kees", "loes", "joke"), "marc" => array("tess", "joop", "kees", "loes", "joke"), "tess" => array("eric", "marc", "loes", "joke"), "joop" => array("eric", "marc", "joke"), "kees" => array("eric", "marc", "loes", "joke"), "loes" => array("eric", "marc", "tess", "joop", "kees", "joke"), "joke" => array("eric", "marc", "tess", "joop", "kees", "loes")); foreach ($arr as $id => $tmpArr) { if (isSet($remove) && is_array($remove)) { foreach ($remove as $x => $verwijderkey) { foreach ($tmpArr as $xx => $value) { if ($tmpArr[$xx] == $verwijderkey) { unset ($tmpArr[$xx]); } } } } if (is_array($tmpArr) && count($tmpArr) > 1) { $code = $tmpArr[rand(0, count($tmpArr)-1)]; } else { foreach ($tmpArr as $key => $value) { $code = $value; } } $remove[] = $code; echo 'gebruiker ' . $id . ' heeft gebruiker ' . $code . ' getrokken <br>'; } var_dump($remove); ?> |
1 2 3 4 5 6 7 8 | gebruiker marc heeft gebruiker tess getrokken gebruiker tess heeft gebruiker joke getrokken gebruiker joop heeft gebruiker eric getrokken gebruiker kees heeft gebruiker marc getrokken gebruiker loes heeft gebruiker kees getrokken gebruiker joke heeft gebruiker loes getrokken array(7) { [0]=> string(4) "joop" [1]=> string(4) "tess" [2]=> string(4) "joke" [3]=> string(4) "eric" [4]=> string(4) "marc" [5]=> string(4) "kees" [6]=> string(4) "loes" } |
1 2 3 4 5 6 7 8 9 10 11 12 | gebruiker marc heeft gebruiker joop getrokken gebruiker tess heeft gebruiker eric getrokken gebruiker joop heeft gebruiker marc getrokken gebruiker kees heeft gebruiker loes getrokken Notice: Undefined offset: 1 in d:\www\usersort.php on line 29 gebruiker loes heeft gebruiker getrokken Notice: Undefined offset: 0 in d:\www\usersort.php on line 29 gebruiker joke heeft gebruiker getrokken array(7) { [0]=> string(4) "joke" [1]=> string(4) "joop" [2]=> string(4) "eric" [3]=> string(4) "marc" [4]=> string(4) "loes" [5]=> NULL [6]=> NULL } |
1 |
Met je rand() ding ga je op zoek naar een key tussen 0 en het aantal keys. Da's leuk, maar als je als keys de getallen 1,3,5,7 overhoudt dan heb je 4 keys en een kans van 50% dat je een niet-bestaande key tussen 0 en 3 pakt.quote:Op zondag 30 oktober 2005 10:03 schreef Chandler het volgende:
maar ik check of de array reeds groter is dan 1 item, dan zou je toch verwachten dat dat goed gaat![]()
en als ik de regel (28) dus boven de code voorzie van > 2 dan krijg ik steeds mindervaak een error maar alsnog soms een error in regel 29
Help me!
1 2 3 4 5 6 7 8 9 10 11 | { $code = $tmpArr[rand(0, count($tmpArr)-1)]; } else { foreach ($tmpArr as $key => $value) { $code = $value; } } |
1 |
1 2 3 4 5 6 7 8 9 10 11 | { $code = $tmpArr[rand(0, count($tmpArr)-1)]; } else { foreach ($tmpArr as $key => $value) { $code = $value; } } |
1 2 3 4 5 6 7 8 9 | { $code = $tmpArr[array_rand($tmpArr)]; } else { echo 'Geen keuze beschikbaar voor '.$id.'<br>'; break; } |
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 | $arr = array("eric" => array("eric", "marc"), "marc" => array("marc", "eric"), "tess" => array("tess", "joop", "kees"), "joop" => array("joop", "tess", "kees", "loes"), "kees" => array("kees", "tess", "joop"), "loes" => array("loes"), "joke" => array("joke")); // build a second list. foreach ($arr as $name => $null) { $nArr[] = $name; } foreach ($arr as $id => $userRemove) { $userChoose = $nArr; // verwijder mensen uit lijst :) foreach ($userRemove as $xid => $name) { foreach ($userChoose as $userid => $username) { if (isSet($userRemove[$userid]) && $userRemove[$userid] == $name) { unset($userChoose[$userid]); } } } // verwijder reeds geselecteerde mensen uit lijst :) if (isSet($userSelected) && is_array($userSelected)) { foreach ($userSelected as $xxid => $name) { foreach ($userChoose as $uID => $tmp) { if (isSet($userChoose[$uID]) && $userChoose[$uID] == $name) { unset($userChoose[$uID]); } } } } $code = $userChoose[array_rand($userChoose)]; $userSelected[$id] = $code; echo 'gebruiker ' . $id . ' heeft gebruiker ' . $code . ' getrokken <br>'; } var_dump($userSelected); ?> |
1 2 3 4 5 6 7 8 9 10 | gebruiker marc heeft gebruiker kees getrokken gebruiker tess heeft gebruiker loes getrokken gebruiker joop heeft gebruiker joke getrokken gebruiker kees heeft gebruiker joop getrokken gebruiker loes heeft gebruiker marc getrokken Notice: Undefined index: in d:\www\usersort.php on line 49 gebruiker joke heeft gebruiker getrokken array(7) { ["eric"]=> string(4) "tess" ["marc"]=> string(4) "kees" ["tess"]=> string(4) "loes" ["joop"]=> string(4) "joke" ["kees"]=> string(4) "joop" ["loes"]=> string(4) "marc" ["joke"]=> NULL } |
Dan krijg je dat de variabele $code niet te gebruiken is bij het echo-statement even verderopquote:Op zondag 30 oktober 2005 17:32 schreef Darkomen het volgende:
Wat krijg je als je
$code = $userChoose[array_rand($userChoose)];
$userSelected[$id] = $code;
IN
$userSelected[$id] = $userChoose[array_rand($userChoose)];
veranderd?
Klinkt logisch, maar is geen garantie voor succes. Bij de laatste melding van Chandler liep het fout bij de laatste trekking, en dat is iemand met de ruimste keuze. En ik zie hier nog wel wat mogelijkheden voor functies als array_keys en in_array.quote:Op zondag 30 oktober 2005 22:52 schreef Roonaan het volgende:
Is het niet nuttiger om eerst de mensen te sorteren op het kleinst aantal mensen die ze mogen trekken, om te voorkomen dat ze op een gegeven moment niemand kunnen trekken, omdat die reeds getrokken zijn door andere, die in eerste instantie meer opties hadden?
-r-
Geen idee. Als ik het hier probeer gaat het wel goed. Weet je zeker dat die column NULL als default waarde heeft?quote:Op zondag 30 oktober 2005 23:14 schreef Swetsenegger het volgende:
Waarom geeft mijn mysql column, welke NULL enabled is, en NULL als default waarde heeft
0 terug wanneer ik geen waarde invul?
quote:Op zondag 30 oktober 2005 23:19 schreef Light het volgende:
[..]
Geen idee. Als ik het hier probeer gaat het wel goed. Weet je zeker dat die column NULL als default waarde heeft?
Omdat MySQL vol met bugs, inconsequenties en andere vreemde dingen zit. ACM had er een lijst van online staan.quote:Op zondag 30 oktober 2005 23:14 schreef Swetsenegger het volgende:
Waarom geeft mijn mysql column, welke NULL enabled is, en NULL als default waarde heeft
0 terug wanneer ik geen waarde invul?
Deze punten gaan vooral over versie 3.23.x, dat zal ook wel de reden zijn dat ie offline is.quote:Weird behaviour
1. You can define a varchar/char field 'auto_increment'.
2. SELECT 'A' = 'a' gets you true.
3. Int(10) is the same as int(1) eventhough the manual says differently.
4. Tablenames are treated case-sensitive on *n?x systems, not on windows.
5. Change a piece of a table definition and mysql creates a temporary copy of the table, very nice if you have a 6GB table occupying a 10GB tablespace... (yes, the change will fail)
6. Adding indices result in a similar temporary copy.
7. What does zerofill do to a integer field? A database is meant to store data, not to format it while storing.
8. When I define a char(32) (md5-strings anyone) field, I really don't mean varchar(32) (MySQL automatically changes all char(X >4) to varchar(X)).
9. This is correct according to mysql: SELECT a, b, count(c) FROM d GROUP BY a; what will MySQL do with the b?
10. If you update a record and set it to the same value, mysql'll define that as unaffected. Even if it does change a timestamp field.
Bugs
1. Insert a NULL value in a NOT NULL field and the query gets executed. In short, you can't force NOT NULL...
2. Under high loads MySQL will restart itself occasionally. When a child doesn't die fast enough "socket already in use"-error occurs.
3. Replication doesn't work that well.
4. MySQL will always try to insert a date into a date field, even if you supply an empty or bogus string (it'll insert 0000-00-00 then).
5. When underflowing or overflowing a integer field, mysql will insert the largest or smallest possible value instead.
6. Long texts are chopped to the correct size, not denied.
7. MySQL will also insert 0 into a numeric field if you supply an empty or bogus string.
8. Close a connection and a long query still runs on... The only way to kill it is via the (mysql)admin
9. Connections with a timeout? Very nice when you need to do a lot of calculations on your data or a query lasts very long. "Lost connection to MySQL server during query"
10. You can insert the same value twice in a ENUM-field
Ja die ken ik al van www.yapf.netquote:Op zondag 30 oktober 2005 23:35 schreef SuperRembo het volgende:
[..]
Omdat MySQL vol met bugs, inconsequenties en andere vreemde dingen zit. ACM had er een lijst van online staan.
[..]
Deze punten gaan vooral over versie 3.23.x, dat zal ook wel de reden zijn dat ie offline is.
Ik heb het geprobeerd op mysql 4.0.25 die ik hier lokaal had draaien. (Had, ik ben bezig met een upgrade nu.)quote:Op zondag 30 oktober 2005 23:28 schreef Swetsenegger het volgende:
[..]
[afbeelding]
Op welke versie heb jij het geprobeerd?
-edit- opgelost. in plaats van niets invullen gewoon NULL invullen
Een lege string is niet gelijk aan NULL.quote:Op zondag 30 oktober 2005 23:42 schreef Swetsenegger het volgende:
[..]
Ja die ken ik al van www.yapf.net
Maar er staat alleen wat over NULL invoeren in een NOT NULL kolom.
In mijn geval vul ik een lege string in, dus niets en daar maakt mysql 0 van.
Indien het veld in mijn form nu leeg is, vul ik dus maar NULL in. dat gaat wel goed
Daar was ik achter nuquote:Op zondag 30 oktober 2005 23:45 schreef Light het volgende:
[..]
Een lege string is niet gelijk aan NULL.
Bij MySQL is een hoop mogelijk, gezien wat ik zo lees.quote:Op zondag 30 oktober 2005 23:50 schreef SuperRembo het volgende:
Een lege string is zeker ook geen decimal.
(Er zit een typo in articelcode)
Een verdwijnende variabel, die ik idd niet bij het echo statement kan gebruikenquote:Op zondag 30 oktober 2005 17:32 schreef Darkomen het volgende:
Wat krijg je als je
$code = $userChoose[array_rand($userChoose)];
$userSelected[$id] = $code;
IN
$userSelected[$id] = $userChoose[array_rand($userChoose)];
veranderd?
Yep, dit is ff makkelijk en voor mij overzichtelijk...quote:Op zondag 30 oktober 2005 17:47 schreef Light het volgende:
Dan krijg je dat de variabele $code niet te gebruiken is bij het echo-statement even verderop
Ok, ik vond dit al een uitdaging, en nu dus helemaal... hoe in vredus naam kan ik dit snel doen? als het MySQL was dan was dit simpel, en kon ik de query aanpassen maar werken met array's is niet mijn sterkste vak..quote:Op zondag 30 oktober 2005 22:52 schreef Ro�a� het volgende:
Is het niet nuttiger om eerst de mensen te sorteren op het kleinst aantal mensen die ze mogen trekken, om te voorkomen dat ze op een gegeven moment niemand kunnen trekken, omdat die reeds getrokken zijn door andere, die in eerste instantie meer opties hadden?
-r-
hoe bedoel je dat? en waar denk jij dat mijn probleem zit? want ik kan dit helaas niet zo even 1234567890 uitvindenquote:Op zondag 30 oktober 2005 23:15 schreef Light het volgende:
Klinkt logisch, maar is geen garantie voor succes. Bij de laatste melding van Chandler liep het fout bij de laatste trekking, en dat is iemand met de ruimste keuze. En ik zie hier nog wel wat mogelijkheden voor functies als array_keys en in_array.
1 2 3 | "marc" => array("marc", "eric"), "tess" => array("tess", "joop", "kees"), |
Bij lootjes trekken heb je altijd het risico dat de laatste geen keuze meer heeft (of alleen zichzelf kan kiezen). Eigenlijk heb je die keuze altijd, maar je houdt er bij het programmeren al rekening mee dat iemand niet zichzelf mag kunnen kiezen. In je laatste voorbeeld was joke, die als laatste mag kiezen, nog niet gekozen. Enige overgebleven keuze is dus joke, maar die mag zichzelf niet kiezen, dus geen keuze. Oplossing is simpel de hele trekking nogmaals doen.quote:Op maandag 31 oktober 2005 07:42 schreef Chandler het volgende:
hoe bedoel je dat? en waar denk jij dat mijn probleem zit? want ik kan dit helaas niet zo even 1234567890 uitvindenheb gisteren (tijdens het ziek zijn) de hele dag niets anders in me hoofd gehad dan de niet werkende code...
Mjah,quote:Op maandag 31 oktober 2005 01:04 schreef Light het volgende:
Hmm.. Men neme een simpele tabel "tabel" met twee kolommen "col1" en "col2". Col2 is gedefinieerd als INT en mag NULL bevatten. Col1 is gewoon een ID. (Het gaat nergens over, maar ter illustratie.)
Dan doen we "Insert into tabel (col1, col2) values (1, '')" waarbij dus een lege string naar col2 gezet wordt. Maar dat was een int. Voor MySQL een reden om er dan maar 0 van te maken.
Overigens gebeurt hetzelfde als ik een niet-lege string gebruik. De conversie lijkt hetzelfde te zijn als de (int) van 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 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 | $vorigeTrekking = array( "eric" => array("eric", "marc"), "marc" => array("marc", "eric"), "tess" => array("tess", "joop", "kees"), "joop" => array("joop", "tess", "kees", "loes"), "kees" => array("kees", "tess", "joop"), "loes" => array("loes"), "joke" => array("joke") ); $alleDeelnemers = array_keys($vorigeTrekking); // Wie mag wie wél loten $magLoten = array(); foreach($alleDeelnemers as $naam) { $magLoten[$naam] = array_diff($alleDeelnemers, $vorigeTrekking[$naam]); } // Wie mag door wie geloot worden $magGelootWordenDoor = array(); foreach($magLoten as $naam => $loten) { foreach($loten as $lot) $magGelootWordenDoor[$lot][] = $naam; } // Trekking doen. ob_start etc is om de data van // mislukte trekkingen te verbergen $i = 1; ob_start(); $loting = loting($alleDeelnemers, $magLoten, $magGelootWordenDoor); while(!is_array($loting) && $i < 10) { ob_end_clean(); echo '<br/>Trekking '.$i++.' mislukt: '.$loting; flush(); ob_start(); $loting = loting($alleDeelnemers, $magLoten, $magGelootWordenDoor); } ob_end_flush(); // Loting functie function loting($alleDeelnemers, $magLoten, $magGelootWordenDoor) { // Alle loten zijn getrokken if(count($alleDeelnemers) < 1) { return array(); } // Kies een van de deelnemers die als volgende een lootje mag trekken shuffle($alleDeelnemers); $deelnemer = array_pop($alleDeelnemers); // Geef de naam weer echo '<br/><b>'.$deelnemer.'</b>'; // Tijdelijke arrays construeren om de intersectie te kunnen maken tussen // de loten die iemand mag trekken en de nog beschikbare loten $dnMagLoten = $magLoten[$deelnemer]; $dnKanLoten = array_keys($magGelootWordenDoor); $dnLoten = array_intersect($dnMagLoten, $dnKanLoten); if(count($dnLoten) < 1) { return '<br/>Loting mislukt.'; } else { // Volgende drie regels zijn debug informatie echo '<br/>Mag: '.implode(',',$dnMagLoten); echo '<br/>Kan: '.implode(',',$dnKanLoten); echo '<br/>Som: '.implode(',',$dnLoten); // Trek een van de loten $getrokken = $dnLoten[array_rand($dnLoten)]; // Geef een echo welk lot is getrokken echo '<br/><b>'.$deelnemer.' trekt '.$getrokken.'</b><br/>'; } // De deelnemer kan niet nog een keer loten unset($magLoten[$deelnemer]); // Het lot kan ook niet meer getrokken worden unset($magGelootWordenDoor[$getrokken]); // Recursief andere mensen laten trekken $loting = loting($alleDeelnemers,$magLoten, $magGelootWordenDoor); // Kijken of de recursieve loting goed verlopen is if(is_array($loting)) { $resultaat = array_merge(array($deelnemer => $getrokken),$loting); return $resultaat; } else { return $loting; } } ?> |
Afgezien van dit belachelijke gedrag van MySQL (quote:Op maandag 31 oktober 2005 08:39 schreef Swetsenegger het volgende:
[..]
Mjah,
Laten we zeggen dat ik verwacht dat wanneer ik een lege string naar een decimal stuur met als default value NULL dat ik dan ook NULL terug krijg
Het was weer een wijze les
@Ro�a�quote:Op maandag 31 oktober 2005 09:54 schreef Ro�a� het volgende:
Nou, ik was in de veronderstelling dat je bij een INSERT statement alle kolommen moest benoemenquote:Op maandag 31 oktober 2005 10:50 schreef JeRa het volgende:
[..]
Afgezien van dit belachelijke gedrag van MySQL (); waarom probeerde je een string naar een decimal te sturen?
1 2 3 4 | { unSet($includeUsers[$id]); } |
1 2 3 4 5 6 7 8 9 | PHP if (!isset($_COOKIE[$_GET['link']])) { echo"blabla"; setcookie("$_GET[link]", "true", strtotime("tomorrow 0"), "/"); } ?> |
array_intersect geeft alleen de waarde terug die in beide arrays voorkomen.quote:Op maandag 31 oktober 2005 13:56 schreef Chandler het volgende:
@Roonaan: ik ben nu al een tijd bezig je functie te ontleden maar heb een vraag en kan daar niet een begrijpelijk antwoord op vinden op www.php.net
waar staan de volgende functie voor!
array_intersect ? want uit de uitleg en voorbeeld kom ik niet
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 | $vorigeTrekking = array("eric" => array("eric", "marc"), "marc" => array("marc", "eric"), "tess" => array("tess", "joop", "kees"), "joop" => array("joop", "tess", "kees", "loes"), "kees" => array("kees", "tess", "joop"), "loes" => array("loes"), "joke" => array("joke")); $alleDeelnemers = array_keys($vorigeTrekking); $lootenSelect = array(); $includeUsers = array(); $over = array(); echo '<pre>'; for ($x = 0; $x < 100; $x++) { $doBreak = true; foreach ($vorigeTrekking as $kiesUser => $excludeUsers) { // bereken users die niet mag kiezen $includeUsers = $alleDeelnemers; $over = $alleDeelnemers; foreach ($excludeUsers as $id => $value) { foreach ($over as $fID => $fName) { if ($fName == $value) { unSet($over[$fID]); } } } echo '<br>'; foreach ($lootenSelect as $id => $value) { foreach ($over as $fID => $fName) { if ($fName == $value) { unSet($over[$fID]); } } } echo 'user : ' . $kiesUser . "<br /><br /><br />"; echo 'mag niet kiezen : ' . implode(", ", $excludeUsers) . "<br />"; echo 'mag wel kiezen : ' . implode(", ", $includeUsers) . "<br />"; echo 'reeds gekozen : ' . implode(", ", $lootenSelect) . "<br />"; echo 'blijft over : ' . implode(", ", $over) . "<br />"; if (count($over) > 0) { $rnd = $alleDeelnemers[array_rand($over)]; echo 'random : ' . $rnd . "<br>"; $lootenSelect[$kiesUser] = $rnd; echo '<hr>'; } else { echo 'random : geen mogelijkheid meer over, start over'; $doBreak = false; } } if ($doBreak == true) { break; } } echo '</pre>'; echo 'selected users'; echo '<pre>'; var_dump($lootenSelect); echo '</pre>'; ?> |
Ik heb het opgelost! Voor de nieuwsgierigen, er kwam een "." voor in de meegestuurde GET waarde. Het cookie lijkt onmogelijk uit te lezen door die punt.quote:Op maandag 31 oktober 2005 14:09 schreef Pronk het volgende:
Ik heb een probleem met cookies die moeten worden geplaatst en uitgelezen aan de hand van de GET waarde die aan een de pagina wordt meegegeven.
[ code verwijderd ]
Het cookie wordt wel geplaatst (met de juiste waarde)
Als ik nu nog een keer dezelfde GET waarde aan de pagina mee geef dan zou er geen "blabla" op mijn scherm mogen verschijnen.
Dit gebeurt wel, dus het cookie wordt toch niet goed uitgelezen.
Heeft iemand een idee waarom dit fout gaat?
Zolang PHP nog steeds crasht als je een recursieve functie op wat grotere datasets uitvoert (stack overflow) wijk ik toch uit naar andere talen om een aanpak te testenquote:Op maandag 31 oktober 2005 15:23 schreef Ro�a� het volgende:
Tevens ben ik nog steeds overtuigd dat een recursieve aanpak hiervoor beter is.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $NextDir = "klein.php?dir=".$DirArray[$DirIndex + 1]; $PrevDir = "klein.php?dir=".$DirArray[$DirIndex - 1]; $NextDirNam = $DirArray[($DirIndex + 1)]; $PrevDirNam = $DirArray[($DirIndex - 1)]; if ($DirIndex == 0) { $PrevDir = "klein.php?dir=".$DirArray[(Count($DirArray) - 1)]; $PrevDirNam = $DirArray[(Count($DirArray) - 1)]; } if (($DirIndex + 1) > (Count($DirArray) - 1)) { $NextDir = "klein.php?dir=".$DirArray[0]; $NextDirNam = $DirArray[0]; ?> |
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 | <HTML> <HEAD> <TITLE>Fotoalbum</TITLE> </HEAD> <BODY TEXT='#000000' LINK='#000000' VLINK='#000000' ALINK='#000000'> <TABLE WIDTH='800' BORDER='1' bordercolor='#FFFFFF' CELLSPACING='0' CELLPADDING='0' ALIGN='CENTER'> <TR> <TD bordercolor='#000000' bgcolor='#CCCCCC'><CENTER><STRONG>Foto overzicht: <? echo"$_GET[dir]"; ?></STRONG></CENTER></td> </TR> </TABLE> <? function getDirList ($dirName) { static $result_array=array(); $d = dir($dirName); while($entry = $d->read()) { if ($entry != "." && $entry != "..") { if (is_dir($dirName."/".$entry)) { array_push($result_array,$entry); } } } $d->close(); sort($result_array); return $result_array; } function getDirContents ($dirName) { static $result_array=array(); $d = dir($dirName); while($entry = $d->read()) { if ($entry != "." && $entry != "..") { if (!is_dir($dirName."/".$entry)) { str_replace(" ", "[spc]",(str_replace("&", "[amp]",$entry))); array_push($result_array,$entry); } } } $d->close(); sort($result_array); return $result_array; } $DirArray = getDirList("./"); for($i=0; $i < count($DirArray); $i++) { if($_GET['dir']==$DirArray[$i]) { $DirIndex = $i; } } $NextDir = "klein.php?dir=".$DirArray[$DirIndex + 1]; $PrevDir = "klein.php?dir=".$DirArray[$DirIndex - 1]; $NextDirNam = $DirArray[($DirIndex + 1)]; $PrevDirNam = $DirArray[($DirIndex - 1)]; if ($DirIndex == 0) { $PrevDir = "klein.php?dir=".$DirArray[(Count($DirArray) - 1)]; $PrevDirNam = $DirArray[(Count($DirArray) - 1)]; } if (($DirIndex + 1) > (Count($DirArray) - 1)) { $NextDir = "klein.php?dir=".$DirArray[0]; $NextDirNam = $DirArray[0]; } ?> <TABLE WIDTH='800' BORDER='0' CELLSPACING='0' CELLPADDING='0' ALIGN='CENTER'> <tr> <td width='33%' valign='top'><table width='100%' height='50' bordercolor='#FFFFFF' border='1' cellspacing='0' cellpadding='3'><tr><td style='CURSOR: hand' onMouseover="this.bgColor='#CCCCCC'" onMouseout="this.bgColor='#FFFFFF'" onclick="window.location='<?echo"$PrevDir";?>';" valign='top' bordercolor='#000000'><?echo str_replace(".", " ",$PrevDirNam);?></td></tr></table><td> <td width='33%' valign='top'><table width='100%' height='50' bordercolor='#FFFFFF' border='1' cellspacing='0' cellpadding='3'><tr><td style='CURSOR: hand' onMouseover="this.bgColor='#CCCCCC'" onMouseout="this.bgColor='#FFFFFF'" onclick="window.location='index.php';" valign='top' align="center" bordercolor='#000000'>Terug naar het album overzicht</td></tr></table><td> <td width='33%' valign='top'><table width='100%' height='50' bordercolor='#FFFFFF' border='1' cellspacing='0' cellpadding='3'><tr><td style='CURSOR: hand' onMouseover="this.bgColor='#CCCCCC'" onMouseout="this.bgColor='#FFFFFF'" onclick="window.location='<?echo"$NextDir";?>';" valign='top' bordercolor='#000000'><?echo str_replace(".", " ",$NextDirNam);?></td></tr></table><td> </tr> </TABLE> <table width="800" border='0' cellspacing='0' cellpadding='0' align="center"><tr> <? $Column = 1; $DirName = $DirArray[$DirIndex]; $CurrentDir = "./".$DirName; $DirContents = getDirContents($CurrentDir); for($i=0; $i < count($DirContents); $i++) { echo "<td height='140' width='20%'><table width='100%' height='100%' bordercolor='#FFFFFF' border='1' cellspacing='0' cellpadding='3'><tr><td height='100%' style='CURSOR: hand' onMouseover=\"this.bgColor='#CCCCCC'\" onMouseout=\"this.bgColor='#FFFFFF'\" onclick=\"window.location='groot.php?dir=".str_replace(" ", "[spc]",(str_replace("&", "[amp]",$DirName)))."&image=".str_replace(" ", "[spc]",(str_replace("&", "[amp]",$DirContents[$i])))."&index=".$i."';\" valign='top' align='center' bordercolor='#000000'><img vspace='10' width='125' border='0' src='".$CurrentDir."/".$DirContents[$i]."'></td></tr></table></td>"; if($Column==5) { $Column = 0; echo "</tr>"; } $Column++; } if($Column != 0) { for($i=$Column; $i<8;$i++){ echo "<td>"; } } echo "</table>"; ?> </BODY></HTML> ?> |
Dit heb ik nagekeken en dit klopt natuurlijk helemaal, maar wat kan ik nu doen om te zorgen dat die 'notice' verdwijnt. Dus hoe kan ik zorgen het script van te voren weet dat het niet verder of terug moet tellen?quote:Op woensdag 2 november 2005 11:19 schreef SuperRembo het volgende:
Als $DirIndex = 0 is, dan krijg je hier $DirArray[$DirIndex - 1] die notice op. De array begint bij 0, dus -1 bestaat niet. Logisch.
Door bv dit te doen:quote:Op woensdag 2 november 2005 11:57 schreef Pronk het volgende:
[..]
Dit heb ik nagekeken en dit klopt natuurlijk helemaal, maar wat kan ik nu doen om te zorgen dat die 'notice' verdwijnt. Dus hoe kan ik zorgen het script van te voren weet dat het niet verder of terug moet tellen?
1 2 3 | $PrevDir = "klein.php?dir=".$DirArray[$DirIndex - 1]; } |
1 2 | <?php $Bericht[] = array('Thomas','iemand@hotmail.com',' ','Hoogkerk','14-09-2004 23:16:05','Berichtje'); ?> |
1 2 3 4 5 6 7 8 | for($i=0;$i<count($Bericht);$i++){ $query = "INSERT INTO messages (name,email,bla,woonplaats,date,message) VALUES ('".$Bericht[$i][0]."','".$Bericht[$i][1]."','".$Bericht[$i][2]."', '".$Bericht[$i][3]."','".$Bericht[$i][4]."','".$Bericht[$i][5]."')"; mysql_query($query)or die(mysql_error()); } ?> |
1 2 | 'Thomas','iemand@hotmail.com',' ','Hoogkerk','14-09-2004 23:16:05','Berichtje' |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | $array=file(berichten.txt); //Hiermee zet hij je txt file in een array, waarbij elke regel een element is. foreach ($array as $line){ //Hiermee stap je door de array heen $line=str_replace(''','',$line); //hiermee haal je de ' weg $stuk=explode(',',$line); //hiermee verdeel je de regel in losse elementen $query="INSERT INTO database (id,naam,email,iets,woonplaats,datum,bericht) VALUES(0,'".$stuk[0]."','".$stuk[1]."','".$stuk[2]."','".$stuk[3]."','".$stuk[4]."','".$stuk[5]."')"; mysql_query($query); // naar database schrijven } ?> |
Voor $NextDir moet je een zelfde soort controle inbouwen (voor als je aan het eind van de lijst bent).quote:Op woensdag 2 november 2005 12:37 schreef Pronk het volgende:
Nouja, misschien niet de netste manier maar mijn notices zijn weg! Thx!
Swets had het over newlines. Dus niet <br> maar \n.quote:Op woensdag 2 november 2005 20:51 schreef sh4dow het volgende:
Ja het is al gelukt met jou scriptalles komt netjes in de DB te staan nu, die <br>'s geven idd geen probleem, maar Swetsenegger had het daarover.
Heel erg bedankt!
Ik gebruik ook een datetime veld, maar die waarde haal ik er altijd uit als een UNIX_TIMESTAMP, anders kun je er niet mee rekenenquote:Op woensdag 2 november 2005 22:12 schreef Swetsenegger het volgende:
nooit een unix timestamp gebruiken, gebruik gewoon DATETIME van mysql. Kan je tenminste mee rekenen.
DATETIME veld staat als 09-14-2004 21:46:28 dacht ik.
kwestie van dus TOCH je datum eruit trekken, exploden en op de juiste manier weer aan elkaar plakken. Dat lijkt me de snelste oplossing
Als je een dag eerder wilt hebben kan je beter gewoon DATESUB van mysql gebruiken.quote:Op woensdag 2 november 2005 22:15 schreef ikke_ook het volgende:
[..]
Ik gebruik ook een datetime veld, maar die waarde haal ik er altijd uit als een UNIX_TIMESTAMP, anders kun je er niet mee rekenenIk snap niet zo goed wat jij bedoelt.
Die gaat fout met data in het formaat dd-mm-jjjj, met jjjj-mm-dd werkt het wel. Het was ook mijn eerste idee, maar ik ging het nog even testenquote:Op woensdag 2 november 2005 22:13 schreef Ro�a� het volgende:
gewoon strtotime gebruiken?
Inderdaadquote:Op woensdag 2 november 2005 22:21 schreef Light het volgende:
Die gaat fout met data in het formaat dd-mm-jjjj, met jjjj-mm-dd werkt het wel. Het was ook mijn eerste idee, maar ik ging het nog even testen
Maar als je nou een server in de VS hebt staan krijg je wel een verkeerde datum terug, en als je hem als timestamp uit de database haalt kun je er een formaat van maken naar eigen wens. Maar ik zal dat DATESUB eens bekijken want het klinkt wel handigquote:Op woensdag 2 november 2005 22:20 schreef Swetsenegger het volgende:
[..]
Als je een dag eerder wilt hebben kan je beter gewoon DATESUB van mysql gebruiken.
scheelt een hoop PHP gereken
quote:Op woensdag 2 november 2005 22:23 schreef sh4dow het volgende:
[..]
InderdaadDat werkt niet, zie: http://195.241.108.27/scripts/convert/time.php
![]()
Iemand enig idee hoe ik dat kan omwisselen?
1 2 3 4 | $datum = '14-09-2004 21:46:28'; print preg_replace('/(\d{2})-(\d{2})-(\d{4})/', '\\3-\\2-\\1', $datum); ?> |
1 2 | $out = preg_replace('/(\d+)-(\d+)-(\d+)/', '$3-$2-$1', $in); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | include_once("config.php"); include("gastenboek.php"); for($i=0;$i<count($Bericht);$i++){ $time = $Bericht[$i][4]; $time = preg_replace('/(\d{2})-(\d{2})-(\d{4})/', '\\3-\\2-\\1', $time); $tijd = strtotime($time); $query = "INSERT INTO gastenboek_nieuw (naam, woonplaats, email, website, bericht, datum) VALUES ('".$Bericht[$i][0]."','".$Bericht[$i][3]."','".$Bericht[$i][1]."', '".$Bericht[$i][2]."','".$Bericht[$i][5]."','".$tijd."')"; mysql_query($query)or die(mysql_error()); } ?> |
Je kan met mysql de datum ook in elk gewenst formaat zettenmet de DATE_FORMAT functiequote:Op woensdag 2 november 2005 22:24 schreef ikke_ook het volgende:
[..]
Maar als je nou een server in de VS hebt staan krijg je wel een verkeerde datum terug, en als je hem als timestamp uit de database haalt kun je er een formaat van maken naar eigen wens. Maar ik zal dat DATESUB eens bekijken want het klinkt wel handig
1 |
Voor mij werken de timestamps alsnog veel sneller omdat MySQL daar een index op kan brouwen (dat gaat niet als je een veld met functies binnen MySQL gaat aanpassen) en ik in PHP vantevoren razendsnel kan bepalen wat een conditie voor de timestamp moet zijn a.d.h.v. de vele functies die daarvoor in PHP beschikbaar zijnquote:Op donderdag 3 november 2005 22:32 schreef Swetsenegger het volgende:
[..]
Je kan met mysql de datum ook in elk gewenst formaat zettenmet de DATE_FORMAT functie
[ code verwijderd ]
Tja, diverse mysql goeroe's vertellen me juist weer NOOIT een timestamp te gebruiken, maar altijd datetime omdat sql sneller is dan php in omzetten.quote:Op vrijdag 4 november 2005 10:34 schreef JeRa het volgende:
[..]
Voor mij werken de timestamps alsnog veel sneller omdat MySQL daar een index op kan brouwen (dat gaat niet als je een veld met functies binnen MySQL gaat aanpassen) en ik in PHP vantevoren razendsnel kan bepalen wat een conditie voor de timestamp moet zijn a.d.h.v. de vele functies die daarvoor in PHP beschikbaar zijnook heb ik dan makkelijker het verschil tussen zomer- en wintertijd onder controle (MySQL geeft met jouw veld twee uur per jaar dubbele waarden terug, bij timestamps niet).
Bovendien ben ik van mening dat het visuele formaat van de tijd in de frontend moet worden bepaald (het liefst de template) in plaats van de backend die de data aanlevert.
Hmm..liever geen javascript.quote:Op donderdag 3 november 2005 21:16 schreef Chandler het volgende:
javascript:history.go(-1);maar das geen PHP maar wel heel erg simpel
Doe eens een phpinfo() in een PHP-script en kijk bij 'gd' of deze ook support heeft voor GIF-afbeeldingen. Mijn gok is namelijk van nietquote:Op vrijdag 4 november 2005 13:48 schreef P0rt0 het volgende:
Mag ik hier misschien hulp vragen mbt een php-script? Ik heb een thumbnail-creator gedownload voor mijn linux bak. Echter bij het aanspreken van ./<flename> gaat ie heel mooi thumbnails maken van jpg's.. maar de gifs slaat ie totaal over.
Nou kom ik er gewoon niet meer uit.. dus als men er oren naar heeft om te helpen.. graag
Browsen is cilentside. PHP is serverside. Als je een pagina terugwilt, zul je dat toch echt door middel van een linkje moeten doen met ofwel het pad ofwel de javascript-code daarvoor gebruiken. Je moet niet alles met PHP willen doen, en aangezien je geen javascript wilt gebruiken zou ik toch echt voor het linkje met het adres gaanquote:Op donderdag 3 november 2005 21:02 schreef H4ze het volgende:
Nu kan ik natuurlijk gewoon een linkje "back" maken en dat het path er gewoon neer planten, maar ik meen me ook te herinneren dat er een hele simpele php code was hiervoor. Ik ben 'm alleen ff kwijt
Aanvullend, tussen GD versie 1.6 en 2.nogwat is er geen gif support geweest.quote:Op vrijdag 4 november 2005 13:54 schreef JeRa het volgende:
[..]
Doe eens een phpinfo() in een PHP-script en kijk bij 'gd' of deze ook support heeft voor GIF-afbeeldingen. Mijn gok is namelijk van niet
Nog meer aanvullend (quote:Op vrijdag 4 november 2005 13:56 schreef Swetsenegger het volgende:
[..]
Aanvullend, tussen GD versie 1.6 en 2.nogwat is er geen gif support geweest.
Op php.net staat welke versies gif support hebben.
1 2 3 4 5 6 7 8 9 10 11 12 13 | GD Support enabled GD Version bundled (2.0.28 compatible) FreeType Support enabled FreeType Linkage with freetype FreeType Version 2.1.10 GIF Read Support enabled GIF Create Support enabled JPG Support enabled PNG Support enabled WBMP Support enabled XPM Support enabled XBM Support enabled |
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 | # genethumb.sh - Génération de thumbnails mortels de ta mère # (c) 3 Jan 1998: version 0.0.4 by Samuel Hocevar <sam@via.ecp.fr> # 22 May 2000: version 0.0.5 by Samuel Hocevar <sam@via.ecp.fr> # 15 Nov 2000: version 0.0.6 by Samuel Hocevar <sam@zoy.org> # with code from Sven Hartge <hartge@ds9.argh.org> # 13 Dec 2000: version 0.0.7 by Samuel Hocevar <sam@zoy.org> # now compatible with old ImageMagick versions # added --rows option # 27 Apr 2003: version 0.0.8 by Sam Hocevar <sam@zoy.org> # removed all bashisms # now compatible with all ImageMagick versions # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA version=0.0.8 THFILE=index.html THDIR=.xvpics THEXT=png # change this to jpeg or whatever you want THWIDTH=120 # thumbnail width THHEIGHT=90 # thumbnail height THCOLS=5 # change to set table width -- 0 for no tables if [ "$1" != "" ] then THCOLS=$1 fi echo "genethumb.sh v$version -- report bugs to Samuel Hocevar <sam@zoy.org>" echo "usage: genethumb.sh [number of columns]" if [ -w $THFILE ] then echo "saving $THFILE to $THFILE~" mv -f $THFILE $THFILE~ fi if [ ! -d $THDIR ] then echo "creating thumbnail directory $THDIR" mkdir $THDIR fi cat > $THFILE << EOF <!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"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta name="GENERATOR" content="genethumb.sh version $version" /> <meta name="Description" content="thumbnails of $PWD" /> <title>Index of $PWD</title> <style type="text/css"> img { border: 1pt; } body { background: white; color: black; font-family: sans-serif, Arial, Helvetica; font-size: 9pt; margin: 5pt; } h2 { color: black; background: white; font-size: 14pt; } a { text-decoration: none; } td.center { text-align: center; } td.nowrap { white-space: nowrap; } blockquote.center { text-align: center; } </style> </head> <body> <table border="0" width="100%"><tr><td> <h2>Index of $PWD</h2></td> <td align="right">generated by <a href="http://sam.zoy.org/projects/unix/genethumb.html">genethumb.sh</a> version $version </td></tr></table> <hr /> <table cellspacing="5" border="0"> <tr> EOF compteur=0 created=0 find . -type f -maxdepth 1 | sed 's,^\./,,' | while read file do # on vérifie que l'image n'est pas déjà un thumbnail ou une page html, et a # une extension quelconque (à améliorer un peu) case "$file" in *~|*.html|*.htm) echo "* skipping $file" ;; *) failed=0 newfile="$THDIR/tn_$file.$THEXT" echo -n "* $file: " if [ -r "$newfile" ] then echo "thumbnail already exists." else convert -geometry ${THWIDTH}x${THHEIGHT} "$file" "$newfile" >/dev/null 2>&1 if [ ! -r "$newfile" ] then echo "failed creating." failed=1 else echo "done." fi fi if [ "$failed" = "0" ] then created="`expr 0$created + 1`" if [ -e "$newfile.info" ] then read filesize coordinates oldcoords compat < "$newfile.info" fi if expr "$version" ">" "$compat" >/dev/null 2>&1 then read oldcoords filesize << EOF `identify -format '%wx%h %b' "$file" | head -1` EOF coordinates=`identify -format '%wx%h' "$newfile" | head -1` rm -f "$newfile.info" echo $filesize $coordinates $oldcoords $version > "$newfile.info" echo " $newfile.info written." fi j="`echo $file | cut -b1-20`" if [ "$file" != "$j" ] then j="`echo $file | cut -b1-17`..." fi cat >> $THFILE << EOF <td align="center"> <a href="$file"><img alt="$file ($oldcoords)" width="`echo $coordinates | cut -f1 -dx`" height="`echo $coordinates | cut -f2 -dx`" src="$newfile" /><br />$j<br />$oldcoords ($filesize)</a> </td> EOF compteur="`expr 0$compteur + 1`" if [ x"$compteur" = "x$THCOLS" ] then echo " </tr><tr>" >> $THFILE compteur=0 fi fi esac done echo "done." cat >> $THFILE << EOF </tr> </table> </body> </html> EOF |
Zo te zien gebruikt dat script helemaal geen GD, maar ImageMagick, dan zul je dus moeten checken of de ImageMagick versie die je hebt wel gif ondersteuning biedt.quote:Op vrijdag 4 november 2005 15:27 schreef P0rt0 het volgende:
Hierbij de code van het betreffende script
[ code verwijderd ]
Dit is geen php... dus ik vraag me af wat je wil doen met je phpinfo()?quote:Op vrijdag 4 november 2005 15:27 schreef P0rt0 het volgende:
Hierbij de code van het betreffende script
[ 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 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 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 | session_start(); // << < 1 2 3 4 5 6 7 8 8 10 > >> class pointer { function setup($arr) { // arr => ("<<", "<", ">", ">") $this->text->_toStart = $arr[0]; $this->text->_toStartBack = $arr[1]; $this->text->_toEnd = $arr[2]; $this->text->_toEndBack = $arr[3]; } function setupDisplay($type = NULL, $number) { switch ($type) { case "number": // 1 2 3 4 5 6 7 8 $this->config->_displayType = 1; break; case "next": // < > $this->config->_displayType = 2; break; case "nextend": if ($number == 0) { // << < > >> $this->config->_displayType = 3; } else { // << < (2) > >> $this->config->_displayType = 4; } break; default; // << < 1 2 3 4 5 6 7 > >> $this->config->_displayType = 0; break; } } function setupText($font, $color, $selectedColor) { $this->config->_displayFont = $font; $this->config->_displayColor = $color; $this->config->_displaySelectedColor = $selectedColor; } function setupPage($page, $idname, $extra) { $this->config->_pageUrl = $page; $this->config->_pageID = $idname; $this->config->_pageExtra = $extra; } function setValues($from, $counter, $total, $maxPages) { $this->config->_pageCurrentID = $from; $this->config->_pageTotal = ceil ($total / $counter)+1; $this->config->_pageMax = $maxPages; } function getText() { $txt = ""; if ($this->config->_pageExtra == "") { $linkAdd = ""; } else { $linkAdd = "&" . $this->config->_pageExtra; } // first << if ($this->config->_displayType == 3 OR $this->config->_displayType == 4) { // current page [1 (2) 3 4 5 6] if ($this->config->_pageCurrentID > 2) { $txt .= '<a href="' . $this->config->_pageUrl . "?" . $this->config->_pageExtra . '">' . $this->text->_toStart . '</a> '; } } // < (previous) if ($this->config->_displayType == 2 OR $this->config->_displayType == 3 OR $this->config->_displayType == 4) { // current page [ 1 (2) 3 4 5 if ($this->config->_pageCurrentID > 1) { $txt .= '<a href="' . $this->config->_pageUrl . "?" . $this->config->_pageID . "=" . ($this->config->_pageCurrentID -1) . $linkAdd . '">' . $this->text->_toStartBack . '</a> '; } } //* if ($this->config->_pageTotal > $this->config->_pageMax) { $start = 1; $end = $this->config->_pageTotal; } else { $mid = $this->config->_pageMax / 2; if ($this->config->_pageCurrentID - $mid > 1) { if ($this->config->_pageCurrentID + $mid > $this->config->_pageTotal) { $start = $this->config->_pageTotal - $this->config->_pageMax; $end = $this->config->_pageTotal; } else { $start = $this->config->_pageCurrentID - $mid; $end = $this->config->_pageCurrentID + $mid; } } else { $start = 1; $end = $this->config->_pageMax; } } for ($x = $start; $x < $end; $x++) { if ($x == $this->config->_pageCurrentID) { // bold text in case of current $txt .= '<a href="' . $this->config->_pageUrl . "?" . $this->config->_pageID . "=" . $x . $linkAdd . '"><strong>' . $x . '</strong></a> '; } else { $txt .= '<a href="' . $this->config->_pageUrl . "?" . $this->config->_pageID . "=" . $x . $linkAdd . '">' . $x . '</a> '; } } // > (next) if ($this->config->_displayType == 2 OR $this->config->_displayType == 3 OR $this->config->_displayType == 4) { // current page [ 1 2 3 4 (5) 6] if (($this->config->_pageCurrentID + 2) <= $this->config->_pageTotal) { $txt .= '<a href="' . $this->config->_pageUrl . "?" . $this->config->_pageID . "=" . ($this->config->_pageCurrentID +1) . $linkAdd . '">' . $this->text->_toEnd . '</a> '; } } // last >> if ($this->config->_displayType == 3 OR $this->config->_displayType == 4) { // current page [1 2 3 (4) 5 6] if (($this->config->_pageCurrentID +3) <= $this->config->_pageTotal) { $txt .= '<a href="' . $this->config->_pageUrl . "?" . $this->config->_pageID . "=" . $this->config->_pageTotal . $linkAdd . '">' . $this->text->_toEndBack . '</a> '; } } return $txt; } } if ($_SERVER['REQUEST_METHOD'] == "POST") { $_SESSION['total'] = $_POST['total']; $_SESSION['counter'] = $_POST['counter']; $_SESSION['pages'] = $_POST['pages']; header("Location: pages.php"); exit(); } if (isSet($_SESSION['total'])) { $total = $_SESSION['total']; $counter = $_SESSION['counter']; $pages = $_SESSION['pages']; ?> <form method="post"> <table> <tr> <td>Total?</td><td><input type="text" name="total" value="<?=$total;?>"></td> <td>Counter</td><td><input type="text" name="counter" value="<?=$counter;?>"></td> <td>Max pages</td><td><input type="text" name="pages" value="<?=$pages;?>"></td> <td><input type="submit" name="add" value="Verander"></td> </tr> </table> </form> <? } else { $_SESSION['total'] = 99; $_SESSION['counter'] = 10; $_SESSION['pages'] = 10; ?> <form method="post"> <table> <tr> <td>Total?</td><td><input type="text" name="total" value="<?=$_SESSION['total'];?>"></td> <td>Counter</td><td><input type="text" name="counter" value="<?=$_SESSION['counter'];?>"></td> <td>Max pages</td><td><input type="text" name="pages" value="<?=$_SESSION['pages'];?>"></td> <td><input type="submit" name="add" value="Verander"></td> </tr> </table> </form> <? } $blaat = new pointer(); $blaat->setup(array("<<", "<", ">", ">>")); $blaat->setupDisplay("numbers", 0); $blaat->setupText("arial", "blue", "darkblue"); $blaat->setupPage("pages.php", "from", "test=23&true=false"); $blaat->setValues($_GET['from'], $_SESSION['counter'], $_SESSION['total'], $_SESSION['pages']); echo $blaat->getText(); echo '<hr>'; $blaat1 = new pointer(); $blaat1->setup(array("<<", "<", ">", ">>")); $blaat1->setupDisplay("next", 0); $blaat1->setupText("arial", "blue", "darkblue"); $blaat1->setupPage("pages.php", "from", "test=23&true=false"); $blaat1->setValues($_GET['from'], $_SESSION['counter'], $_SESSION['total'], $_SESSION['pages']); echo $blaat1->getText(); echo '<hr>'; $blaat2 = new pointer(); $blaat2->setup(array("First", "Previous", "Next", "Last")); $blaat2->setupDisplay("nextend", 0); $blaat2->setupText("arial", "blue", "darkblue"); $blaat2->setupPage("pages.php", "from", "test=23&true=false"); $blaat2->setValues($_GET['from'], $_SESSION['counter'], $_SESSION['total'], $_SESSION['pages']); echo $blaat2->getText(); echo '<hr>'; $blaat3 = new pointer(); $blaat3->setup(array("First", "Previous", "Next", "Last")); $blaat3->setupDisplay("nextend", 0); $blaat3->setupText("arial", "blue", "darkblue"); $blaat3->setupPage("pages.php", "from", "test=23&true=false"); $blaat3->setValues($_GET['from'], $_SESSION['counter'], $_SESSION['total'], $_SESSION['pages']); echo $blaat3->getText(); 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 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 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 | session_start(); error_reporting(E_ALL); // << < 1 2 3 4 5 6 7 8 8 10 > >> class pointer { function setup($arr) { // arr => ("<<", "<", ">", ">") $this->text->_toStart = $arr[0]; $this->text->_toStartBack = $arr[1]; $this->text->_toEnd = $arr[2]; $this->text->_toEndBack = $arr[3]; } function setupDisplay($type = NULL, $number) { switch ($type) { case "number": // 1 2 3 4 5 6 7 8 $this->config->_displayType = 1; break; case "next": // < > $this->config->_displayType = 2; break; case "nextend": if ($number == 0) { // << < > >> $this->config->_displayType = 3; } else { // << < (2) > >> $this->config->_displayType = 4; } break; default; // << < 1 2 3 4 5 6 7 > >> $this->config->_displayType = 0; break; } } function setupText($font, $color, $selectedColor) { $this->config->_displayFont = $font; $this->config->_displayColor = $color; $this->config->_displaySelectedColor = $selectedColor; } function setupPage($page, $idname, $extra) { $this->config->_pageUrl = $page; $this->config->_pageID = $idname; $this->config->_pageExtra = $extra; } function setValues($from, $counter, $total, $maxPages) { $this->config->_pageCurrentID = $from; $this->config->_pageTotal = ceil ($total / $counter)+1; $this->config->_pageMax = $maxPages; } function getText() { $txt = ""; if ($this->config->_pageExtra == "") { $linkAdd = ""; } else { $linkAdd = "&" . $this->config->_pageExtra; } // first << if ($this->config->_displayType == 3 OR $this->config->_displayType == 4) { // current page [1 (2) 3 4 5 6] if ($this->config->_pageCurrentID > 2) { $txt .= '<a href="' . $this->config->_pageUrl . "?" . $this->config->_pageExtra . '">' . $this->text->_toStart . '</a> '; } } // < (previous) if ($this->config->_displayType == 2 OR $this->config->_displayType == 3 OR $this->config->_displayType == 4) { // current page [ 1 (2) 3 4 5 if ($this->config->_pageCurrentID > 1) { $txt .= '<a href="' . $this->config->_pageUrl . "?" . $this->config->_pageID . "=" . ($this->config->_pageCurrentID -1) . $linkAdd . '">' . $this->text->_toStartBack . '</a> '; } } //* if ($this->config->_pageTotal < $this->config->_pageMax) { $start = 1; $end = $this->config->_pageTotal; } else { $mid = $this->config->_pageMax / 2; if ($this->config->_pageCurrentID - $mid > 1) { if ($this->config->_pageCurrentID + $mid > $this->config->_pageTotal) { $start = $this->config->_pageTotal - $this->config->_pageMax; $end = $this->config->_pageTotal; } else { $start = $this->config->_pageCurrentID - $mid; $end = $this->config->_pageCurrentID + $mid; } } else { $start = 1; $end = $this->config->_pageMax; } } for ($x = $start; $x < $end; $x++) { if ($x == $this->config->_pageCurrentID) { // bold text in case of current $txt .= '<a href="' . $this->config->_pageUrl . "?" . $this->config->_pageID . "=" . $x . $linkAdd . '"><strong>' . $x . '</strong></a> '; } else { $txt .= '<a href="' . $this->config->_pageUrl . "?" . $this->config->_pageID . "=" . $x . $linkAdd . '">' . $x . '</a> '; } } // > (next) if ($this->config->_displayType == 2 OR $this->config->_displayType == 3 OR $this->config->_displayType == 4) { // current page [ 1 2 3 4 (5) 6] if (($this->config->_pageCurrentID + 2) <= $this->config->_pageTotal) { $txt .= '<a href="' . $this->config->_pageUrl . "?" . $this->config->_pageID . "=" . ($this->config->_pageCurrentID +1) . $linkAdd . '">' . $this->text->_toEnd . '</a> '; } } // last >> if ($this->config->_displayType == 3 OR $this->config->_displayType == 4) { // current page [1 2 3 (4) 5 6] if (($this->config->_pageCurrentID +3) <= $this->config->_pageTotal) { $txt .= '<a href="' . $this->config->_pageUrl . "?" . $this->config->_pageID . "=" . $this->config->_pageTotal . $linkAdd . '">' . $this->text->_toEndBack . '</a> '; } } return $txt; } } if (isSet($_GET['from'])) { $from = $_GET['from']; } else { $from = 0; } if ($_SERVER['REQUEST_METHOD'] == "POST") { $_SESSION['total'] = $_POST['total']; $_SESSION['counter'] = $_POST['counter']; $_SESSION['pages'] = $_POST['pages']; header("Location: pages.php"); exit(); } if (isSet($_SESSION['total'])) { $total = $_SESSION['total']; $counter = $_SESSION['counter']; $pages = $_SESSION['pages']; ?> <form method="post"> <table> <tr> <td>Total?</td><td><input type="text" name="total" value="<?=$total;?>"></td> <td>Counter</td><td><input type="text" name="counter" value="<?=$counter;?>"></td> <td>Max pages</td><td><input type="text" name="pages" value="<?=$pages;?>"></td> <td><input type="submit" name="add" value="Verander"></td> </tr> </table> </form> <? } else { $_SESSION['total'] = 99; $_SESSION['counter'] = 10; $_SESSION['pages'] = 10; ?> <form method="post"> <table> <tr> <td>Total?</td><td><input type="text" name="total" value="<?=$_SESSION['total'];?>"></td> <td>Counter</td><td><input type="text" name="counter" value="<?=$_SESSION['counter'];?>"></td> <td>Max pages</td><td><input type="text" name="pages" value="<?=$_SESSION['pages'];?>"></td> <td><input type="submit" name="add" value="Verander"></td> </tr> </table> </form> <? } $blaat = new pointer(); $blaat->setup(array("<<", "<", ">", ">>")); $blaat->setupDisplay("numbers", 0); $blaat->setupText("arial", "blue", "darkblue"); $blaat->setupPage("pages.php", "from", "test=23&true=false"); $blaat->setValues($from, $_SESSION['counter'], $_SESSION['total'], $_SESSION['pages']); echo $blaat->getText(); echo '<hr>'; $blaat1 = new pointer(); $blaat1->setup(array("<<", "<", ">", ">>")); $blaat1->setupDisplay("next", 0); $blaat1->setupText("arial", "blue", "darkblue"); $blaat1->setupPage("pages.php", "from", "test=23&true=false"); $blaat1->setValues($from, $_SESSION['counter'], $_SESSION['total'], $_SESSION['pages']); echo $blaat1->getText(); echo '<hr>'; $blaat2 = new pointer(); $blaat2->setup(array("First", "Previous", "Next", "Last")); $blaat2->setupDisplay("nextend", 0); $blaat2->setupText("arial", "blue", "darkblue"); $blaat2->setupPage("pages.php", "from", "test=23&true=false"); $blaat2->setValues($from, $_SESSION['counter'], $_SESSION['total'], $_SESSION['pages']); echo $blaat2->getText(); echo '<hr>'; $blaat3 = new pointer(); $blaat3->setup(array("First", "Previous", "Next", "Last")); $blaat3->setupDisplay("nextend", 0); $blaat3->setupText("arial", "blue", "darkblue"); $blaat3->setupPage("pages.php", "from", "test=23&true=false"); $blaat3->setValues($from, $_SESSION['counter'], $_SESSION['total'], $_SESSION['pages']); echo $blaat3->getText(); echo '<hr>'; ?> |
Ik denk mbv van $_SERVER['HTTP_REFERER']quote:Op dinsdag 8 november 2005 16:17 schreef Darkomen het volgende:
Hoe kan je uitzoeken met welke zoektermen je pagina word gevonden zoals bijvoorbeeld netstat ook doet?
1 |
1 2 3 4 5 6 7 8 9 10 | document.write(' <? if ($menu[$i]==1){ $menu[$i]=0; }else{ $menu[$i]=1; } ?> ')</script> |
1 2 3 4 | echo 'var foo = ["' . implode('","', $foo) . '"]'' echo 'alert(foo.length); echo '</script> |
Ja dat snap ik dat dat werktquote:Op woensdag 9 november 2005 22:04 schreef SuperRembo het volgende:
Het kan wel, maar niet op die manier. Zo wel:
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 10 11 | subitem subsubitem subsubitem subitem hoofditem subitem subsubitem subitem subsubitem subsubitem |
Gewoon in de linkquote:Op woensdag 9 november 2005 22:45 schreef SuperRembo het volgende:
Als je het zonder cookies doet, hoe wil je dan de huidige status van de tree overdragen naar de volgende pagina.
Ja dat geloof ik graag, maar ik heb hier javascript voor dummies ook al een aantal keer mijn javascript cookie code gepost. Niemand ziet een fout. Hij werkt ook prima in FF en Opera.... Maar NIET in IE (expired zodra je de browser sluit)quote:Als ik het goed heb werkt GoT ook met cookies voor de in/uitklap status. En dat werkt prima
1 2 3 4 | for (i in fruit) { alert(i + ': ' + fruit[i]); } |
De link komt uit database, dus is maar 1 regeltje code waar ik de links parse aanpassenquote:Op woensdag 9 november 2005 22:59 schreef SuperRembo het volgende:
Ik denk dat het makkelijker is om bij elke keer in- of uitklappen de cookie aan te passen dan om in elke link de menu status door te geven en weer goed af te handelen.
1 2 3 4 5 6 7 8 9 10 | if (menu[id]==0){ menu[id]=1; }else{ menu[id]=0; } // uit dan wel inklappen script document,cookie="menu="+menu+";expires="+vervaldatum+"; path=/"; |
waarom kom ik in google dan alleemaal zelf geschreven foreach functies tegen voor javascript?quote:Javascript heeft wel een for-each hoor
[ code verwijderd ]
Hmz, die bestaan ook in javascript? Maar een array in een cookie moet toch kunnen? anders moet ik de array joinen, in een cookie zetten, splitsen als er wat wijzigt.quote:Op woensdag 9 november 2005 23:12 schreef SuperRembo het volgende:
Een array in een cookie? Gewoon join en split gebruiken.
Het gaat trouwens ook fout als je bijvoorbeeld een push functie op de prototype van de array hebt gezet (voor IE5 compatibility). Dan loopt ie namelijk ook over die functie.quote:Ik heb geen idee waarom je moeilijk zou moeten doen om een for-each voor elkaar te krijgen. Het enige dat je ff moet onthouden is dat je de index krijgt, niet het item zelf.
1 2 3 4 5 | var s = a.join(','); alert(s); var b = s.split(','); alert(b.length); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | $table_name="OBcontacts_temp"; $textfile = $_FILES['file']['tmp_name']; chmod($textfile,0755); $field_terminater=""; $line_terminator="\r\n"; $query = "LOAD DATA INFILE '$textfile' INTO TABLE $table_name (Data) "; if (isset($field_terminater)) { $query .= "FIELDS TERMINATED BY '$field_terminater'"; } if (strlen($line_terminator)>0) { $query .= "LINES TERMINATED BY '". stripslashes($line_terminator)."'"; } $sql_query = $query; $result= mysql_query($sql_query); ?> |
1 2 3 4 | php include("test2.php"); ?> |
Ja dat kan volgens mij. Volgens mij zit dat ergens in het $_SERVER array.quote:Op donderdag 10 november 2005 17:43 schreef LeeHarveyOswald het volgende:
Kan ik als ik een pagina include, in de geinclude pagina zien welke pagina dat deed?![]()
Dus bijv.:
Test.php:
[ code verwijderd ]
test2.php zou dan bijv. als output moeten geven 'test.php'. Het liefst nog met achtervoegsels (?ID=12) erbij ook. Maar das geen must![]()
Kan dat?
1 2 3 4 5 6 7 8 9 10 | html onzin, en op een gegeven moment iets van: <?php $_SESSION['check1']='check 1 jo'; $_SESSION['check2']='check 2 jo'; ?> <br /> <br /> <?php include('http://haze.stoner.nl/test/print.php'); ?> |
1 2 3 4 5 6 7 | Dit is het bestand dat geinclude moet worden, en hiernaast moet ook de session geinclude worden <?php echo $_SESSION['check1']; ?> |
quote:Op donderdag 10 november 2005 21:25 schreef ikke_ook het volgende:
[..]
Ja dat kan volgens mij. Volgens mij zit dat ergens in het $_SERVER array.
-edit-
Ik denk trouwens dat $_SERVER['REQUEST_URI'] het juiste antwoord bevat.
Ah, vertel hem/haar even dat hij zulk "advies" voor zich moet houden en eerst een phpboek moet pakken.quote:Op vrijdag 11 november 2005 14:05 schreef H4ze het volgende:
![]()
Ik geloof dat een klasgenoot 't ooit zo aan mij heeft verteld. Maar thnx iig, het werkt nu.
Ik persoonlijk ben op dit soort oplossingen principieel tegen. Je moet enkel het laatste punt meegeven en dan het pad recursief opbouwen. Dus je geeft:quote:Op woensdag 9 november 2005 22:49 schreef Swetsenegger het volgende:
Gewoon in de link
pagina.php?menu=0-3-5
Als allow_url_fopen() true oplevert dan is het ook mogelijk om bestanden via een URI te includen. Files die niet vanuit het file system geinlcude worden, die kunnen worden geinterpreteerd door de server die de bestanden aanlevert. En als die uitkomst geen geldige php code is dan krijg je problemen.quote:Op zaterdag 12 november 2005 00:11 schreef FuifDuif het volgende:
Een include werkt altijd lokaal, dus inderdaad niet via een URI. Een PHP script is in feite een scriptje welke lokaal wordt geïnterpreteerd en dus werken alle bestandsaanroepen (zoals includes, maar ook de functie move_uploaded_file() etc) ook lokaal.
Dat is niet waar. Check de manual. Het kan wel (mits allow_url_fopen aan staat), maar het is niet aan te raden.quote:Op zaterdag 12 november 2005 00:11 schreef FuifDuif het volgende:
Een include werkt altijd lokaal, dus inderdaad niet via een URI.
Ja, klopt, ik ben inmiddels op de hoogtequote:Op zaterdag 12 november 2005 00:43 schreef SuperRembo het volgende:
[..]
Dat is niet waar. Check de manual. Het kan wel (mits allow_url_fopen aan staat), maar het is niet aan te raden.
[edit]Trage reactie[/edit]
1 2 3 | include($_GET['page']); ?> |
Dat lijkt mij logisch. Ik zou ook niet weten waarom je het op die manier zou schrijven. Ik wil zelf altijd maximale controle op de GET en POST data die ik binnen krijg en probeer de client-side vrijheid wat dat betreft zoveel mogelijk te beperken tot het hoogst noodzakelijke. Dat betekent ook dat die data altijd door een strenge controle gaan voordat ze bijvoorbeeld worden opgenomen in een database transactie. Het is een kleine moeite, maar tegenwoordig oh zo belangrijk.quote:Op zaterdag 12 november 2005 00:52 schreef Light het volgende:
Weten dat het kan is ook voldoende. Da's een extra reden om te zorgen dat wat je in een include stopt ook veilig is.
Dus niet:
[ code verwijderd ]
Want zo weet je nooit wat voor code je binnenhaalt.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $sql = 'SELECT song_id, artist, feat, title FROM `lyriczz` WHERE '; $search_words = explode(' ', $searchstring, 5); $first = true; foreach ($search_words AS $tw) { if ($first == false){ $sql .= 'AND '; $first = false; } $sql .= "(`artist` LIKE '%$tw%') "; $sql .= 'OR'; $sql .= "(`feat` LIKE '%$tw%') "; $sql .= 'OR'; $sql .= "(`title` LIKE '%$tw%') "; } ?> |
1 2 3 4 5 | AND jackson is found in field 'artist' OR field 'title' OR field 'feat' AND thriller is found in field 'artist' OR field 'title' OR field 'feat') { echo info } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $search_words = explode(' ', $searchstring, 5); $first = true; foreach ($search_words AS $tw) { if (!$first){ $sql .= 'OR '; $first = false; } $sql .= "(`artist` LIKE '%$tw%') "; $sql .= 'OR'; $sql .= "(`feat` LIKE '%$tw%') "; $sql .= 'OR'; $sql .= "(`title` LIKE '%$tw%') "; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $search_words = explode(' ', $searchstring, 5); $first = true; foreach ($search_words AS $tw) { if (!$first){ $sql .= 'AND '; $first = false; } $sql .= "((`artist` LIKE '%$tw%') "; $sql .= 'OR'; $sql .= "(`feat` LIKE '%$tw%') "; $sql .= 'OR'; $sql .= "(`title` LIKE '%$tw%')) "; } |
quote:Op zondag 13 november 2005 06:21 schreef kramer65 het volgende:
Beetje laat, maar dan krijg ik de volgende uitkomst:
SELECT song_id, artist, feat, title FROM `lyriczz` WHERE ((`artist` LIKE '%michael%') OR(`feat` LIKE '%michael%') OR(`title` LIKE '%michael%')) ((`artist` LIKE '%jackson%') OR(`feat` LIKE '%jackson%') OR(`title` LIKE '%jackson%')) ORDER BY `artist` ASC LIMIT 0, 1000
Invalid query: You have an error in your SQL syntax near '((`artist` LIKE '%jackson%') OR(`feat` LIKE '%jackson%') OR(`title` LIKE '%jacks' at line 1
Nog ideeen?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $search_words = explode(' ', $searchstring, 5); $first = true; foreach ($search_words AS $tw) { if (!$first){ $sql .= 'AND '; } $first = false; $sql .= "((`artist` LIKE '%$tw%') "; $sql .= 'OR'; $sql .= "(`feat` LIKE '%$tw%') "; $sql .= 'OR'; $sql .= "(`title` LIKE '%$tw%')) "; } |
Laat de headers eens zien die de webserver naar de browser stuurt en vice versa, na het setten van de cookie?quote:Op zondag 13 november 2005 08:39 schreef Ro�a� het volgende:
Iemand suggesties waarom IE5.5 session cookies niet opslaat?
googlen en geklooi met de timestamp hebben tot nu toe geen effect gehad op het gedrag
1 2 3 4 5 6 7 8 9 10 | Server: xxxxxx X-Powered-By: xxxxxx Set-Cookie: PHPSESSID=17c3828ca1885212dc6c3e89ff843437; domain=http://www.xxxxxx.nl/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-Length: 1996 Connection: close Content-Type: text/html |
Gegevens staan opgeslagen in $_COOKIE["cookienaam"]quote:Op zondag 13 november 2005 14:00 schreef Chandler het volgende:
Stom vraagje; hoe achterhaal je die cookie gegevens/
Ik krijg toch de indruk dat die session-id cookie niet wordt omdat er geen expire-tijd opzit. De sessie zou dan eindigen op het moment dat je de browser sluit.quote:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | php $tekstvak = "arr[]"; echo "<form action='$PHP_SELF' METHOD='POST'>"; for ($a=0; $a< 3; $a++) { echo "<input type=text name='tekstvak' size=20><br>"; } echo "<input type=submit name='submit' value='Doe'>"; echo "</form>"; for ($a=0; $a< 3; $a++) { echo "$arr[$a]"; } ?> |
bug in de php tagquote:Op zondag 13 november 2005 22:46 schreef FuifDuif het volgende:
Dat "$a<"
Klopt dat wel, wat is dat voor vage constructie?
Moet dat niet gewoon zijn:
for ($a = 0; $a < 4; $a++)
?
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |