ikke_ook | donderdag 20 oktober 2005 @ 21:41 |
 cd niet bijgeleverd
Vorige delen: [PHP] voor dummies - Deel 1 [PHP] voor dummies - Deel 2 [PHP] voor dummies - Deel 3 [PHP] voor dummies - Deel 4 [PHP] voor dummies - Deel 5 [PHP/(My)SQL] voor dummies - Deel 6 [PHP/(My)SQL] voor dummies - Deel 7 [PHP/(My)SQL] voor dummies - Deel 8 [PHP/(My)SQL] voor dummies - Deel 9 [PHP/(My)SQL] voor dummies - Deel 10 [PHP/(My)SQL] voor dummies - Deel 11 [PHP/(My)SQL] voor dummies - Deel 12 [PHP/(My)SQL] voor dummies - Deel 13
Zie ook: PHP Dataverwerking Officiële PHP website PHP Documentatie MySQL Reference Manual Yet Another PHP Faq
Deze OP en instructies voor nieuw topic: http://wiki.fok.nl/index.php/OP/PHP |
ikke_ook | donderdag 20 oktober 2005 @ 21:45 |
Ik heb een mailfunctie die mij een zipbestand als attachment stuurt:
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); } ?> |
Lijkt me dat je er wel wat mee kunt. |
HuHu | donderdag 20 oktober 2005 @ 22:04 |
Bedankt ikke_ook. Ik zal er morgen alles eens uitgebreid gaan bestuderen. Ik denk dat het wel moet lukken met de info die ik tot nu toe heb gekregen.
 |
ikke_ook | donderdag 20 oktober 2005 @ 22:04 |
hmm ik zie dat t eigenlijk [PHP/(My)SQL] voor dummies - deel 14 had moeten zijn  Kan een modje die zich verveelt dat ff fixen?Staat mooier in t lijstje  |
the_disheaver | donderdag 20 oktober 2005 @ 22:11 |
tvp!
Ben nu maar weer eens MySQL aan het proberen te instaleren... Is nooit gelukt 
Met mijn Reg_exp voor urls en emails wil ook niet echt  |
Jump | donderdag 20 oktober 2005 @ 22:11 |
ikko_ook: aangepast  |
Jump | donderdag 20 oktober 2005 @ 22:29 |
Ff sommige mensen op volgend topic attent maken: Voor alle users die TVP's gebruik(t)en.
Hoe spijtig ik het ook vind  |
Pronk | vrijdag 21 oktober 2005 @ 16:27 |
Ik heb een tellertje gebouwd, nu wil ik doormiddel van een cookie zorgen dat mensen maar 1 keer per dag geteld worden.
Hoe kan ik er voor zorgen dat een cookie ALTIJD verloopt om twaalf uur s'nachts. Mijn hele script werkt al, het cookie verloopt nu alleen al na een uur.
1 2 3 4 | <?php setcookie("tellerblokkeren", "true",time()+3600, "/"); ?> |
|
Ali Salami | vrijdag 21 oktober 2005 @ 16:42 |
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  |
Pronk | vrijdag 21 oktober 2005 @ 16:54 |
quote: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  Ehm.. nee.. Hier snap ik dus serieus helemaal geen hol van. Maar misschien ligt dat gewoon aan mij. :s |
Ali Salami | vrijdag 21 oktober 2005 @ 17:16 |
Nou, je zet die cookie op 12 uur 's nachts. Je moet dus weten op welke timestamp hij moet aflopen. Die timestamp is per dag variabel.
Overigens had ik het fout zonet, want je kunt uiteraard met die timestamp ook meteen het koekje zetten. Je gaat dus de timestamp uitzoeken die staat voor 12 uur die nacht. Dat doe je doormiddel van mktime(). Uiteraard moet je vantevoren uitzoeken welke dag het dan is, welke maand en welk jaar.
Je krijgt dus iets als
1 2 3 | <?php $koekje=mktime(00,00,00,$maand,$dag,$jaar); ?> |
Die waarde zet je vervolgens in het koekje
1 2 3 | <?php setcookie("tellerblokkeren", "true",$koekje, "/"); ?> |
|
Light | vrijdag 21 oktober 2005 @ 17:49 |
En waarom niet gewoon:
|
Ali Salami | vrijdag 21 oktober 2005 @ 18:18 |
Die nul geeft dan aan dat het op 00.00 uur moet worden gezet? Zo ja, dan is dat nog simpeler  |
Light | vrijdag 21 oktober 2005 @ 18:23 |
quote: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  Yep. Je mag ipv 0 ook 0:0:0 schrijven, dat komt op hetzelfde neer  |
JeRa | vrijdag 21 oktober 2005 @ 21:36 |
strtotime() is een erg ondergewaardeerde functie waarmee je heel gemakkelijk relatieve tijden kunt maken (in de trant van '+1 day') en welke rekening houdt met zomer- en wintertijd. Aanradertje 
Tevens tvp  |
sylvesterrr | vrijdag 21 oktober 2005 @ 22:33 |
strtotime() is inderdaad een handige functie, zolang je er maar voor zorgt dat de input correct is. |
splendor | zaterdag 22 oktober 2005 @ 09:19 |
Even een kort vraagje...  Ik ben met een spelletje bezig in php en alles voorloopt voorspoedig alleen heb ik wat problemen met de random in php, je zou kunnen zeggen dat het een hele goeie random is want je hebt werkelijk geen idee wat je krijgt alleen het nadeel is dat een spelletje een stabiele random nodg heeft en geen random die heel veel meer extremen laat zien dan gewoon elk getal ongeveer even vaak.
Voorbeeldje: rand(1,10); dan laat ie zien: 1,3,1,4,8,7,8,8,6,1,2 en ik heb dus liever dat ie wat 'eerlijker' omgaat met de getallen en niet de uitersten extra vaak, een spel moet een beetje eerlijk zijn en anders krijg je dat je werkelijk geen idee hebt hoe de uitkomst zal zijn.
Wat valt hieraan te doen?  |
Light | zaterdag 22 oktober 2005 @ 09:32 |
Volgens mij is rand toch behoorlijk random. Dat kun je zelf ook testen met iets als:
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>"; ?> |
Een uitkomst die ik daarmee krijg is
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) } |
Niet allemaal precies 1000 keer, maar de afwijking is ook niet echt groot. |
the_disheaver | zaterdag 22 oktober 2005 @ 09:32 |
Het is normaal, omdat uitersten gewoon meer voorkomen. (1-3,7-10) en (4-6)
Je zou met 2 random's (dobbelstenen) kunnen werken, en deze laten optellen.
dus bv: rand(1,5) en rand(0,5)
1 maal een nul om een uitkomst 1 ook mogelijk te maken. Nu is een kans op 6 groter dan op een 1: getallen om 6 te krijgen: 0+6,1+5,2+4,3+3,4+2,5+1 getallen om 1 te krijgen: 0+1
Ofwel: de kans om een 6 te krijgen, is 6 maal groter dan de kans op een 1 |
SuperRembo | zaterdag 22 oktober 2005 @ 11:21 |
quote: Hoe kom je daar bij rand() heeft een uniforme distributie, elke mogelijke uitkomst heeft een gelijke kans. |
Pronk | zaterdag 22 oktober 2005 @ 12:05 |
quote: Dit werkt perfect! Thx! |
vbmot | zaterdag 22 oktober 2005 @ 12:15 |
quote:Op zaterdag 22 oktober 2005 11:21 schreef SuperRembo het volgende:[..] Hoe kom je daar bij  rand() heeft een uniforme distributie, elke mogelijke uitkomst heeft een gelijke kans. 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. |
SuperRembo | zaterdag 22 oktober 2005 @ 12:32 |
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 zal best. Maar geldt dat ook voor php? Uit een testje zoals die van Light blijkt helemaal geen afwijking. |
the_disheaver | zaterdag 22 oktober 2005 @ 12:33 |
quote:Op zaterdag 22 oktober 2005 11:21 schreef SuperRembo het volgende:[..] Hoe kom je daar bij  rand() heeft een uniforme distributie, elke mogelijke uitkomst heeft een gelijke kans. 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%. |
Light | zaterdag 22 oktober 2005 @ 12:38 |
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. Dan ga je het testen, zoals met die paar regels code van mij. |
SuperRembo | zaterdag 22 oktober 2005 @ 12:49 |
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%. 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%. Voor gewoon gebruik kan je er van uit gaan dat de rand() functie eerlijk is, elke waarde heeft een gelijke kans. |
Darkomen | zaterdag 22 oktober 2005 @ 18:38 |
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? |
fokME2 | zaterdag 22 oktober 2005 @ 20:45 |
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? |
the_disheaver | zondag 23 oktober 2005 @ 00:33 |
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? Gallery? |
Gijserman | zondag 23 oktober 2005 @ 12:16 |
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? Misschien iets met eval() ? |
Roonaan | zondag 23 oktober 2005 @ 13:11 |
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?
je wilt gebruikers toch niet toestaan om php te gaan intypen? Het is toch een content management en niet "script hier buggy zooi" management. |
Darkomen | zondag 23 oktober 2005 @ 13:14 |
Is niet voor gebruikers, is gewoon voor mezelf en 2 anderen, die zijn te vertrouwen. |
Roonaan | zondag 23 oktober 2005 @ 13:17 |
Die kunnen dus scripts uploaden en die bied je via het cms aan om een script te kunnen selecteren uit de geuploade scripts, of op basis van filename. die include je vervolgens..
Maar inderdaad, eval is je vriend als je het anders wilt.
-r- |
Desdinova | dinsdag 25 oktober 2005 @ 10:24 |
hee ff gauw tussendoor,
wat is een acceptabele grootte voor een mysql tabel? met andere woorden, wanneer wordt het teveel?
de query's zullen vooral bestaan uit 'select dit waar dat is 1', dus een hoop zoekwerk. Hoeveel rijen zou ongeveer acceptabel zijn, en wat kan beter echt mijn limiet zijn? |
sylvesterrr | dinsdag 25 oktober 2005 @ 10:26 |
Zolang je database-structuur in orde is, is er eigenlijk geen limiet. |
Lariekoek | dinsdag 25 oktober 2005 @ 11:15 |
Ik ben bezig met een webshop. Bij elk artikel moet ook een unieke tekst toegevoegd kunnen worden. Deze laad ik in een sessie en laat ik in het winkelmandje zien. Alleen wanneer ik nu meerdere artikellen van tekst wil voorzien staat bij elk artikel dezelfde tekst.
Ik gebruik de volgende code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php 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>"; ?> |
Iemand een idee hoe ik ervoor zorg dat bij elk artikel de eigen unieke tekst komt te staan? Het scherm laat trouwens in een keer alle artikkelen zien waaraan tekst toegevoegd kan worden. En dit is ook de bedoeling. |
Jimmy | dinsdag 25 oktober 2005 @ 11:38 |
Waarom zou je zoveel tekst in een sessie gaan plaatsen?
Edit: als die tekst uit de database komt, waarom zou je het dan via de sessie in de html zetten?
Je kan die stap toch ook overslaan en het vanuit de database in de html plakken. |
Lariekoek | dinsdag 25 oktober 2005 @ 11:55 |
Nee het word niet in de database opgeslagen. De tekst bij het artikel moeten klanten zelf kunnen toevoegen. |
sylvesterrr | dinsdag 25 oktober 2005 @ 12:30 |
$_SESSION['tekst'] is geen array.
hint:
1 2 3 | <?php $_SESSION['tekst']['__ARTICLE_ID__'] ?> |
|
LeeHarveyOswald | dinsdag 25 oktober 2005 @ 17:06 |
Ik heb weer is een probleem
Voor mijn forum een of andere hack er in geplaatst zodat ik PHP kan invoegen. Alleen de volgende regel geeft een foutmelding:
1 | while (preg_match("x3C% INCLUDE \"(S*?)\" %x3E",$ibforums->skin['template'],$incmatches)>0) |
quote:Warning: Delimiter must not be alphanumeric or backslash in /usr/home/jeroen/www/forum/sources/functions.php on line 2135 edit: whats wrong with it ? hoe kan ik het werkend krijgen? danku! |
SuperRembo | dinsdag 25 oktober 2005 @ 18:47 |
1 | while (preg_match("/x3C% INCLUDE \"(\\S*?)\" %x3E/",$ibforums->skin['template'],$incmatches)>0) |
Of
1 | '/x3C% INCLUDE "(\S*?)" %x3E/' |
Dat scheelt een paar keer het escapen van de " en \. |
ikke_ook | dinsdag 25 oktober 2005 @ 18:49 |
wat dacht je van een / aan het begin en het einde van je delimiter? (Je eerste argument van preg_match) Denk ik...  |
ikke_ook | dinsdag 25 oktober 2005 @ 18:51 |
niet delimiter maar pattern bedoelde ik. Bah wat is het traag, ik bedoel dus wat SR zegt... |
LeeHarveyOswald | dinsdag 25 oktober 2005 @ 20:54 |
Hmm de foutmelding is weg, maar ik kan nog steeds geen pagina include-en.. mischien dat iemand iets in deze code ziet wat niet klopt?
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 | <?php ///
/// 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. ?> |
|
SuperRembo | dinsdag 25 oktober 2005 @ 21:16 |
Ik zie wel dat de nieuwe code-tag met scrollbars knap waardeloos is als de horizontale scrollbar buiten beeld is  |
JeRa | dinsdag 25 oktober 2005 @ 21:46 |
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  [offtopic] Ik vind de oplossing van GoT in ieder geval beter, die bieden een knopje waarmee je weliswaar de layout verneukt (nou ja, voor één post), maar wel in één keer de code ziet  |
Roonaan | woensdag 26 oktober 2005 @ 05:53 |
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? |
JeRa | woensdag 26 oktober 2005 @ 05:57 |
GoT laat normaal een scrollbare versie van de code zien, en indien gewenst kun je de code tot volledige breedte uitklappen goeiemorgen trouwens!  |
Roonaan | woensdag 26 oktober 2005 @ 06:22 |
Goedemorgen 
Een ander forum waar ik zit is simpelweg niet gecentreerd en daar loopt de layout gewoon aan de rechterkant door. Daar is ook geen ubb, maar is het invoerveld hetzelfde als de post wordt, dmv pre en een mooie font. Ik moet zeggen dat dat erg prettig werkt. Images plaatsen kan alleen via links natuurlijk dan, maar goed. Het is erg clean. |
Light | woensdag 26 oktober 2005 @ 06:40 |
quote: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? Dat heb ik inderdaad ook wel eens gezien, en dat werkt ook wel handig  |
JeRa | woensdag 26 oktober 2005 @ 06:44 |
quote: Wow, volgens mij gaat er iets niet goed met de encoding van Roönaäns naam in die quote 
[ Bericht 2% gewijzigd door JeRa op 26-10-2005 06:50:01 ] |
Light | woensdag 26 oktober 2005 @ 06:52 |
Hmmja, vaag. |
Light | woensdag 26 oktober 2005 @ 06:54 |
Browser restart werkt ook al niet  |
LeeHarveyOswald | woensdag 26 oktober 2005 @ 10:08 |
Maar iemand enig idee hoe ik die 'hack' werkend krijg?  |
Lariekoek | woensdag 26 oktober 2005 @ 12:22 |
Nog even 2 vraagjes.. Ik ben bezig met een winkelmandje waarbij gebruikers een artikel kunnen selecteren en hier zelf een persoonlijke tekst bij kunnen toevoegen.
Vanuit het winkelmandje volgt er een link naar de pagina teksttoevoegen.php waar de tekst toegevoegd kan worden. Dit sla ik op in een sessie.
1 2 3 4 5 6 7 8 9 | <?php 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\">"; ?> |
In het winkelmandje lees ik dit vervolgens weer uit
1 2 3 4 | <?php echo "<td width=\"85\" align=\"center\"><font size=\"2\" face=\"Verdana\" color=\"#FFFFFF\">".$tekst['artikel_id']."</td>"; ?> |
Nu heb ik 2 probleempjes.
De eerste keer tekst toevoegen gaat goed, en laat hij keurig de ingevoerde tekst zien. Wanneer ik deze tekst nu wil wijzigen krijg ik als tekst terug Array.
Wanneer er van 1 artikel twee stuks besteld worden moet er twee keer tekst ingevuld worden. Dit mag twee keer een andere tekst zijn, alleen neemt hij de eerst ingevoerde tekst klakkeloos over.
Iemand enig idee hoe ik deze 2 problemen kan oplossen? |
sylvesterrr | woensdag 26 oktober 2005 @ 13:06 |
1) Dan maak je dus niet goed gebruik van Arrays. 2) Zie 1.
Btw, wat leesvoer: http://nl3.php.net/variables.predefined & http://nl3.php.net/register_globals
Tip: laat meer van je code zien, want we kunnen op deze manier niks |
Lariekoek | woensdag 26 oktober 2005 @ 13:23 |
Dit is zeg maar de gehele code.
winkelwagen.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 | <?php 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>"; } } ?> |
teksttoevoegen.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 | <?php 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>"; } } } } } ?> |
|
SuperRembo | woensdag 26 oktober 2005 @ 13:29 |
1 2 | $tip = 'als je enkele quotes gebruikt dan hoef je "dubbele quotes" niet te escapen'; |
|
Lariekoek | woensdag 26 oktober 2005 @ 13:33 |
quote: Ok thnx  |
sylvesterrr | woensdag 26 oktober 2005 @ 13:47 |
teksttoevoegen.php r41 $_SESSION['tekst'][$artikel_id] = $tekst; Waar staan $artikel_id & $tekst ?
Ik ga 'm verder niet debuggen, is niet te doen met zo'n code (nofi). Ik raad je aan om toch maar eens een goed boek of een aantal goede tutorials te lezen. |
LeeHarveyOswald | woensdag 26 oktober 2005 @ 16:13 |
Ik heb mijn code nu min of meer werkend.. Alleen mn script moet een cookie controlleren (of je ingelogd bent) en dan een slowchat weergeven. Wat er nu gebeurd is dat alleen de regel Welkom gast! log in voor meer opties. .
Terwijl ik, als ik naar het document zelf ga, wel gewoon alles zie (dus cookie klopt nogsteeds).
Iemand een idee? Werkt mn controlle niet na een include? |
LeeHarveyOswald | woensdag 26 oktober 2005 @ 16:49 |
ik heb het min of meer opgelost nog wel wat kleine kinderziektes.. |
HuHu | woensdag 26 oktober 2005 @ 18:30 |
Ik heb een probleem en ik begin ondertussen redelijk wanhopig te worden. Ik kan namelijk geen enkele oplossing bedenken/vinden. Ik heb een PHP bestand dat een afbeelding upload en deze vervolgens aan mij mailt. Maar bij dat laatste gaat het soms mis. Behoorlijk mis.
De afbeelding wordt wél geupload, maar de mail met de afbeelding wordt niet naar mij verzonden. Dat terwijl degene die de afbeelding upload wél een bedankmailtje krijgt.
Ik ben erachter gekomen dat afbeeldingen met extra data niet worden gemailt. Een gewoon JPEG-tje gaat prima. Maar een foto van een digitale camera, met daarin allerlei gegevens als merk, datum, tijd, thumbnail, enz... , loopt compleet in de soep.
Hieronder de code voor het mailtje naar mij toe:
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 $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); ?> |
Als iemand hierin een fout ziet, of een goed werkend script weet, dan hoor ik het graag. |
HuHu | woensdag 26 oktober 2005 @ 18:31 |
Owja: de $naam, $email en $path worden bovenin ergens gemaakt. Dat gaat gewoon goed. |
sylvesterrr | woensdag 26 oktober 2005 @ 19:34 |
http://nl3.php.net/manual/en/function.mail.php#57725
http://pear.php.net/package/Mail http://phpmailer.sourceforge.net/ |
HuHu | woensdag 26 oktober 2005 @ 19:56 |
quote: Die bovenste link is niet voor bijlagen, voor zover ik het begrijp.
Die andere 2 links zijn classes die je moet installeren, maar daar kan ik (volgens mij) niet bij. Ik heb gewoon een server bij een hosting provider en niet een eigen server.
Of begrijp ik het gewoon verkeerd? |
HuHu | woensdag 26 oktober 2005 @ 19:58 |
Overigens heb ik de code overgenomen van http://nl3.php.net/manual/en/ref.mail.php#54863 . |
Roonaan | donderdag 27 oktober 2005 @ 05:47 |
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). |
Darkomen | donderdag 27 oktober 2005 @ 09:13 |
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? |
HuHu | donderdag 27 oktober 2005 @ 09:15 |
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). 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? |
nyny83 | donderdag 27 oktober 2005 @ 09:27 |
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? 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.
SELECT count(*), p.id FROM profielen p, profielen_images i WHERE i.user_id = p.id AND count(p.id) > 0
Ik weet niet zeker of het werkt, maar ik denk dat je zo in de goede richting zit. |
Darkomen | donderdag 27 oktober 2005 @ 09:31 |
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? Echo de mail eens, eens kijken wat je krijgt.
Edit: Die query klopt ook niet, ik begin er steeds minder van te begrijpen :S |
HuHu | donderdag 27 oktober 2005 @ 09:37 |
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 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.
En probeer jij de query van nyny83 eens. Een inner join is gewoon een lijstje van tabellen die je bij de FROM opneemt (gescheiden door komma's) en de voorwaarden (i.user_id = p.id) neem je op in de WHERE. |
nyny83 | donderdag 27 oktober 2005 @ 09:44 |
Hij zegt al dat het niet werkt.. welke foutmelding krijg je? Ik kan het hier natuurlijk niet zelf testen, ik heb jouw tabellen niet etc. Misschien kunnen we wat met je foutmelding. |
HuHu | donderdag 27 oktober 2005 @ 09:48 |
even niet goed gelezen. Misschien is dit wat. Ik neem aan dat de profielen zonder image niet voorkomen in profielen_images.
1 2 3 4 | SELECT p.id FROM profielen p WHERE p.id IN (SELECT i.user_id FROM profielen_images i) |
Met deze query verzamel je alle ID's uit profielen die voorkomen in profielen_images. Dacht ik. |
Darkomen | donderdag 27 oktober 2005 @ 09:56 |
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"
Ik ga zo even die andere query proberen.
Verdwijnt die mail trouwens niet gewoon in een junkmail of geblokeerd door je provider? eg. probeer eens een andere email adres om na te verzenden? |
nyny83 | donderdag 27 oktober 2005 @ 09:58 |
aha... da's waar ook ja, als je een count doet moet je altijd een group by doen. Probeer eens aan het einde GROUP BY p.id te doen. |
HuHu | donderdag 27 oktober 2005 @ 10:01 |
Een ander mailadres maakt ook niet uit. Heb het geprobeerd met Demon, HCCnet. Gmail en de Universiteit Utrecht.
Ik ga toch echt vermoeden dat het aan mijn server ligt. Ik ga eens kijken of ik op een andere server kan testen. |
Darkomen | donderdag 27 oktober 2005 @ 10:01 |
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 |
Tokus | donderdag 27 oktober 2005 @ 10:01 |
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" zoals hierboven al gezegd, voor een count moet je een Group By in je query hebben. Maar... je "and count(p.id) > 0" zal ook niet werken. Daarvoor moet je "having count(p.id) > 0" gebruiken. |
LeeHarveyOswald | donderdag 27 oktober 2005 @ 10:04 |
quote: En 1 van die kinderziektes blijkt toch iets ernstiger...
Als ik als 'gast' naar www.pestforum.nl/chat.php ga krijg ik netjes 'welkom gast log in voor meer opties'
Als ik de regel invoeg in het forum, en dan als gast het forum bekijk, dan krijg ik enkel een blanco pagina.. (zelfs als ik bovenin de PHP code van de pagina die ik include een echo zet, dan zie ik die niet).
Echter, als ik wel ingelogd ben, dan werkt het wel goed..
iemand een idee? |
HuHu | donderdag 27 oktober 2005 @ 10:07 |
Kutserver 
Op een andere server werkt het zonder problemen 
Maar het probleem is dus (deels) opgelost. Het ligt in ieder geval niet aan mij. |
nyny83 | donderdag 27 oktober 2005 @ 10:14 |
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 nou snap ik het ff niet meer, met mn eerste query kreeg je toch ook een error? Werkt het nou allemaal wel of niet?  |
Darkomen | donderdag 27 oktober 2005 @ 10:19 |
het werkt met de query:
SELECT p.id FROM profielen p WHERE p.id IN (SELECT i.user_id FROM profielen_images i) |
Tokus | donderdag 27 oktober 2005 @ 10:30 |
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) 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. |
Darkomen | donderdag 27 oktober 2005 @ 10:45 |
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. Deze levert mij meerdere (157) resultaten op , dus alle images die in profiel_images staan. De eerste query geeft me de disctincte userid op. |
Tokus | donderdag 27 oktober 2005 @ 10:50 |
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. Ah a, meerdere images. Dan zet je er een distinct tussen. select distinct p.id......
maare, kan je tabel profielen_images user_id's bevatten die niet voorkomen in je tabel profielen? zo nee, dan kun je toch gewoon alleen selecteren uit je tabel profielen_images? |
Darkomen | donderdag 27 oktober 2005 @ 10:55 |
Niet alle info die ik nodig heb staat in de images tabel, vandaar dat ik de profielen tabel nodig heb. |
Pronk | donderdag 27 oktober 2005 @ 11:19 |
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? |
LeeHarveyOswald | donderdag 27 oktober 2005 @ 11:36 |
quote: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? hey hey hey trekken we geen nummertjes meer tegenwoordig |
Darkomen | donderdag 27 oktober 2005 @ 12:16 |
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 } |
Pronk | donderdag 27 oktober 2005 @ 12:17 |
quote: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 } Dat werkt inderdaad perfect! THX |
Darkomen | donderdag 27 oktober 2005 @ 12:20 |
Oww ja, stond een foutje in, !defined moet het zijn  |
sylvesterrr | donderdag 27 oktober 2005 @ 12:31 |
Ranzig. 
http://nl2.php.net/manual/en/function.get-included-files.php |
the_disheaver | donderdag 27 oktober 2005 @ 16:03 |
quote: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. http://nl3.php.net/exif
misschien dat hier verschilen zijn met beide servers? 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. |
Lariekoek | donderdag 27 oktober 2005 @ 17:55 |
Ik heb de boel maar even zwaar versimpeld. Tot zover ben ik gekomen:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php 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"; ?> |
Na het drukken op toevoegen krijg ik nu steeds de text: Array Ik doe ongetwijfeld iets fout, maar wat  |
Darkomen | donderdag 27 oktober 2005 @ 18:07 |
je maakt toch van arr een array dan is het logisch dat er array staat.
Doe maar eens print_r($_POST['arr']); |
Lariekoek | donderdag 27 oktober 2005 @ 18:46 |
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 dat ziet er goed uit. Die array is nu met een for lus weer uit te lezen neem ik aan? |
sylvesterrr | donderdag 27 oktober 2005 @ 19:00 |
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. Overigens staan dat soort dingen zeer duidelijk in de documentatie die jij uiteraard hebt doorgelezen.  |
Lariekoek | donderdag 27 oktober 2005 @ 19:04 |
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.  Ja! Nog bedankt daarvoor..  |
Swetsenegger | donderdag 27 oktober 2005 @ 20:16 |
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 |
SuperRembo | donderdag 27 oktober 2005 @ 20:24 |
Lijk me niet dat die bestaat. Hoe had je dat in gedachten  En wat is er ranzig aan die vergelijking?
Gelukkig kan je zelf functies definieren in php  |
Swetsenegger | donderdag 27 oktober 2005 @ 20:34 |
Als een soort modulo ofzo  Ik zat heel ranzig te denken, maar toen ik hem hier boven uittikte vond ik het eigenlijk ook wel meevallen  |
the_disheaver | donderdag 27 oktober 2005 @ 21:07 |
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 5% van valueA is niks anders dan valueA * 0,05 |
Swetsenegger | donderdag 27 oktober 2005 @ 21:20 |
quote: Joh!
Dat is niet wat ik vraag |
Wifibro | donderdag 27 oktober 2005 @ 21:26 |
Hee Superrembo, kom je weer meedoen met PHP Golf?
http://www.phpfreakz.nl/forum.php?forum=5&iid=721061 |
ikke_ook | donderdag 27 oktober 2005 @ 21:26 |
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 if(valueA-valueB < valuaA / 20)
Ook ranzig? |
Swetsenegger | donderdag 27 oktober 2005 @ 21:37 |
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  dusch... |
SuperRembo | donderdag 27 oktober 2005 @ 22:14 |
quote: Bedankt voor de tip.
En de lat ligt al op 52 tekens  (Limbo dansen, niet hoogspringen ) |
Swetsenegger | donderdag 27 oktober 2005 @ 22:20 |
Ik zal 'm maar even crosspostenquote: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 |
sh4dow | donderdag 27 oktober 2005 @ 23:12 |
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:
1 2 | <?php $Bericht[] = array('Patrick','iemand@hotmail.com',' ','Herveld','14-09-2004 21:46:28','Berichtje'); ?> <?php $Bericht[] = array('Thomas','iemand@hotmail.com',' ','Hoogkerk','14-09-2004 23:16:05','Berichtje'); ?> |
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? |
Swetsenegger | donderdag 27 oktober 2005 @ 23:14 |
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? staan er array's in het tekstbestand of platte tekst welke je zelf array maakt?
explode kan je arrays mee splitten: http://nl3.php.net/manual/nl/function.explode.php |
sh4dow | donderdag 27 oktober 2005 @ 23:19 |
Nee er staan echt arrays in het tekstbestand, zoals hierboven in het voorbeeld dus. Dat zijn de eerste 2 regels uit het tekstbestand.
Als het plaintext zou zijn, was me dat wel gelukt. Ik ben al met foreach bezig, maar ik kom er niet uit :S |
sylvesterrr | vrijdag 28 oktober 2005 @ 00:04 |
Include dat bestand, en je hebt een pracht van een array ($Bericht).
1 2 3 4 5 6 7 | <?php include_once('mijntekstbestandmetberichten.php'); for($i=0;$i<count($Berichten);$i++) { // huidig bericht = $Bericht[$i] (array!) } ?> |
|
Neverstop | vrijdag 28 oktober 2005 @ 00:38 |
Over dat golf ding, zit nu op 95. Ik klooi verder. |
Chandler | vrijdag 28 oktober 2005 @ 14:38 |
Ik doe niet meer mee met dat golf ding; snap er toch de balle van. Ben er gisteren even mee bezig geweest maar zo vet is mijn kennis nou ook weer niet zoals $c=$a{$b}  |
Lamme_Sterfkanarie | vrijdag 28 oktober 2005 @ 15:20 |
array met alle letters maken
tellertje tot 26 laten tellen 1 keer printen, <br> d'r achteraan. met array_shift de A d'r afhalen zodat alles opschuift en die dan met array_push de A achteraan de array neerzetten. als de teller bij 26 is heeft ie alles gehad..
of denk ik weer te simpel? |
Roonaan | vrijdag 28 oktober 2005 @ 15:30 |
Mwah, als je dat in < 80 tekens kan ben je wel briljant :-) kzit nu op 65. |
Lamme_Sterfkanarie | vrijdag 28 oktober 2005 @ 15:35 |
Ben d'r nog niet mee bezig geweest. Dit was ff een brainfart over hoe ik het zou aanpakken als het geen wijdstrijdje met zo min mogelijk karakters was  als je van die array of zou kunnen komen scheelde het al een bende karakters. Als ik de ascii table d'r bij pak zie ik wel dat alle letters een opeenvolgende waarde hebben. Is daar niets mee te doen? Beginnen bij de A en steeds 1 d'r bij optellen met een loop en dat in een andere loop 26 keer doen terwijl je steeds 1 waarde hoger begint
geen idee of je browser die ascii waarde als een letter weergeeft hoor. Heb me daar nooit zo mee bezig gehouden. |
sylvesterrr | vrijdag 28 oktober 2005 @ 16:03 |
Doe iets met chr(65) tot en met chr(90). Ik zit nu op 67 tekens, maar het met nog minder tekens. |
Lamme_Sterfkanarie | vrijdag 28 oktober 2005 @ 16:06 |
kzal me d'r straks ook wel ff mee bezighouden als ik tijd heb. Kijken wat ik er van kan bakken |
Swetsenegger | vrijdag 28 oktober 2005 @ 16:28 |
Zoals ik op phpfreakz al zei "Met gekut met arrays ga je niet winnen denk ik". Sylvesterrrrs opmerking leek mij ook de meest bruikbare methode, je kan natuurlijk heel simpel lussen van 65 tot 90. Alleen.... hoe laat je hem de tweede keer van 66 tot 90 PLUS 65 echoën 
Overigens zegt iemand op 52 karakters te zitten. |
sylvesterrr | vrijdag 28 oktober 2005 @ 16:47 |
quote: que?quote:Overigens zegt iemand op 52 karakters te zitten. Doet ie goed. Ik heb wel wat beters te doen hoor.  |
Lamme_Sterfkanarie | vrijdag 28 oktober 2005 @ 16:48 |
de A moet weer achter de Z komen op de 2e regel. enz. |
Roonaan | vrijdag 28 oktober 2005 @ 17:55 |
- edit dan maar :S -
[ Bericht 94% gewijzigd door Roonaan op 29-10-2005 11:08:42 ] |
HuHu | vrijdag 28 oktober 2005 @ 18:00 |
quote: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. Als je de { en } weghaalt zit je al op 62 tekens 
Als je dan nog <br> gebruikt ipv <br/> zit je op 61.
Als laatste nog <? gebruiken in plaats van <?php en je zit al op 58. Dan kan je ook nog de spatie tussen <? $i= weghalen, dat wordt dan <?$i= en je komt op 57.
Als je dan ook nog de ; aan het einde weghaald zit je op 56.
[ Bericht 6% gewijzigd door HuHu op 28-10-2005 18:09:10 ] |
Roonaan | vrijdag 28 oktober 2005 @ 18:03 |
Maar dan nog kom je niet aan 52 ;-) |
Roonaan | vrijdag 28 oktober 2005 @ 18:08 |
- Edit dan maar -
[ Bericht 49% gewijzigd door Roonaan op 29-10-2005 11:08:53 ] |
HuHu | vrijdag 28 oktober 2005 @ 18:12 |
quote: 1 | <?while($i++<702)echo$i%27?chr(65+($i-1)%26):'<br>'; |
Zo zit je op 52. |
Roonaan | vrijdag 28 oktober 2005 @ 18:20 |
Jups, tot die conclusie was ik ook gekomen. Same as yapf dus.
Maar met wat bit operations, kan het dan niet korter?
-r- |
ikke_ook | vrijdag 28 oktober 2005 @ 18:27 |
[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  |
SuperRembo | vrijdag 28 oktober 2005 @ 18:30 |
Hmm, zo is de lol er wel een beetje af nu er complete code gepost is  Op phpfreakz wordt gevraagd geen code te posten, doe 't dan ook niet hier.
Ik zit zelf op 49. |
Roonaan | vrijdag 28 oktober 2005 @ 18:33 |
ach, vorige keer was iedereen dol op het samenwerken. |
SuperRembo | vrijdag 28 oktober 2005 @ 18:40 |
Samenwerken is ok, maar er stond volgens mij geen complete code. |
Swetsenegger | vrijdag 28 oktober 2005 @ 19:22 |
Code posten is niet echt de bedoeling eigenlijk  Overigens snap ik ';m nog niet ook 
en de code is 51 karakters, geen 52 
-edit- je kan niet tellen swets.. |
Swetsenegger | vrijdag 28 oktober 2005 @ 19:47 |
quote: Waarom zou het een beetje schoon moeten blijven  Kan je erg veel van leren. |
Chandler | vrijdag 28 oktober 2005 @ 21:04 |
Hallo,
Ben op dit moment bezig met een stukje random te genereren arrays oftwel het volgende idee dat vooral Sop heeft aangedragen.
Ik heb een paar mensen in een lijst ziten en sommige mense mogen sommige mensen kiezen en sommige niet. Nou heb ik eventjes een voorbeeld uit de hand gemaakt. Nu heb ik ieder persoon voorzien van een array met daarin de mogelijke mensen die ze kunnen kiezen. Echter krijg ik steeds errors met wat ik ook probeer..
zie code:
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);
?> |
denk dat ik weer te diep doorspace ennuh zou volgens mij wel 1000x beter kunnen. Iemand een idee? als je het niet snapt probeer ik het nog wel wat beter uit te leggen  |
Roonaan | vrijdag 28 oktober 2005 @ 21:51 |
Voor het begrip is het nuttiger als je gewoon namen gebruikt in plaats van nummers om gebruikers te identificeren.
Daarnaast een keuze maken of je je variabelen in het engels of het nederlands programmeerd, tevens is er de vraag wat $narr doet.
Een aanpak die je zou kunnen kiezen is om de array to sorteren op het aantal mensen dat iemand in zijn lijstje heeft. Zoals de opzet nu is (of ik mis iets) is het zo dat er iemand over zou blijven die niemand kan kiezen?
|
Chandler | zaterdag 29 oktober 2005 @ 12:54 |
Dus je ziet het liever met de namen? maar dan blijft het principe toch gelijk? |
Chandler | zondag 30 oktober 2005 @ 10:03 |
Ik heb het nu even zo gedaan.
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);
?> |
en kreeg na veel F5en het volgende te zien
1 2 3 4 5 6 7 8 | gebruiker eric heeft gebruiker joop getrokken 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" } |
want veelal zag ik dit soort uitkomsten.. 
1 2 3 4 5 6 7 8 9 10 11 12 | gebruiker eric heeft gebruiker joke getrokken 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 } |
en nu zie je dus dat op regel 29 een error komt, oftewel de volgende regel.
1 | $code = $tmpArr[rand(0, count($tmpArr)-1)]; |
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!  |
Roonaan | zondag 30 oktober 2005 @ 10:44 |
en als je $code = $tmpVar[array_rand($tmpVar)] doet?
also, $tmpVar is meer dan een tijdelijke var natuurlijk. Deze heeft wel degelijk een bepaalde betekenis en significante inhoudt ondanks het tijdelijke karakter. Beter om in het vervolg dan ook een variabele naam te kiezen die wat zegt over de intentie van de variabele dan haar levensduur.
-r- |
Light | zondag 30 oktober 2005 @ 10:53 |
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!  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. |
Chandler | zondag 30 oktober 2005 @ 11:29 |
idd, heb reeds array_rand toegevoegd en dat is deels een oplossing want om de zoveel keer krijg ik alsnog een error
ipv
1 2 3 4 5 6 7 8 9 10 11 | if (is_array($tmpArr) && count($tmpArr) > 1) { $code = $tmpArr[rand(0, count($tmpArr)-1)]; } else { foreach ($tmpArr as $key => $value) { $code = $value; } } |
de oplossing van roonaan en een andere gebruiker 
1 | $code = $tmpVar[array_rand($tmpVar)]; |
maar dan nog krijg ik wel eens een error op lijn 27 oftewel bovenstaande code maar dat zal komen omdat ik dan een lege array heb... |
Light | zondag 30 oktober 2005 @ 11:42 |
1 2 3 4 5 6 7 8 9 10 11 | if (is_array($tmpArr) && count($tmpArr) > 1) { $code = $tmpArr[rand(0, count($tmpArr)-1)]; } else { foreach ($tmpArr as $key => $value) { $code = $value; } } |
Dat gaat idd mis bij een lege array. Oplossing is simpel, zorgen dat je niets doet als de array leeg is.
1 2 3 4 5 6 7 8 9 | if (count($tmpArr) > 0) { $code = $tmpArr[array_rand($tmpArr)]; } else { echo 'Geen keuze beschikbaar voor '.$id.'<br>'; break; } |
|
Chandler | zondag 30 oktober 2005 @ 12:24 |
True, ik denk dat ik maar ff een routine ga maken dat wanneer alles goed is de gebruiker door gaat en anders overnieuw moet kiezen (automatisch natuurlijk ) |
Chandler | zondag 30 oktober 2005 @ 12:25 |
Maar goed, ik zit nu met een andere test... weer zelf bedacht...
Ga nu het idee omdraaien, wil nu inplaats van de wel mogelijkheden in een array te zetten de niet mogelijkheden in een array zetten 
Dus ga weer hard aan het coden want ben niet zo ziek meer dus heb weer wat hersens beschikbaar... |
Chandler | zondag 30 oktober 2005 @ 13:32 |
Hier is de volgende.
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);
?> |
echter zit het blijkbaar niet goed in elkaar want krijg bij iedere keuze fouten te zien en snap niet waar de fouten zitten?
OMG ben er nu al ruim een uur mee bezig geweest om te bugtesten iemand een idee?
oftwel uitkomst
1 2 3 4 5 6 7 8 9 10 | gebruiker eric heeft gebruiker tess getrokken 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 } |
 |
Darkomen | zondag 30 oktober 2005 @ 17:32 |
Wat krijg je als je
$code = $userChoose[array_rand($userChoose)];
$userSelected[$id] = $code;
IN $userSelected[$id] = $userChoose[array_rand($userChoose)];
veranderd? |
Light | zondag 30 oktober 2005 @ 17:47 |
quote: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? Dan krijg je dat de variabele $code niet te gebruiken is bij het echo-statement even verderop  |
Roonaan | zondag 30 oktober 2005 @ 22:52 |
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- |
Swetsenegger | zondag 30 oktober 2005 @ 23:14 |
Waarom geeft mijn mysql column, welke NULL enabled is, en NULL als default waarde heeft 0 terug wanneer ik geen waarde invul? |
Light | zondag 30 oktober 2005 @ 23:15 |
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- 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. |
Light | zondag 30 oktober 2005 @ 23:19 |
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? Geen idee. Als ik het hier probeer gaat het wel goed. Weet je zeker dat die column NULL als default waarde heeft? |
Swetsenegger | zondag 30 oktober 2005 @ 23:28 |
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? 
Op welke versie heb jij het geprobeerd?
-edit- opgelost. in plaats van niets invullen gewoon NULL invullen 
[ Bericht 10% gewijzigd door Swetsenegger op 30-10-2005 23:35:22 ] |
SuperRembo | zondag 30 oktober 2005 @ 23:35 |
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? Omdat MySQL vol met bugs, inconsequenties en andere vreemde dingen zit. ACM had er een lijst van online staan. 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 Deze punten gaan vooral over versie 3.23.x, dat zal ook wel de reden zijn dat ie offline is. |
Swetsenegger | zondag 30 oktober 2005 @ 23:42 |
quote: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. 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  |
Light | zondag 30 oktober 2005 @ 23:44 |
quote: Ik heb het geprobeerd op mysql 4.0.25 die ik hier lokaal had draaien. (Had, ik ben bezig met een upgrade nu.)
En ik deed een insert into tabel (kolom1) values (1); waarbij kolom2 (die dus niet wordt genoemd) als default null was gedefinieerd. Dan komt er ook een waarde null in te staan. |
Light | zondag 30 oktober 2005 @ 23:45 |
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  Een lege string is niet gelijk aan NULL. |
SuperRembo | zondag 30 oktober 2005 @ 23:50 |
Een lege string is zeker ook geen decimal.
(Er zit een typo in articelcode) |
Swetsenegger | zondag 30 oktober 2005 @ 23:51 |
quote: Daar was ik achter nu  Dit geeft immers geen NULL maar 0 als $_POST['second_price'] leeg is.
INSERT INTO table (id,second_price) VALUES(0,'".$_POST['second_price']."') |
Light | maandag 31 oktober 2005 @ 00:01 |
quote: Bij MySQL is een hoop mogelijk, gezien wat ik zo lees. |
Light | maandag 31 oktober 2005 @ 01:04 |
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. |
Chandler | maandag 31 oktober 2005 @ 07:42 |
quote: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? Een verdwijnende variabel, die ik idd niet bij het echo statement kan gebruiken  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  Yep, dit is ff makkelijk en voor mij overzichtelijk...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- 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..
Heb je tips? hoef geen code! zolang je me maar in de goede richting wijst!  quote: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. hoe bedoel je dat? en waar denk jij dat mijn probleem zit? want ik kan dit helaas niet zo even 1234567890 uitvinden heb gisteren (tijdens het ziek zijn) de hele dag niets anders in me hoofd gehad dan de niet werkende code...
Tips, verwijzingen etc zijn van harte welkom!. |
SuperRembo | maandag 31 oktober 2005 @ 07:50 |
Wat wil je nou eigenlijk met dat script? Als het gewoon lootjes trekken was, dan zou iedereen kunnen kiezen uit iedereen behalve zichzelf. Als input zou je dan alleen een lijst namen hebben. Maar bij jou begin je met een array waarbij sommige mensen veel meer keus hebben dan anderen  |
Chandler | maandag 31 oktober 2005 @ 08:07 |
SuperRembo; dat zou inderdaad een 'gewoon' lootjes trekken script zijn maar dat is hier niet het geval. In mijn script kun je ook kiezen dat mensen hun vriend/vriendin/vader/moeder en de keuze van vorig jaar niet mag kiezen (alleeen vorig jaar!).. dus dan wordt de sub array iets groter .
Het laatste script is dus een niet wat jij denkt het is net andersom, deze mensen mogen dus pertinent NIET gekozen worden 
vb
1 2 3 | $arr = array("eric" => array("eric", "marc"), "marc" => array("marc", "eric"), "tess" => array("tess", "joop", "kees"), |
eric mag dus geen marc of eric trekken ennuh marc mag ook geen marc of eric trekken en als laatste voorbeeld mag tess geen tess/joop of kees trekken. |
Light | maandag 31 oktober 2005 @ 08:20 |
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 uitvinden  heb gisteren (tijdens het ziek zijn) de hele dag niets anders in me hoofd gehad dan de niet werkende code... 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. |
Chandler | maandag 31 oktober 2005 @ 08:33 |
klopt dat ben ik met je eens, maar deze code genereerd nogal vaak veel errors.. test het maar eens  |
Swetsenegger | maandag 31 oktober 2005 @ 08:39 |
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. 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  |
Roonaan | maandag 31 oktober 2005 @ 09:54 |
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; } }
?> |
|
JeRa | maandag 31 oktober 2005 @ 10:50 |
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  Afgezien van dit belachelijke gedrag van MySQL ( ); waarom probeerde je een string naar een decimal te sturen?  |
Roonaan | maandag 31 oktober 2005 @ 11:32 |
Aangezien fok en phpfreakz toch aan het crossbreeden is. Mag ik jullie commentaar vragen op http://www.phpfreakz.nl/library.php?sid=20709 ?
-r- |
Chandler | maandag 31 oktober 2005 @ 12:43 |
quote: @Ro�a� 
ik ga je code inspecteren, zal wel heel veel dingen niet begrijpen maar er mee stoeien zorgt voor kennis  |
Swetsenegger | maandag 31 oktober 2005 @ 12:56 |
quote: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?  Nou, ik was in de veronderstelling dat je bij een INSERT statement alle kolommen moest benoemen dus stuurde ik VALUES(0,'".$_POST['second_price']."') naar de database.
Nu stuur ik gewoon NULL, en vanavond haal ik 'm gewoon helemaal uit de INSERT statement |
Chandler | maandag 31 oktober 2005 @ 13:56 |
@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 
-edit-
en hoe is het mogelijk om het data uit een array te verwijderen middels een andere array..
ik probeer het nu zo te doen maar dat werkt niet echt 
1 2 3 4 | foreach ($excludeUsers as $id => $value) { unSet($includeUsers[$id]); } |

[ Bericht 49% gewijzigd door Chandler op 31-10-2005 14:02:12 ] |
Pronk | maandag 31 oktober 2005 @ 14:09 |
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.
1 2 3 4 5 6 7 8 9 | <?php PHP if (!isset($_COOKIE[$_GET['link']])) { echo"blabla"; setcookie("$_GET[link]", "true", strtotime("tomorrow 0"), "/"); } ?> |
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? |
Roonaan | maandag 31 oktober 2005 @ 14:30 |
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.netwaar staan de volgende functie voor!  array_intersect ? want uit de uitleg en voorbeeld kom ik niet  array_intersect geeft alleen de waarde terug die in beide arrays voorkomen.
-r- |
Chandler | maandag 31 oktober 2005 @ 14:40 |
ok, dan heb ik weer wat geleerd; jammer dat ze dat niet in het nederlands op php.net hebben staan maaruh goed weer wat geleerd  |
Chandler | maandag 31 oktober 2005 @ 14:58 |
@Roonaan: Het volgende is mijn uitkomst, toch wil ik je nog bedanken voor het plaatsen van een door jou geschreven code; je hebt me namelijk veel inzicht gegeven en laten zien dat ik nog heel veel moet leren.
Graag zou ik comments willen zien op het stukje dat ik heb geschreven.
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>';
?> |
het idee is volgens mij het zelfde als die van jou maar dan met wat minder moelijke onderdelen 
 |
Roonaan | maandag 31 oktober 2005 @ 15:23 |
Commentaar: je gebruikt nog steeds engelse en nederlandse variabelenamen door elkaar. Je naamgeving is erg slordig. Tevens ben ik nog steeds overtuigd dat een recursieve aanpak hiervoor beter is.
-r- |
Chandler | maandag 31 oktober 2005 @ 15:26 |
Okey... de variabelbenamingen kunnen beter, en zekers als je NL/ENG bedoelt maar daar heb ik helaas wel vaker last van, zal me ooit (spoedig) eens een vaste methode moeten aanleren.. en waarom denk je dat een recursive aanpak beter is? zou je dat eens kunnen uitleggen? 
Heb je trouwens de code getest? hij doe't echt tis niet te geloven hehe.. |
Roonaan | maandag 31 oktober 2005 @ 16:02 |
Recursief? Omdat als je het IRL zou doen het in principe ook een recursieve happening is :-) Meer dan een foreach. Zakdoekje leggen is wel weer loop-based daarentegen.
Getest? Gewoon extra debug lines laten outputten en vervolgens een peer keer draaien.
Die ob_start/ob_end_clean/ob_end_flush zat er pas heel laat in.
-r- |
Pronk | maandag 31 oktober 2005 @ 16:36 |
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? 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. |
Chandler | maandag 31 oktober 2005 @ 17:18 |
@Roonaan; je zult ongetwijfeld gelijk hebben (ps ik reageer later op email )
-edit-
zelf gefixt 
[ Bericht 65% gewijzigd door Chandler op 31-10-2005 17:25:29 ] |
Chandler | maandag 31 oktober 2005 @ 17:55 |
ps.
Ik heb net Wamp geinstalleerd (de laatste versie, php,mysql,apache etc) nu krijg ik echter steeds fout meldingen bij dit soort dingen.
echo parseTemplate(loadTemplate("./template.tpl"));
dat wil het nu zien als dit
$tpl = loadTemplate("./template.tpl"); echo parseTemplate($tpl);
maar dat wil ik dus weer niet, want het 1e voorbeeld is toch correct coding? en waar kan ik die setting in php.ini vinden cq veranderen?
Tnx  |
JeRa | maandag 31 oktober 2005 @ 18:45 |
quote: 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 testen  |
Pronk | woensdag 2 november 2005 @ 10:57 |
Ik heb een fotoalbum (deels zelf gemaakt / deels gedownload) en deze geeft op de thumbnail pagina (soms, afhankelijk van het geladen album) de volgende notices:
Notice: Undefined offset: -1 in D:\Data\WebDesign\pronkmedia.nl\fotoalbum\klein.php on line 51
Notice: Undefined offset: -1 in D:\Data\WebDesign\pronkmedia.nl\fotoalbum\klein.php on line 53
Regel 49 t/m 59 zijn de volgende regels:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php $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]; ?> |
Hier moet het dus ergens fout gaan, ziet iemand misschien wat er mis gaat? Hieronder staat de volledige code van de pagina: (deze pagina van het fotoalbum leest een directory uit en maakt thumbnails)
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> ?> |
Het script werkt overigens gewoon goed, ik wilde alleen alle notices wegwerken. En deze krijg ik maar niet weg! |
SuperRembo | woensdag 2 november 2005 @ 11:19 |
Als $DirIndex = 0 is, dan krijg je hier $DirArray[$DirIndex - 1] die notice op. De array begint bij 0, dus -1 bestaat niet. Logisch. |
Pronk | woensdag 2 november 2005 @ 11:57 |
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. 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? |
JeRa | woensdag 2 november 2005 @ 12:14 |
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? Door bv dit te doen:
1 2 3 | if ($DirIndex > 0) { $PrevDir = "klein.php?dir=".$DirArray[$DirIndex - 1]; } |
Er zijn natuurlijk nettere oplossingen te bedenken omdat je dit meerdere keren moet doen, maar dit is één manier iig 
[ Bericht 3% gewijzigd door JeRa op 02-11-2005 12:24:07 ] |
Pronk | woensdag 2 november 2005 @ 12:37 |
Nouja, misschien niet de netste manier maar mijn notices zijn weg! Thx! |
sh4dow | woensdag 2 november 2005 @ 19:59 |
Om nog even terug te komen op m'n vraag.
Ik heb een .txt bestand met gastenboek berichten van een oud script. Nu heb ik een nieuw gastenboek met MySQL. Nu wil ik de oude berichten uit het txt bestand overzetten naar de MySQL database.
Hier een stukje van het data.txt bestand:
1 2 | <?php $Bericht[] = array('Patrick','iemand@hotmail.com',' ','Herveld','14-09-2004 21:46:28','Berichtje'); ?> <?php $Bericht[] = array('Thomas','iemand@hotmail.com',' ','Hoogkerk','14-09-2004 23:16:05','Berichtje'); ?> |
Hoe krijg ik deze arrays nu in de database? Ik ben al een paar dagen bezig geweest, maar ik kom er echt niet uit. |
ikke_ook | woensdag 2 november 2005 @ 20:15 |
heb je een database met een table messages aangemaakt?
Open het bestand data.txt. Zet onderaan het bestand de volgende code :
1 2 3 4 5 6 7 8 | <?php 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()); } ?> |
Verander de bestandsnaam in data.php Zet hem in een directory waarvanuit je php bestanden kunt uitvoeren Roep data.php aan in je browser.
Lijkt me niet zo moeilijk toch?
[ Bericht 10% gewijzigd door ikke_ook op 02-11-2005 20:28:28 ] |
Swetsenegger | woensdag 2 november 2005 @ 20:20 |
Eerst laadt je gewoon de txt gewoon in een text editor en met de replace functie strip je <?php $Bericht[] = array( en ); ?> Dan hou je dus
1 2 | 'Patrick','iemand@hotmail.com',' ','Herveld','14-09-2004 21:46:28','Berichtje' 'Thomas','iemand@hotmail.com',' ','Hoogkerk','14-09-2004 23:16:05','Berichtje' |
over. Ik ga er van uit dat elk bericht volledig op 1 regel staat? of staan er in 'berichtje' ook enters?
Even van het eerste uitgaand: http://nl3.php.net/manual/nl/function.file.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?php $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
} ?> |
|
Swetsenegger | woensdag 2 november 2005 @ 20:21 |
Die van ikke ook is een stuk slimmer  |
sh4dow | woensdag 2 november 2005 @ 20:31 |
Ja ik heb de DB al klaar, ik ga nu even proberen die data.txt te includen en dan het script van ikke_ook te draaien.
Er zitten wel <BR> tags in het bestand |
ikke_ook | woensdag 2 november 2005 @ 20:36 |
in welk bestand zitten <br>'s? en wat bedoel je met includen??Heb je mijn beschrijving wel gelezen?daar hoef je niks te includen hoor.. |
sh4dow | woensdag 2 november 2005 @ 20:40 |
in data.txt zitten wat <BR>'s in de 'berichtje' stukjes.
ik heb data.txt gerenamed naar data.php en deze include ik nu in een nieuw php bestand met jou code. |
ikke_ook | woensdag 2 november 2005 @ 20:46 |
Ok, dat kan ook idd, maar die <br> maakt niet uit hoor...die kun je toch ook gewoon in de database zetten? |
sh4dow | woensdag 2 november 2005 @ 20:51 |
Ja het is al gelukt met jou script alles komt netjes in de DB te staan nu, die <br>'s geven idd geen probleem, maar Swetsenegger had het daarover.
Heel erg bedankt! |
SuperRembo | woensdag 2 november 2005 @ 20:53 |
quote: Voor $NextDir moet je een zelfde soort controle inbouwen (voor als je aan het eind van de lijst bent).
En als $PrevDir of $NextDir leeg zijn, dan moet je de links naar het volgende of vorige album niet tonen.
(Waarom gebruik je javascript en window.location en niet gewoon een <a> link?) |
Light | woensdag 2 november 2005 @ 20:55 |
quote:Op woensdag 2 november 2005 20:51 schreef sh4dow het volgende:Ja het is al gelukt met jou script  alles komt netjes in de DB te staan nu, die <br>'s geven idd geen probleem, maar Swetsenegger had het daarover. Heel erg bedankt! Swets had het over newlines. Dus niet <br> maar \n. |
sh4dow | woensdag 2 november 2005 @ 22:07 |
Nog even een klein vraagje.
Ik wil graag de datums van de oude berichten omzetten naar een UNIX timestamp. Ik weet dat dit met de functie mktime kan. Maar hoe split ik dit datum format zodat ik mktime kan toepassen:
de datums zijn op deze manier opgeslagen: '14-09-2004 21:46:28' |
Swetsenegger | woensdag 2 november 2005 @ 22:12 |
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 |
Roonaan | woensdag 2 november 2005 @ 22:13 |
gewoon strtotime gebruiken? |
ikke_ook | woensdag 2 november 2005 @ 22:15 |
quote: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 Ik gebruik ook een datetime veld, maar die waarde haal ik er altijd uit als een UNIX_TIMESTAMP, anders kun je er niet mee rekenen Ik snap niet zo goed wat jij bedoelt.
Hoe krijg jij een andere datum in dat datetime veld dan NOW() zonder een timestamp te gebruiken? Ik gebruik daar FROM_UNIXTIME(timestamp) voor.
Combi van datetime en timestamp vind ik prima  |
Swetsenegger | woensdag 2 november 2005 @ 22:20 |
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 rekenen  Ik snap niet zo goed wat jij bedoelt. Als je een dag eerder wilt hebben kan je beter gewoon DATESUB van mysql gebruiken.
scheelt een hoop PHP gereken |
Light | woensdag 2 november 2005 @ 22:21 |
quote: 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  |
sh4dow | woensdag 2 november 2005 @ 22:23 |
quote: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  Inderdaad Dat werkt niet, zie: http://195.241.108.27/scripts/convert/time.php
Iemand enig idee hoe ik dat kan omwisselen? |
ikke_ook | woensdag 2 november 2005 @ 22:24 |
quote: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 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  |
Light | woensdag 2 november 2005 @ 22:30 |
quote: 1 2 3 4 | <?php $datum = '14-09-2004 21:46:28'; print preg_replace('/(\d{2})-(\d{2})-(\d{4})/', '\\3-\\2-\\1', $datum); ?> |
Dat levert 2004-09-14 21:46:28 op. |
SuperRembo | woensdag 2 november 2005 @ 22:31 |
Omwisselen van dd-mm-jjjj naar jjjj-mm-dd kan bijvoorbeeld met een regexp:
1 2 | $in = '14-09-2004 21:46:28'; $out = preg_replace('/(\d+)-(\d+)-(\d+)/', '$3-$2-$1', $in); |
|
sh4dow | woensdag 2 november 2005 @ 22:32 |
YAY het werkt:
http://195.241.108.27/scripts/convert/time.php |
sh4dow | woensdag 2 november 2005 @ 22:39 |
Allemaal bedankt voor jullie hulp!
Dit is het uiteindelijke convert script geworden:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php
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()); }
?> |
|
H4ze | donderdag 3 november 2005 @ 21:02 |
Ik heb een pagina "groepsleden". Hier staat een lijst met groepsleden. Wanneer er op een bepaald groepslid wordt geklikt ga je naar de pagina van dat groepslid. Hierna moet de user ook weer snel terug kunnen naar de vorige pagina (groepsleden dus). 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 Heb erop gegoogled, maar kon 'm niet vinden
Iemand? |
Chandler | donderdag 3 november 2005 @ 21:16 |
javascript:history.go(-1);
maar das geen PHP maar wel heel erg simpel  |
Swetsenegger | donderdag 3 november 2005 @ 22:32 |
quote: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  Je kan met mysql de datum ook in elk gewenst formaat zettenmet de DATE_FORMAT functie
1 | SELECT name, DATE_FORMAT(datum,'%d-%m-%Y %H:%i') AS dutch_date FROM tabel |
|
JeRa | vrijdag 4 november 2005 @ 10:34 |
quote: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 ] 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 zijn ook 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. |
Swetsenegger | vrijdag 4 november 2005 @ 11:46 |
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 zijn  ook 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. 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.
Het zal wel. Ik gebruik datetime omdat ik het eenvoudiger vind en er mee kan doen wat ik wil. Als jij de timestamp wil gebruiken. Be my guest  |
H4ze | vrijdag 4 november 2005 @ 12:51 |
quote: Hmm..liever geen javascript.
Maar toch bedankt voor de reply |
P0rt0 | vrijdag 4 november 2005 @ 13:48 |
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  |
JeRa | vrijdag 4 november 2005 @ 13:54 |
quote: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  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  |
JeRa | vrijdag 4 november 2005 @ 13:56 |
quote: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  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 gaan  |
Swetsenegger | vrijdag 4 november 2005 @ 13:56 |
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  Aanvullend, tussen GD versie 1.6 en 2.nogwat is er geen gif support geweest. Op php.net staat welke versies gif support hebben. |
JeRa | vrijdag 4 november 2005 @ 13:59 |
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. Nog meer aanvullend ( ), lange tijd hebben veel hosters geen GIF-support aangezet vanwege patenten en licenties en al dat soort meuk. Sinds een tijdje geldt dat niet meer, maar het zou goed kunnen dat sommige hosters ervoor gekozen hebben dit nog uit te laten staan (of het onbewust nog niet aan hebben gezet). |
Roonaan | vrijdag 4 november 2005 @ 14:24 |
| | V |
P0rt0 | vrijdag 4 november 2005 @ 15:27 |
Om ff verder op in te gaan 
Heb ff stukje uit mijn phpnfo gepaste hier 
1 2 3 4 5 6 7 8 9 10 11 12 13 | gd 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 |
Ik moet eigenlijk wel mijn verhaal compleet maken;
Ik heb eergisteren een heel mooi scriptje geleeched (genethumb.sh) en die maakt alles behalve gif. (bmp doe ik niet aan, dus nooit getest). Echter heb ik het niet bij neer laten zitten, en heb ik toen op hotscripts gezocht naar een dergelijk programma.
Die doet het wel met Gif etc.. alleen is die zo bout gescripts, dat ik perse mijn php.ini op 100mB moest zetten (mem_limit), want anders wou hij bij de 8 mb buffer geen thumbnails creeeren.
Wat ik graag wil weten, is waarin het script die ik persoonlijk vet mooi vind, word geregeld wat wel/niet word gebruikt om thumbs te creeeren.. en ook; Waarom hij geen Gif's pakt.
Hierbij de code van het betreffende script 
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 | #!/bin/sh # 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 |
|
Jimmy | vrijdag 4 november 2005 @ 16:18 |
quote: 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. |
P0rt0 | vrijdag 4 november 2005 @ 16:52 |
EN hoe check ik dat? 
ik weet wel dat "convert plaatje.gif plaat2.jpg" werkt. |
Light | vrijdag 4 november 2005 @ 19:25 |
quote: Gefeliciteerd  |
Roonaan | vrijdag 4 november 2005 @ 21:45 |
tnx  |
ikke_ook | vrijdag 4 november 2005 @ 21:48 |
quote: Dit is geen php... dus ik vraag me af wat je wil doen met je phpinfo()?
Of zie ik iets over het hoofd? |
SkaterSam | zaterdag 5 november 2005 @ 13:59 |
Ik had een vraag, en misschien heb ik het antwoord al, maar ik wilde graag weten hoe jullie hier mee omgaan.
Ik heb een database met 3 tabellen, laat ik ze 1 2 en 3 noemen. Als ik dan een bepaald formulier aanroep waarin informatie voor alle 3 de tabellen staan, dan wil ik dus al die informatie naar hun respectievelijke tabel uploaden (invoegen). Nu gebruik ik altijd een code waarbij stap voor stap de data in de tabellen wordt ingevoegd. Dus eerst 1, dan 2, dan 3. Mijn vraag is nu hoe dat ik kan voorkomen dat ze worden ingevoegd wanneer 1 van de 3 een error geeft, dus dan heb ik bijvoorbeeld 1 en 2 al gedaan, maar is er bij de derde een error. (Ik ga ook even uit van het gebruik van een MyISAM tabel structuur) Hoe kan ik er voor zorgen dat ze alledrie tegelijkertijd worden ingevoegd, maar als een fout geeft een error geven.
Ik weet dat het kan met InnoDB structuur, met ROLLBACK, dat heb ik ook al geprobeerd, maar ik wilde graag weten hoe jullie hier tegen aan kijken. wat het beste is, als je meerdere tabellen wilt invoegen. |
SuperRembo | zaterdag 5 november 2005 @ 14:25 |
Een transaction gebruiken is de enige nette en betrouwbare oplossing. Misschien dat je achteraf zou kunnen controleren of het inserten in alle 3 de tabellen is geslaagd en als dat niet het geval is alle rows deleten die wel ge-insert zijn. Maar dat blijft geknoei. |
Chandler | zondag 6 november 2005 @ 20:27 |
Ik ben bezig met een class voor page pointers oftewel << < 1 2 3 4 5 6 > >> etc maar dan alles geheel aanpasbaar. Echter stuit ik op wat problemen, soms heb ik pointers die kleiner zijn dan 1 neemt af en toe meer pages dan maxpages en tevens stopt ie soms op de verkeerde plaats etc.
Wie wil eens een kijkje nemen om in te zien waar het fout gaat/
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>'; ?> |
|
Roonaan | maandag 7 november 2005 @ 08:29 |
Je gebruikt properties die je niet gedefinieerd hebt  |
Chandler | maandag 7 november 2005 @ 10:56 |
Hoe bedoel je roonaan? ik zie um namelijk niet maar dat zal wel komen omdat ik er de heletijd in zit?  |
Chandler | maandag 7 november 2005 @ 11:03 |
Ik had alleen $_GET['from'] niet gedefenieerd; maar nu heb ik dat even opgelost en heb volgens mij de fout ook al gevonden ipv > heb ik bij de 'pages 12345678etc' nu < gebruikt.
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>'; ?> |
|
Roonaan | maandag 7 november 2005 @ 11:35 |
$this->text, $this->config, etc. |
Darkomen | maandag 7 november 2005 @ 13:34 |
Hoe zou ik kunnen uitrekenen hoelang het is geleden sinds een bepaalde datum? is daar een funcite voor? |
Roonaan | maandag 7 november 2005 @ 14:22 |
omzetten naar timestamps en van elkaar aftrekken? |
Darkomen | maandag 7 november 2005 @ 14:29 |
Dat kan ik nog ;-) maar hoe maak ik daar dan weer dagen van?
Ik heb dus gewoon een couter getelt sinds 05-11-2005 en wil weten hoeveel hits per dag. |
ikke_ook | maandag 7 november 2005 @ 14:31 |
Weet je wat een timestamp voorstelt? Dat zijn het aantal seconden sinds 1 januari 1970. Dus als je die 2 timestamps van elkaar aftrekt heb je het aantal seconden tussen die 2 data. Dus als je dat getal deelt door 86400 (60sec*60min*24uur) dan heb je het aantal dagen tussen die 2 data  |
Darkomen | maandag 7 november 2005 @ 14:33 |
Dat wist ik idd niet, maar dat vergeet ik nu iig niet meer  Maar ik kom uit op 730 dagen terwijl dat 2 zou moeten zijn. Dus ik loop te prutsen
[ Bericht 33% gewijzigd door Darkomen op 07-11-2005 14:40:28 ] |
Darkomen | maandag 7 november 2005 @ 14:54 |
Verkeerde datu, notificatie  |
Darkomen | dinsdag 8 november 2005 @ 16:17 |
Hoe kan je uitzoeken met welke zoektermen je pagina word gevonden zoals bijvoorbeeld netstat ook doet? |
ikke_ook | dinsdag 8 november 2005 @ 16:44 |
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? Ik denk mbv van $_SERVER['HTTP_REFERER'] Stel dat onderstaande url in die variabele staat, bedenk jij dan maar eens waar ik op gezocht heb 
1 | http://www.google.nl/search?hl=nl&q=darkomen&btnG=Google+zoeken&meta= |
Ik neem aan dat je bedoelt met welke zoektermen mensen op jouw site uit zijn gekomen? |
Darkomen | dinsdag 8 november 2005 @ 17:02 |
Dat is ook het enige wat ik kon bedenken. |
Swetsenegger | woensdag 9 november 2005 @ 21:49 |
Kan ik in een javascript een php array zetten?
bv
1 2 3 4 5 6 7 8 9 10 | <script type="text/javascript"> document.write(' <? if ($menu[$i]==1){ $menu[$i]=0; }else{ $menu[$i]=1; } ?> ')</script> |
|
SuperRembo | woensdag 9 november 2005 @ 22:04 |
Het kan wel, maar niet op die manier. Zo wel:
1 2 3 4 | echo '<script type="text/javascript"> echo 'var foo = ["' . implode('","', $foo) . '"]'' echo 'alert(foo.length); echo '</script> |
|
Swetsenegger | woensdag 9 november 2005 @ 22:12 |
quote: Ja dat snap ik dat dat werkt . En uiteraard werkt mijn code niet, want client side gaat geen vars in mijn serverside scripting zetten.
Ok, even de probleem omschrijving dan. Ik heb een boomstructuur menu. Prachtige hierarchische database gebouwd. Menu is dus helemaal vanuit CMS zelf aan te maken.
Het menu bestaat uit maximaal 3 levels bv:
1 2 3 4 5 6 7 8 9 10 11 | hoofditem subitem subsubitem subsubitem subitem hoofditem subitem subsubitem subitem subsubitem subsubitem |
Terwille van de overzichtelijkheid zijn de subsubitems ingeklapt, welke door een javascript zichtbaar worden wanneer je op het plusje klikt naast een subitem welke childeren heeft.
(kijk maar op pandora.edoorebeek.nl)
Maar... het menu wordt uiteraard op elke page geinclude. De plusjes welke ik op de index page heb uitgeklapt. Staan weer ingeklapt op de eerst volgende andere pagina welke ik laad. Ik wil dus simpelweg elke keer als ik op de link klik welke via javascript het menu uitklapt, dat ik een array aanvul, met welk menu item open is.
Die array wil ik op de volgende page weer uitlezen en direkt die menuitems openen.
Hopenlijk is mijn probleem omschrijving duidelijk  |
SuperRembo | woensdag 9 november 2005 @ 22:21 |
Aha op die manier. Is het dan misschien handiger om die informatie in een cookie te zetten? Een cookie is makkelijk te lezen / te schrijven / aan te passen met javascript en met php. |
Swetsenegger | woensdag 9 november 2005 @ 22:25 |
Mjah, ik ben altijd nog al aan het worstelen met javascript cookies en IE (expiration lukt nooit zoals het moet. Werkt altijd wel prima in FF en Opera gek genoeg)
Ik kan natuurlijk ook gewoon in mijn javascript plusjes swap script een array maken en die vervolgens in mijn link echo'en.
Hmz, het is moeilijker dan ik in eerste instantie dacht. |
SuperRembo | woensdag 9 november 2005 @ 22:45 |
Als je het zonder cookies doet, hoe wil je dan de huidige status van de tree overdragen naar de volgende pagina. Je zou ook met XMLHttp de nieuwe status naar de server kunnen sturen en die dan opslaan in de sessie of db.
Als ik het goed heb werkt GoT ook met cookies voor de in/uitklap status. En dat werkt prima  |
Swetsenegger | woensdag 9 november 2005 @ 22:49 |
quote: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. Gewoon in de link
pagina.php?menu=0-3-5
dus alleen de open items in je link meegeven. Alleen heeft javascript geen foreach functie  quote:Als ik het goed heb werkt GoT ook met cookies voor de in/uitklap status. En dat werkt prima  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)
*denkt* nu is expiration niet zo'n groot probleem eigenlijk.
Een javascript cookie kan ik natuurlijk ook met php uitlezen. cookie is cookie toch? Kan een cookie een array bevatten? en zoja. Hoe vul ik die array? Elke keer als ik op een plusje klik (inklappen of uitklappen maakt niet uit) moet ik het cookie bijwerken |
SuperRembo | woensdag 9 november 2005 @ 22:59 |
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.
Javascript heeft wel een for-each hoor 
1 2 3 4 | var fruit = {a:'appel', b:'banaan',c:'citroen'}; for (i in fruit) { alert(i + ': ' + fruit[i]); } |
|
Swetsenegger | woensdag 9 november 2005 @ 23:03 |
quote: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. De link komt uit database, dus is maar 1 regeltje code waar ik de links parse aanpassen  Maar we gaan toch maar voor het cookie
1 2 3 4 5 6 7 8 9 10 | function exchange(id){ if (menu[id]==0){ menu[id]=1; }else{ menu[id]=0; }
// uit dan wel inklappen script
document,cookie="menu="+menu+";expires="+vervaldatum+"; path=/"; |
Dit zou moeten werken toch. Een array in een cookie? -edit- hmz, nee dus cookie wordt wel gezet maar de content is leeg  quote:Javascript heeft wel een for-each hoor  [ code verwijderd ] waarom kom ik in google dan alleemaal zelf geschreven foreach functies tegen voor javascript?
[ Bericht 6% gewijzigd door Swetsenegger op 09-11-2005 23:12:43 ] |
SuperRembo | woensdag 9 november 2005 @ 23:12 |
Een array in een cookie? Gewoon join en split gebruiken.
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. 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. |
Swetsenegger | woensdag 9 november 2005 @ 23:15 |
quote: 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: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. 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] Hoe bedoel je? Ik moet wel weten welke er open staan. Dus ik moet een array zetten. Vervolgens moet ik op de nieuwe pagina voor elk item in mijn array de exchange functie aanroepen. Dan moet ik toch door die array loopen? |
SuperRembo | donderdag 10 november 2005 @ 07:46 |
Het Array object heeft een join method, het String object heeft een split method.
1 2 3 4 5 | var a = [2, 3, 5, 7, 11]; var s = a.join(','); alert(s); var b = s.split(','); alert(b.length); |
IE5 kent geen Array.push() en Array.pop(). Als je die toch wil gebruiken dan kan je die methods toevoegen met Array.prototype.push = function(...){...}. Dat werkt prima. Het lastige is alleen dat als je dan met een for-each door een array loopt, dat je dan ook die push en pop functie als array element tegen komt. Maar als je Array.prototype niet gebruikt dan is er niets aan de hand  |
Desdinova | donderdag 10 november 2005 @ 17:35 |
Waarom werkt dit niet..
Het is de bedoeling dat een geupload file uitgelezen wordt en de data in die file in een database toegevoegd wordt.
De code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <?php $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); ?> |
ik vermoed dat de fout zit bij het $textfile = $_Files gebeuren.. iemand die me kan vertellen hoe t wel moet? De database connectie is goed iig. |
LeeHarveyOswald | donderdag 10 november 2005 @ 17:43 |
Kan ik als ik een pagina include, in de geinclude pagina zien welke pagina dat deed?
Dus bijv.:
Test.php:
1 2 3 4 | <?php php include("test2.php"); ?> |
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? |
ikke_ook | donderdag 10 november 2005 @ 21:25 |
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? 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.
[ Bericht 6% gewijzigd door ikke_ook op 10-11-2005 22:18:54 ] |
H4ze | vrijdag 11 november 2005 @ 01:35 |
Ik ben bezig met een site en ik loop momenteel op iets vast. Ik heb ff een simpel voorbeeldje van m'n probleem gemaakt.
Het bestand "set.php":
1 2 3 4 5 6 7 8 9 10 | <?php session_start(); ?>
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'); ?> |
Hieronder het bestand "print.php" wat ie moet includen:
1 2 3 4 5 6 7 | <?php session_start(); ?>
Dit is het bestand dat geinclude moet worden, en hiernaast moet ook de session geinclude worden
<?php echo $_SESSION['check1']; ?> |
Dat includen werkt wel, maar waarom include ie de sessie niet? Als ik eerst naar de pagina "set.php" browse, en vervolgens zelf naar de pagina "print.php" ga, dan zie ik de sessie wel geprint staan. Betekent dit dat de include-statement niet met Sessies om kan gaan? Of moet ik nog iets toevoegen (of doe ik iets enorm fout )
Hier staan de bestanden trouwens: set.php print.php
Bvd
[ Bericht 5% gewijzigd door H4ze op 11-11-2005 02:36:31 ] |
Roonaan | vrijdag 11 november 2005 @ 09:35 |
Je moet niet includen met "http://"
Doe gewoon include "print.php";
Waar hebben ze je dat geleerd dat je via de url moet includen? |
H4ze | vrijdag 11 november 2005 @ 14:05 |
Ik geloof dat een klasgenoot 't ooit zo aan mij heeft verteld. Maar thnx iig, het werkt nu. |
LeeHarveyOswald | vrijdag 11 november 2005 @ 14:06 |
Vanavond ga ik het proberen danku!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. |
Roonaan | vrijdag 11 november 2005 @ 15:34 |
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. Ah, vertel hem/haar even dat hij zulk "advies" voor zich moet houden en eerst een phpboek moet pakken. |
FuifDuif | zaterdag 12 november 2005 @ 00:11 |
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. |
FuifDuif | zaterdag 12 november 2005 @ 00:16 |
quote: 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:
pagina.php?menu=5
En het pad wordt dan met behulp van een recursieve functie dynamisch opgebouwd. |
Light | zaterdag 12 november 2005 @ 00:34 |
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. 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.
Move_uploaded_file() is een ander geval. Die functie controleert eerst of het bestand dat je wilt verplaatsen wel van de upload afkomstig is, en zal alleen al daarom niet werken met URI's. Overigens kun je alleen bestanden verplaatsen die bij die specifieke aanroep van de pagina zijn geupload. Als je ze niet verplaatst dan worden ze weer verwijderd. |
FuifDuif | zaterdag 12 november 2005 @ 00:38 |
Dat van die allow_url_fopen() wist ik niet. Wel handig om op die manier een soort scriptserver te realiseren om algemene routines aan te bieden aan verschillende applicaties die op verschillende fysiek gescheiden locaties draaien. |
SuperRembo | zaterdag 12 november 2005 @ 00:43 |
quote: 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] |
FuifDuif | zaterdag 12 november 2005 @ 00:47 |
quote: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] Ja, klopt, ik ben inmiddels op de hoogte . Het lijkt mij inderdaad niet aan te raden, tenzij het algemene routines zijn die speciaal op die manier worden aangeboden en ook specifiek met dat doel. Bijvoorbeeld een soort objectserver of iets dergelijks. Maar voor standaard lokaal maatwerk lijkt het mij de voorkeur genieten om gebruik te maken van lokale referenties. |
Light | zaterdag 12 november 2005 @ 00:52 |
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:
1 2 3 | <?php include($_GET['page']); ?> |
Want zo weet je nooit wat voor code je binnenhaalt. |
FuifDuif | zaterdag 12 november 2005 @ 00:59 |
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. 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. |
Light | zaterdag 12 november 2005 @ 01:14 |
Correct, user input kun je niet vertrouwen. Overigens zijn client-side beperkingen altijd te omzeilen, dus daarop kun je nooit vertrouwen. |
SuperRembo | zaterdag 12 november 2005 @ 10:05 |
Zo ken ik een website met miljoenen bezoekers waarbij je via sql-injection willekeurige query's uit kunt voeren  |
Chandler | zaterdag 12 november 2005 @ 11:45 |
ja dat had je reeds medegedeeld echter heb ik um nog steeds niet gehacked  |
Chandler | zaterdag 12 november 2005 @ 11:46 |
zouden ze geld neer leggen? dan delen we de winst  |
kramer65 | zaterdag 12 november 2005 @ 15:59 |
Ik ben nu al meerdere keren met mijn zoekfunctie aan de gang gegaan maar het lukt me maar niet om hem zo te laten werken als ik wil. Echter, het lijkt me dat de oplossing redelijk makkelijk moet zijn. Hopelijk kunnen jullie me helpen.
Ik heb een database met een table genaamd 'lyriczz' waarin oa de fields 'artist' 'feat' en 'title' staan.
Als mensen nu een search doen moet de functie het volgende doen:
--> Zoek elke record waar elk woord in ten minste 1 van die drie fields voorkomen
Ik had het dus zo gedaan: <? $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%') "; } ?>
Maar dat zoekt elke record waar 1 van de woorden in 1 van de fields voorkomen. Daar heb je dus niets aan, want hoe meer woorden je invult, hoe meer resultaten er uitkomen.
Dan dus mijn vraag: hoe zou ik dit moeten doen? |
ikke_ook | zaterdag 12 november 2005 @ 16:27 |
Ik snap niet wat je bedoelt, maar de code die je hierboven neerzet is niet helemaal goed denk ik. Werkt dit beter? :
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%') "; } ?> |
Zoja, laat je code inspringen, dat is veeeel overzichtelijker, en print je query gewoon even op het scherm als hij niet teruggeeft wat je wil, want misschien zit er wel iets fout in je query, en dat kun je dan makkelijker zien.
En als je je code tussen codetags plaatst is het ook wat overzichtelijker voor ons om te lezen Dus zo: [code ]Hier je code[/ code] (En dan zonder spaties) |
kramer65 | zaterdag 12 november 2005 @ 17:18 |
Ok, mijn vraag is als volgt. Deze code werkt wel correct als in: hij brengt wel wat je eigenlijk vraagt aan de database. Maar wat ik wil is het volgend:
Zoek elke record waar elk woord in ten minste 1 van die drie fields voorkomen. Terwijl ie nu alle records op zoekt waar een van de gezochte woorden in een of andere field voorkomt. Hij moet dus preciezer worden. Het is een beetje moeilijk uit te leggen. Ik moet denk ik namelijk helemaal op nieuw beginnen en dit scriptje weggooien.
Als je bijvoorbeeld zoekt op "michael jackson thriller" moet ie het volgende doen:
1 2 3 4 5 | if (michael is found in field 'artist' OR field 'title' OR field 'feat' 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 } |
Dit is natuurlijk helemaal geen code, maar hopelijk maakt het een beetje duidelijk wat ik wil Ik hoop dat je het zo een beetje begrijpt.. zou je er iets op weten? |
ikke_ook | zaterdag 12 november 2005 @ 17:48 |
Zo dan? Nu geeft hij alle rijen terug waar in 1 van de kolommen een van de search_words staat. Dat is niet helemaal wat je hierboven hebt gezegd, maar ik denk wel dat je dit bedoelt. in je eerste post.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $sql = 'SELECT song_id, artist, feat, title FROM `lyriczz` WHERE '; $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%') "; } |
Als ik je 2e post interpreteer krijg je de rij terug waarvan alle 3 de kolommen iets bevatten dat in de searchstring staat.
Ik zou trouwens een zoekpagina maken waarbij men aan kan geven of ze op artist, feat, of op title kunnen zoeken, want als iemand nou een searchstring in typt die uit heel veel woorden bestaat dan zal je een query krijgen die een hoop tijd in beslag gaat nemen (als je database een beetje groot is) |
kramer65 | zaterdag 12 november 2005 @ 17:58 |
Ehm ok bedankt. Maar het is nog steeds niet wat ik bedoel :-(
Wat ik zoek is iets waarbij alle drie de woorden voorkomen. In welk field of hoevaak maakt echter niet uit. Dus als maar 1 of 2 van de woorden worden gevonden dan moet ie het niet als match vinden, slechts als alle drie de woorden worden gevonden. Zo kan de bezoeker gewoon een woord van de artiest en ook een woord van de titel gebruiken om te zoeken.
Zou je weten hoe dit moet? (Sorry, het klinkt misschien een beetje als gezeur, maar zo bedoel ik het niet, ik weet alleen zelf niet zo goed meer wat ik hiermee moet doen) |
ikke_ook | zaterdag 12 november 2005 @ 18:06 |
ok, dus toch zoals ik dacht dat je niet bedoelde  In dat geval is je eerst geval bijna goed, behalve dat je wat haakjes moet gebruiken, daar wordt het niet alleen duidelijker van voor jezelf, maar dan krijg je ook de goede resultaten 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $sql = 'SELECT song_id, artist, feat, title FROM `lyriczz` WHERE '; $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%')) "; } |
Denk ik...Ik durf niet meer zeker te zeggen dat het nou wel goed is  |
ikke_ook | zaterdag 12 november 2005 @ 18:08 |
Alleen bovenstaande zal dus 0 resultaten geven als 1 van de zoekwoorden niet in de database voorkomt. Dus stel dat iemand een lange titel invoert, en bij 1 van de woorden van de titel een typefout maakt, dan geeft je query 0 resultaten maargoed, je kunt niet alles hebben... |
kramer65 | zaterdag 12 november 2005 @ 23:51 |
Dit werkt nu zo'n beetje als in dat ie wel op 1 woord kan zoeken maar dat je een error krijgt als je op meer dan 1 woord zoekt. Als ik bijvoorbeeld op 'michael jackson' zoek krijg ik de volgende error:
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
Zit te zoeken maar begrijp niet wat de fout is.. |
Light | zondag 13 november 2005 @ 00:23 |
En als je vlak voor de query die sql-string gaat printen, wat krijg je dan? |
kramer65 | zondag 13 november 2005 @ 06:21 |
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? |
Roonaan | zondag 13 november 2005 @ 08:39 |
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 |
ikke_ook | zondag 13 november 2005 @ 09:18 |
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 | $sql = 'SELECT song_id, artist, feat, title FROM `lyriczz` WHERE '; $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%')) "; } |
Zo zou het moeten werken (voor de zoveelste keer ) |
JeRa | zondag 13 november 2005 @ 12:58 |
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 Laat de headers eens zien die de webserver naar de browser stuurt en vice versa, na het setten van de cookie? |
Roonaan | zondag 13 november 2005 @ 13:31 |
1 2 3 4 5 6 7 8 9 10 | Date: Sun, 13 Nov 2005 12:31:10 GMT 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 |
|
Chandler | zondag 13 november 2005 @ 14:00 |
Stom vraagje; hoe achterhaal je die cookie gegevens/  |
McMarco | zondag 13 november 2005 @ 14:10 |
quote: Gegevens staan opgeslagen in $_COOKIE["cookienaam"]  |
Roonaan | zondag 13 november 2005 @ 14:12 |
quote: webdeveloper toolbar, show response headers. |
kramer65 | zondag 13 november 2005 @ 14:29 |
@ ikke_ook
Super bedankt!! Hij doet het als een toeter! 
Je kan je niet voorstellen hoe lang ik hieraan heb gezeten |
Light | zondag 13 november 2005 @ 14:40 |
quote: 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. |
Lariekoek | zondag 13 november 2005 @ 22:32 |
Iemand enig idee waarom ik bij de volgende code geen tekst terug krijg?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php 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]"; } ?> |
|
FuifDuif | zondag 13 november 2005 @ 22:46 |
Dat "$a<"
Klopt dat wel, wat is dat voor vage constructie ?
Moet dat niet gewoon zijn:
for ($a = 0; $a < 4; $a++)
? |
Swetsenegger | zondag 13 november 2005 @ 22:47 |
quote: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++) ? bug in de php tag  |