abonnement Unibet Coolblue Bitvavo
pi_55929617
-Nevermind-.
pi_55930569
quote:
Op donderdag 10 januari 2008 14:34 schreef Tarabass het volgende:

[..]

Het gaat niet om een autocomplete maar om een zoek-functie. Als je dus zoekt op 7 wil ik alle leeftijden met een 7 erin hebben. Waarom? Eigenlijk gewoon daarom :)

Dus om dit te bewerkstelligen wil ik een like-manier hebben, maar dan voor een integer..
Ok, je wil dus gewoon zoeken alsof het tekst is. Een regexp is nergens voor nodig (is alleen langzamer), een LIKE is wat je nodig hebt. Als je het echt netjes wil doen, dan converteer je de INT kolom eerst naar VARCHAR voordat je de LIKE vergelijking gebruikt:

1... WHERE Cast(age AS VARCHAR) LIKE '%2%'


(Zie http://dev.mysql.com/doc/refman/5.1/en/cast-functions.html)
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_55930731
quote:
Op donderdag 10 januari 2008 14:23 schreef Dzy het volgende:

Helaas kun je het dus niet zo oplossen als je ook wilt dat je 51 kunt vinden met een 1.
Volgens mij moet je een heel eind kunnen komen met
1SELECT * FROM users WHERE age MOD 10 = 1
  donderdag 10 januari 2008 @ 19:01:58 #184
62215 qu63
..de tijd drinkt..
pi_55930846
quote:
Op donderdag 10 januari 2008 18:58 schreef Light het volgende:

[..]

Volgens mij moet je een heel eind kunnen komen met
[ code verwijderd ]
waar staat de MOD 10 voor?
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_55931032
quote:
Op donderdag 10 januari 2008 19:01 schreef qu63 het volgende:

[..]

waar staat de MOD 10 voor?
Modulo 10. Ofwel delen door 10 en als antwoord de rest teruggeven.

Als voorbeeld: 27 MOD 10 = 7
pi_55931036
quote:
Op donderdag 10 januari 2008 19:01 schreef qu63 het volgende:

[..]

waar staat de MOD 10 voor?
Zie: http://dev.mysql.com/doc/(...)ns.html#function_mod

Oftewel: de modulo operator, geeft de rest terug na een deling.

20 / 7 = 2
20 MOD 7 = 6
pi_55931189
Er zit (uiteraard) ook een modulo-operator in PHP. Daar gebruik je dan %

1
2
3
4
<?php
echo floor(20 7); // 2
echo 20 7// 6
?>
pi_55931322
quote:
Op donderdag 10 januari 2008 18:58 schreef Light het volgende:

[..]

Volgens mij moet je een heel eind kunnen komen met
[ code verwijderd ]
Zo kun je het inderdaad ook aanpakken, nog wel een mooiere oplossing dan die van mij. Wist niet dat dat in MySQL kon Weer wat geleerd.

Heeft iemand hier ervaring met CakePHP? Ik heb me door de manual heen geworsteld maar ik denk dat ik nog wel wat vraagjes ga hebben nu ik ga beginnen met een nieuw projectje.

EDIT: Je moet uiteraard in die query ook nog gewoon de between en de waarde zelf meenemen.
"Reality is an illusion created by a lack of alcohol."
pi_55931341
quote:
Op donderdag 10 januari 2008 18:58 schreef Light het volgende:
[..]
Volgens mij moet je een heel eind kunnen komen met
[ code verwijderd ]
Met alleen MOD 10 ben je er niet, en het is onnodig ingewikkeld.
quote:
Op donderdag 10 januari 2008 19:18 schreef Dzy het volgende:
Zo kun je het inderdaad ook aanpakken, nog wel een mooiere oplossing dan die van mij.
Waarom zou je zo ingewikkeld doen? Vergeet ook niet dat je input uit een textbox komt. En het moet natuurlijk ook resultaat geven als je een getal van 2 cijfers invoert... daar ga je dan met je modulo 10.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_55931521
quote:
Op donderdag 10 januari 2008 19:19 schreef SuperRembo het volgende:

[..]

Met alleen MOD 10 ben je er niet, en het is onnodig ingewikkeld.
Ik reageerde op een deel van een post, namelijk dat het niet mogelijk zou zijn om alles te pakken met een bepaald eindcijfer. Daarvoor heb je genoeg aan een MOD 10.
Om de hele vraag te beantwoorden heb je meer nodig, da's waar. Maar dat is al meerdere keren voorbij gekomen, dus dat stuk sloeg ik over
pi_55931671
quote:
Op donderdag 10 januari 2008 19:19 schreef SuperRembo het volgende:

[..]

Waarom zou je zo ingewikkeld doen? Vergeet ook niet dat je input uit een textbox komt. En het moet natuurlijk ook resultaat geven als je een getal van 2 cijfers invoert... daar ga je dan met je modulo 10.
Je hebt gelijk, misschien is mijn oplossing toch wel beter Maar met dat typecasten, ik denk dat het een stuk sneller gaat als je het gewoon op mijn manier doet, omdat MySQL dan van elke rij de age column moet gaan omzetten terwijl je het op mijn manier maar een paar instructies in php kost en MySQL gewoon kan doen waar het goed in is.
"Reality is an illusion created by a lack of alcohol."
pi_55931886
quote:
Op donderdag 10 januari 2008 14:58 schreef Dzy het volgende:
Je kunt natuurlijk ook je PHP scriptje een set laten maken en daar een mooie query door uit laten poepen. Nog steeds voelt het wat ranzig aan maarja, niet heel veel aan te doen. Stel dat de leeftijd maximaal 100 is, kun je bijvoorbeeld bij een 2 invullen zo'n query laten maken:
[ code verwijderd ]

Dan krijg je alsnog alle goede leeftijden terug en gebruik je geen ranzige LIKE operators die bedoeld zijn voor strings. De php code om zo'n query te maken is ook niet zo moeilijk.
1SELECT * FROM users WHERE (age = 2) OR (age BETWEEN 20 AND 29) OR (age IN (12,22,32,42,52,62,72,82,92))


Om zo'n query te laten schrijven is dus geen moeilijk php scriptje nodig, zoiets bijvoorbeeld:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?
$query = "SELECT * FROM users WHERE (age = ".$age.")";
if ($age<10)
{
  $query .= " OR (age BETWEEN " . $age*10 . " AND ". $age *10+9 . ") OR (age IN ("
  for ($i=1;$i<10;$i++)
    {
    if ($i<>1) $query .= ",";
    $query .= 10*$i+$age;
    }
  $query .= "))";
}
$result = mysql_query($query);
"Reality is an illusion created by a lack of alcohol."
pi_55931919
Dat kan denk ik netter met een range(0,10) die je met implode tot een string samenvoegt.

1
2
3
<?php
implode
(',' range($age$age10) )
?>


geef:

119,29,39,49,59,69,79,89,99
pi_55931947
quote:
Op donderdag 10 januari 2008 17:35 schreef PiRANiA het volgende:

[..]

wat bedoel je?
Zo zou het eruit moeten zien: "./files/images/smiles/icon_smile.gif"

Met wat ik geprobeerd heb ziet het er als volgt uit (als ik de paginabron bekijk):
"$dir_smiles/icon_smile.gif"
"$dir_smiles./icon_smile.gif"
"<?=$dir_smiles;?>/icon_smile.gif"
pi_55932074
quote:
Op donderdag 10 januari 2008 19:39 schreef Geqxon het volgende:
Dat kan denk ik netter met een range(0,10) die je met implode tot een string samenvoegt.
Heh. Dat is inderdaad mooier. Dit ga ik vaak gebruiken denk ik Ik kende de range function niet, en gebruik toch wel redelijk vaak set queries.
"Reality is an illusion created by a lack of alcohol."
pi_55932147
quote:
Op donderdag 10 januari 2008 19:44 schreef Dzy het volgende:

[..]

Heh. Dat is inderdaad mooier. Dit ga ik vaak gebruiken denk ik :P Ik kende de range function niet, en gebruik toch wel redelijk vaak set queries.
Range is best een handige functie als je een array met nummertjes wilt hebben. Ik gebruik het wel eens als ik bijvoorbeeld een pull-down menutje met alle weeknummers wil genereren, dan is dat best wel makkelijk. :)

1
2
3
4
5
<?php
foreach (range(1,52) as $weeknumber){

}
?>


Overigens is de derde parameter van de functie range wel enkel voor php 5.0.0 en hoger.
pi_55932186
quote:
Op donderdag 10 januari 2008 17:30 schreef BugWorks het volgende:
Beste allemaal,

Ik ben bezig met een gastenboek te maken, dit werkt allemaal prima. Nu wilde ik daar als toevoeging smilies aan toe voegen, ook dit werkt prima.

Nu geef ik van iedere smilie de locatie map aan, dit wil ik verkorten door het gebruik van een variabele.

Even een voorbeeld hoe het nu is:
[ code verwijderd ]

Wat ik dus graag zou willen wijzigen is "./files/images/smiles" vervangen door een variabele ($dir_smiles). Dit wil me dus niet lukken aangezien de wijzingen overgenomen als zijnde tekst.

Wie kan en wil me hiermee helpen. Alvast bedankt
1
2
3
4
<?php
    $path 
"./files/images/smiles/";
    
$text str_replace(':)','<img src="'.$path.'icon_smile.gif" border="0" alt="" />',$text);
?>


Bedoel je dit? Mooier is natuurlijk zelf een functie te schrijven die de parameter-input (de ':)') omzet naar de image-tag en dat weer returned. En de border met css meegeven..
pi_55932292
quote:
Op donderdag 10 januari 2008 19:48 schreef Geqxon het volgende:

[..]

Range is best een handige functie als je een array met nummertjes wilt hebben. Ik gebruik het wel eens als ik bijvoorbeeld een pull-down menutje met alle weeknummers wil genereren, dan is dat best wel makkelijk.
[ code verwijderd ]

Overigens is de derde parameter van de functie range wel enkel voor php 5.0.0 en hoger.
Dit deed ik altijd met een for-loopje. Dit is inderdaad mooier

Zitten trouwens leuke functies tussen hierboven. Morgen maar eens proberen allemaal
pi_55932470
quote:
Op donderdag 10 januari 2008 19:49 schreef Tarabass het volgende:

[..]
[ code verwijderd ]

Bedoel je dit? Mooier is natuurlijk zelf een functie te schrijven die de parameter-input (de ':)') omzet naar de image-tag en dat weer returned. En de border met css meegeven..
Datgene wat jij gepost heb lijkt hier niet te werken, helaas. Heeft namelijk hetzelfde effect als wat ik geprobeerd heb.
(edit)
Afbeelding niet zichtbaar, maar in de broncode is alleen het volgende te zien "/icon_smile.gif".

Overigens worden de ':)' codes omgezet middels een functie, leek me niet relevant om die te posten vandaar alleen die ene regel.
pi_55932636
quote:
Op donderdag 10 januari 2008 20:00 schreef BugWorks het volgende:

[..]

Datgene wat jij gepost heb lijkt hier niet te werken, helaas. Heeft namelijk hetzelfde effect als wat ik geprobeerd heb.
(edit)
Afbeelding niet zichtbaar, maar in de broncode is alleen het volgende te zien "/icon_smile.gif".

Overigens worden de ':)' codes omgezet middels een functie, leek me niet relevant om die te posten vandaar alleen die ene regel.
Dan heb je een '/' teveel, waarschijnlijk heb je die nog voor 'icon_smile.gif' staan en die moet je dan even weghalen..

Dit doet het namelijk perfect, dus zou het ergens anders in moeten zitten:
1
2
3
4
5
<?php
    $text 
':)';
    
$path "./files/images/smiles/";
    echo 
$text str_replace(':)','[img src="'.$path.'icon_smile.gif" border="0" alt="" /]',$text);
?>


[ Bericht 25% gewijzigd door Tarabass op 10-01-2008 20:28:41 ]
pi_55934614
quote:
Op donderdag 10 januari 2008 15:58 schreef WyriHaximus het volgende:

[..]

Wat ik eerder ook al voor wobbel ze GF suggereerde is de P2P serie van Wrox erg goed om eens naar te kijken .
ok maar ik zag dat er een beginners en een pro versie is van dit boek. bij het pro boek want zo zag ik mezelf tot nu toe staat dat het verder gaat op de oo inleiding van het beginners boek. aangezien ik nog echt niks weet van oo wil ik geen stappen over slaan. ik vind het denk ik een beetje zonde om het beginners boek te kopen terwijl ik al veel weet..
Amsterdam, stad van hash en coke,
Waar de vrouwen zich vrouwelijk gedragen..
En de mannen ook..
pi_55935565
Kijk het boek eens in in de betere boekhandel, dan kun je kijken hoe ver dat gaat. Overigens heb ik mezelf alles qua programmeren aangeleerd via tutorials en uitproberen. Behalve Turbo Pascal (5.5), dat leerde ik van m'n vader long, long time ago
"Reality is an illusion created by a lack of alcohol."
  donderdag 10 januari 2008 @ 22:07:01 #203
136730 PiRANiA
All thinking men are atheists.
pi_55936035
[TEL *HIER* AF] Unix Timestamp verjaardag!
de timestamp is bijna bij de 120 miljoen
  donderdag 10 januari 2008 @ 22:29:08 #204
62215 qu63
..de tijd drinkt..
pi_55936827
quote:
Op donderdag 10 januari 2008 22:07 schreef PiRANiA het volgende:
[TEL *HIER* AF] Unix Timestamp verjaardag!
de timestamp is bijna bij de 120 miljoen
das wel heel erg nerderig
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_55938932
quote:
Op donderdag 10 januari 2008 22:07 schreef PiRANiA het volgende:
[TEL *HIER* AF] Unix Timestamp verjaardag!
de timestamp is bijna bij de 120 miljoen
Tel eens opnieuw
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  vrijdag 11 januari 2008 @ 08:03:06 #206
136730 PiRANiA
All thinking men are atheists.
pi_55942887
quote:
Op donderdag 10 januari 2008 23:36 schreef SuperRembo het volgende:

[..]

Tel eens opnieuw
pi_55943259
quote:
Op vrijdag 11 januari 2008 08:03 schreef PiRANiA het volgende:

[..]

The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_55948725
quote:
Op vrijdag 11 januari 2008 08:03 schreef PiRANiA het volgende:

[..]

De 120 miljoen timestamp was lang geleden...
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  vrijdag 11 januari 2008 @ 13:16:24 #209
136730 PiRANiA
All thinking men are atheists.
pi_55949038
zit ik er een nul naast?:P
pi_55949489
quote:
Op vrijdag 11 januari 2008 13:16 schreef PiRANiA het volgende:
zit ik er een nul naast?:P
pi_55953876
hallo.
ik wil zelf een klein systeempje schrijven om de inhoud van pagina's te beheren. maar heeft de inhoud van een mysql row een maximale waarde aan tekens? Stel dat ik 2500 tekens erin wil, kan dat dan? Of wat is de max?
heb gezocht en kwam op mediumtext uit, is die slim?
pi_55954135
quote:
Op vrijdag 11 januari 2008 16:20 schreef Flaccid het volgende:
hallo.
ik wil zelf een klein systeempje schrijven om de inhoud van pagina's te beheren. maar heeft de inhoud van een mysql row een maximale waarde aan tekens? Stel dat ik 2500 tekens erin wil, kan dat dan? Of wat is de max?
De max is in principe het datatype dat je in mysql gebruikt voor elke kolom. Als die 2500 tekens kan bevatten dan is het dus geen probleem.
pi_55954217
De maximale inhoud van een cel hangt af van het datatype dat die cel heeft. Is 't een VARCHAR(50), dan kun je er maar 50 tekens in kwijt. Beetje inschatten wat je wilt hebben en wat er beschikbaar is.

Een MEDIUMTEXT kan 16 miljoen tekens bevatten, is wellicht wat overkill. Je kunt ook voor een TEXT gaan (65000 tekens).
pi_55954991
CSS vraagje Denk dat die ook wel hier kan?

Hoe een DIV layer laten zweven? Dus bij wijze van spreken de banner hier rechts van fok ALTIJD rechts in beeld houden op een vaste positie - ook als je het topic door scrolled?

hopen dat Danny niet meeleest
pi_55955111
quote:
Op vrijdag 11 januari 2008 17:07 schreef LeeHarveyOswald het volgende:
CSS vraagje Denk dat die ook wel hier kan?

Hoe een DIV layer laten zweven? Dus bij wijze van spreken de banner hier rechts van fok ALTIJD rechts in beeld houden op een vaste positie - ook als je het topic door scrolled?

hopen dat Danny niet meeleest
Iets zegt mij dat dat ook met Javascript gedaan is.
pi_55955165
quote:
Op vrijdag 11 januari 2008 17:12 schreef Geqxon het volgende:

[..]

Iets zegt mij dat dat ook met Javascript gedaan is.
Die hiernaast doet niet wat ik wil

Ik wil die hiernaast, maar dan zwevend
pi_55955319
In CSS een position:fixed opgeven. Werk alleen in moderne browsers.
pi_55955364
quote:
Op vrijdag 11 januari 2008 17:23 schreef HuHu het volgende:
In CSS een position:fixed opgeven. Werk alleen in moderne browsers.
Al las ik hier wel wat over IE6 support:
http://www.howtocreate.co.uk/fixedPosition.html
pi_55955823
quote:
Op vrijdag 11 januari 2008 17:23 schreef HuHu het volgende:
In CSS een position:fixed opgeven. Werk alleen in moderne browsers.
zo simpel

Dat had ik zelf ook nog wel kunnen bedenken

Dat het niet altijd werkt is niet van levensbelang Als het bij het gros van de users maar goed gaat

Dank
pi_55957802
Hmm waar ik alleen tegenop loop is dat mn hele layout compleet verneukt is in IE. Niet alleen die banner dinges, maar echt ALLES.

www.boeroendoek.nl gaat het om
pi_55958185
ja, die is best verneukt
pi_55959017
Volgens mij heeft de link van Geqxon ook volledig met dit probleem te maken

(althans, die gaat er over, veroorzaakt het niet ).
pi_55960259
Hoe kan je het beste een BBCODE dingetje maken? Zijn die dingen er kant en klaar?
pi_55960453
quote:
Op vrijdag 11 januari 2008 21:23 schreef Flaccid het volgende:
Hoe kan je het beste een BBCODE dingetje maken? Zijn die dingen er kant en klaar?
Ja, en anders zijn er vrij simpele "replace" codes. Dit is wat ik gebruik om in een chat bericht te filteren op 'codes' die ik wil replacen met een emoticon ( dus : ) met :) vervangen, zeg maar):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
        
// Laden van lijst met emoticons. Deze lijst direct toepassen!

        
$sql "SELECT * FROM Emotibase";

        
$query mysql_query($sql) or die(mysql_error());

        while (
$result mysql_fetch_array($query)) {

        
$emotitext $result['EmoticonText'];
        
$emotihtml $result['EmoticonHTML'];

        
$bericht str_replace ($emotitext$emotihtml$bericht);
   }
?>


Dit kan je dus ook doen door in de database jou 'bbcode' te zetten :)

Mijn bug lijkt te zitten in:
1
2
3
4
#container {
width: 600px;
margin: 1 auto;
}


Is dat mogelijk? In IE word volgens mij de hele container gewoon naar links geduwd...
(www.boeroendoek.nl nogsteeds. Mooi in FF, gaar in IE...)
pi_55961304
quote:
Op vrijdag 11 januari 2008 21:33 schreef LeeHarveyOswald het volgende:

[..]

Ja, en anders zijn er vrij simpele "replace" codes. Dit is wat ik gebruik om in een chat bericht te filteren op 'codes' die ik wil replacen met een emoticon ( dus : ) met vervangen, zeg maar):
[ code verwijderd ]

Dit kan je dus ook doen door in de database jou 'bbcode' te zetten

Mijn bug lijkt te zitten in:
[ code verwijderd ]

Is dat mogelijk? In IE word volgens mij de hele container gewoon naar links geduwd...
(www.boeroendoek.nl nogsteeds. Mooi in FF, gaar in IE...)
Hoe ziet die database eruit precies?
(sql)

Op jouw probleem: Wazig. Mss wat klooien met het defineren van de width van de body, 100%?

Ik zit ff met een ander dingetje ondertussen:
ik heb een form waarin je een post maakt, met 3 knoppen : Submit (gaat naar createpost.php) Reset (spreekt voor zich) en Preview. Bij preview wil ik dat hij het form submit in een popup met een andere action dan het form eigenlijk is. Hoe kan ik dat voor elkaar krijgen. het lukt me wel om createpost.php in het popupje te krijgen, maar niet preview.php erin.

code:
1
2
3
4
5
6
7
8
<SCRIPT>
function openTarget (form, features, windowName) {
  if (!windowName)
    windowName = 'formTarget' + (new Date().getTime());
  form.target = windowName;
  open ('', windowName, features);
}
</SCRIPT>


Hoe ik hem aanroep
1<input name="preview" value="Preview" class="submit" type="submit" onClick="openTarget(this, 'width=700,height=600,resizable=1,scrollbars=1'); return true;" target="newpopup" />
pi_55961408
Database heeft enkel een veld EmoticonText (Prim key) en EmoticonHTML.

In jou geval zou je daar dus BB en HTML voor kunnen gebruiken
pi_55961641
Ik zit te denken om een stukje browser detectie er in te gooien, en indien IE te beginnen met <p align = center> en te eindigen met </p>....

margin: 1 auto; >>> dat lijkt het stuk waar hij op botst!
pi_55961697
quote:
Op vrijdag 11 januari 2008 22:16 schreef LeeHarveyOswald het volgende:
Database heeft enkel een veld EmoticonText (Prim key) en EmoticonHTML.

In jou geval zou je daar dus BB en HTML voor kunnen gebruiken
dan staat er dus in jouw geval:
1:P     -  <img src='tongue.gif'>


hoe ging dat ookalweer met een newline in een text area?

Weet iemand hoe ik slim zon submit + preview kan maken?

Het is javascript maar whatever: Hoe kan ik net als google doet tijdens het schrijven van een mail als je hem wegklikt: Wilt u op de pagina blijven of doorgaan? Hoe doe ik dat met een submit: Wilt u submitten of nog even wachten ofzo?

[ Bericht 7% gewijzigd door Flaccid op 11-01-2008 22:34:38 ]
pi_55963409
Ik heb echt álles geprobeerd, maar zelfs als ik het hele PHP document leeg laat, alleen <div id="container"> er in zet, met daarin een tekstje, gaat IE over de kop en FF doet alles goed.

Wat wel weer staaft dat het aan
1
2
3
4
#container {
width: 600px;
margin: 1 auto;
}


ligt, maar ik los er alleen niets mee op :')
pi_55963740
quote:
Op vrijdag 11 januari 2008 22:25 schreef LeeHarveyOswald het volgende:

margin: 1 auto; >>> dat lijkt het stuk waar hij op botst!
Je kunt het beste altijd een eenheid vermelden, dus 1px of 1em ipv alleen 1. Alleen bij 0 is de eenheid niet noodzakelijk, maar ook daar kan het geen kwaad.
pi_55963798
Heb er 0 van gemaakt op 'aanraden' van css validator.
pi_55963934
quote:
Op vrijdag 11 januari 2008 22:28 schreef Flaccid het volgende:

[..]

dan staat er dus in jouw geval:
[ code verwijderd ]

hoe ging dat ookalweer met een newline in een text area?
nl2br() ?
pi_55964486
quote:
Op vrijdag 11 januari 2008 23:55 schreef LeeHarveyOswald het volgende:
Heb er 0 van gemaakt op 'aanraden' van css validator.
werkt dat dan wel?
pi_55964539
quote:
Op zaterdag 12 januari 2008 00:29 schreef Flaccid het volgende:

[..]

werkt dat dan wel?
pi_55968099
@LeeHarveyOswald

Stuur mij de html en css eens via pm, dan knap ik het even op voor je als je dat wilt. Moet geen probleem zijn lijkt me..
pi_55968423
Ik heb een dilemma

Ik heb ooit eens een CSV-import functie geschreven en op zich werkt die prima. Door middel van een unieke index in mijn tabel zorg ik er met INSERT IGNORE INTO / REPLACE INTO voor dat er geen dubbele records in mijn database komen.

Als gevolg daarvan worden er dus records geweigerd. Omdat ik eerst alle data verzamel in 1 grote query die ik in 1x insert weet ik achteraf alleen hoeveel records er zijn geweigerd, maar niet wélke. Om erachter te komen welke records het zijn zou ik ze 1 voor 1 moeten inserten, en dan de mislukte verzamelen in een array. Maar dat levert nogal veel queries op als je een beetje een flink bestand hebt...

Wat zijn jullie ideeën hierover? Staat het uitvoeren van 30.000 queries ipv 1 in verhouding tot de extra informatie die het oplevert?
pi_55968841
quote:
Op zaterdag 12 januari 2008 10:31 schreef Xcalibur het volgende:
Ik heb een dilemma :)

Ik heb ooit eens een CSV-import functie geschreven en op zich werkt die prima. Door middel van een unieke index in mijn tabel zorg ik er met INSERT IGNORE INTO / REPLACE INTO voor dat er geen dubbele records in mijn database komen.

Als gevolg daarvan worden er dus records geweigerd. Omdat ik eerst alle data verzamel in 1 grote query die ik in 1x insert weet ik achteraf alleen hoeveel records er zijn geweigerd, maar niet wélke. Om erachter te komen welke records het zijn zou ik ze 1 voor 1 moeten inserten, en dan de mislukte verzamelen in een array. Maar dat levert nogal veel queries op als je een beetje een flink bestand hebt...

Wat zijn jullie ideeën hierover? Staat het uitvoeren van 30.000 queries ipv 1 in verhouding tot de extra informatie die het oplevert? :)
Een manier om zowel de performance te houden van een grote batch queries als het kunnen achterhalen is het zetten van een flag (of een timestamp) op je duplicaat tabelrow. Je zou bijvoorbeeld zoiets kunnen doen als :
1
2
3
4
5
6
7
8
// Breidt VALUES uit voor je gehele insert
INSERT INTO csv (field, value) VALUES (?, ?) ON DUPLICATE KEY UPDATE duplicate_inserted = 1;

// Haal alle duplicaten op
SELECT c.field  FROM csv c WHERE c.duplicate_inserted = 1;

// Reset alle duplicaten weer
UPDATE csv SET duplicate_insert = 0;

Niet supernetjes en het werkt alleen onder MySQL, maar 't doet (als 't goed is) z'n werk :) .
pi_55970783
quote:
Op zaterdag 12 januari 2008 09:50 schreef Tarabass het volgende:
@LeeHarveyOswald

Stuur mij de html en css eens via pm, dan knap ik het even op voor je als je dat wilt. Moet geen probleem zijn lijkt me..
Done
pi_55975868
quote:
Op zaterdag 12 januari 2008 12:49 schreef LeeHarveyOswald het volgende:

[..]

Done
Check je inbox
pi_55978442
quote:
Op zaterdag 12 januari 2008 16:57 schreef Tarabass het volgende:

[..]

Check je inbox
Je bent helemaal geweldig!!!!!!!
pi_55978939
quote:
Op zaterdag 12 januari 2008 19:00 schreef LeeHarveyOswald het volgende:

[..]

Je bent helemaal geweldig!!!!!!!
Let op, want hij is nu niet meer goed in firefox. Wees voorzichtig met veranderingen en probeer in verschillende browsers hoe het er uit ziet. Let ook op dat f5 drukken soms niet de css vernieuwd, doe dat dus met ctrl-f5

En graag gedaan natuurlijk..
pi_55979406
Hier (ook firefox) issie wel goed?
pi_55979547
quote:
Op zaterdag 12 januari 2008 19:41 schreef LeeHarveyOswald het volgende:
Hier (ook firefox) issie wel goed?
Ja, hier is 'ie nu ook weer goed. Ik had trouwens de <p>-tags gecommentariseerd maar als je in css de p-tag een margin van 0 meegeeft moet het wel goed gaan in beide browsers. Margin wordt standaard in verschillende browsers per tag in verschillende afstanden weergegeven wat de site lelijk kan maken. Door de margin zelf in te stellen voorkom je dat en is de margin overal hetzelfde. Succes verder met je site!
pi_55980096
Om mijn layout te maken heb ik hetvolgende 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
<?php
class HTML{
    
    
private $title;
    
private $content;
    
private $disable_menu;
    
    
public function HTML($title ''$disable_menu false){
    }
    
    
public function addHTML($html){
        
$this->content .= $html;
    }
    
    
public function addHeader($text$level 2){
        
// voeg een header (h1 tot h7) aan de pagina toe
    
}
    
    
public function addParagraph($text$class ""){
        
// voeg een paragraaf aan de pagina toe
    
}
    
    
public function addAnchor($name){
        
// voeg een <a name="$name"> aan de pagina toe
    
}
        
    
private function getMenu(){
        
// returned op basis van de ingelogde user een menu
    
}
    
    
public function getContent(){
        return 
$this->content;
    }
    
    
public function getOutput(){
        
$header "<!DOCT ...... ";
        
$footer ".....</html>";

        return 
$header $this->getMenu() . $this->getContent() . $footer;
    }
}
?>


Het aanmaken van een pagina gaat nu als volgt:

1
2
3
4
5
6
7
8
9
10
<?php
    $template 
= new HTML("Logfile");
    
$template->addHeader("Recent activity",2);
    
$template->addParagraph("In the .... place:");

    [...]

    
$template->addHTML($log_table);
    echo 
$template->getOutput();
?>


Mijn vragen:
  • Maak ik nu correct gebruik van OO in PHP?
  • Is dit een fatsoenlijke manier om een template systeem op te zetten?
  •   zaterdag 12 januari 2008 @ 21:09:54 #245
    85514 ralfie
    !Yvan eht nioj
    pi_55981932
    OO in php is voornamelijk om het de scripters zelf makkelijk te maken. Dus of het correct gebruik van OO is, hangt ervan af of jij of je gebruikers het zelf makkelijk te gebruiken vind/-en

    wat jij hebt gemaakt lijkt me niet echt een template systeem (ik versta daar onder een html achtige file die ingeladen wordt door het template object, waarna je een zooi variabelen in datzelfde object gooit en dan $object->parse() doet om de output te verkrijgen.). Ik krijg de indruk dat jouw code meer een verzameling functies is die html uitpoept? Ik kan het mis hebben en zelf het verschil niet helemaal zien, ik vind het moeilijk om uit te leggen
    pi_55982189
    Juist, maar ik was even bang dat ik de syntax verkeerd had. Ik heb hier ooit eens een OO stukje code gezet, maar toen werd hij verteld dat dat achterhaald was en het tegenwoordig met PHP 5.0 mooier kan. :)

    En ja, wat dit doet is een object aanmaken, daar gooi ik wat gegevens naartoe (html-headers, paragrafen, tabellen), en als ik getOutput() uitvoer krijg ik een string met HTML. Hij laad inderdaad geen externe template in, aangezien dat voor mij onnodig is. Mijn opmaak en HTML zijn toch gescheiden, een voorbeeld van bovenstaande logfile pagina:

    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
    <!DOCTYPE [...]>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl">
       <head>
          <title>Portfolio - Logfile</title>
          <link rel="stylesheet" type="text/css" href="include/stylesheet.css" />
          <script type="text/javascript" src="include/javascript.js"></script>
       </head>
       <body>
          <h1>Mijn portfolio</h1>
          
          <ul class="menu">
             [...]
             <li><a href="logfile.php">Logfile</a></li>
             [...]   
          </ul>            
                
          <h2>Recent activity</h2>
        
          <p>In the [...] place:</p>
          
          <table>
          [...]
          </table>
        
          <p class="footer">© 2008</p>
       </body>
    </html>      


    Om daar nou een template voor te parsen. :P
      zaterdag 12 januari 2008 @ 22:03:25 #247
    85514 ralfie
    !Yvan eht nioj
    pi_55983487
    Ja, ok, daar heb je gelijk in

    wat syntax betreft, geen idee, dat is voor mij meestal gwn proberen, ik gebruik persoonlijk niet zoveel OO

    php5 heeft wel wat geile OO functies en regeltjes erbij gekregen, maar geen waarvan ik denk dat jij er voor een gebruik als dit iets aan zal hebben.
    pi_55983745
    quote:
    Op zaterdag 12 januari 2008 20:06 schreef Geqxon het volgende:
    Om mijn layout te maken heb ik hetvolgende geschreven:
    [ code verwijderd ]

    Het aanmaken van een pagina gaat nu als volgt:
    [ code verwijderd ]

    Mijn vragen:
  • Maak ik nu correct gebruik van OO in PHP?
  • Is dit een fatsoenlijke manier om een template systeem op te zetten?
  • Ik begrijp je functies niet, bijv "addParagraph", waar voegt ie dan een paragraaf toe? Aan het einde? Aan het begin? Ergens in het midden? Lijkt me weinig flexibel, hoe dan ook.

    En een header, dat is voor mij meestal een http header (bijv "Content-type: text/html"), de doctype is gewoon deel van de html.

    Ik heb het idee dat je het jezelf moeilijker maakt dan noodzakelijk, waarom niet gewoon een template gebruiken die je inlaadt? Hier loop je jezelf alleen maar te beperken. Object georienteerd programmeren is niet iets dat "moet" maar het is iets dat je leven als programmeur makkelijker maakt en zorgt voor duidelijke structuur die je later ook makkelijk kan hergebruiken. De structuur die je hier hebt is veel te specifiek en te beperkt - misschien bruikbaar voor die ene applicatie maar voor een andere mag je het weer opnieuw doen. Dat is zonde.
    pi_55984010
    quote:
    Op zaterdag 12 januari 2008 22:12 schreef Farenji het volgende:

    [..]

    Ik begrijp je functies niet, bijv "addParagraph", waar voegt ie dan een paragraaf toe? Aan het einde? Aan het begin? Ergens in het midden? Lijkt me weinig flexibel, hoe dan ook.

    En een header, dat is voor mij meestal een http header (bijv "Content-type: text/html"), de doctype is gewoon deel van de html.

    Ik heb het idee dat je het jezelf moeilijker maakt dan noodzakelijk, waarom niet gewoon een template gebruiken die je inlaadt? Hier loop je jezelf alleen maar te beperken. Object georienteerd programmeren is niet iets dat "moet" maar het is iets dat je leven als programmeur makkelijker maakt en zorgt voor duidelijke structuur die je later ook makkelijk kan hergebruiken. De structuur die je hier hebt is veel te specifiek en te beperkt - misschien bruikbaar voor die ene applicatie maar voor een andere mag je het weer opnieuw doen. Dat is zonde.
    Bedankt, hier heb ik wat aan.

    De opmaak gaat via CSS, dus een template inladen is hier niet nodig.

    [ Bericht 4% gewijzigd door Geqxon op 12-01-2008 22:29:52 ]
    pi_55984070
    quote:
    Op zaterdag 12 januari 2008 11:06 schreef autocue het volgende:
    Een manier om zowel de performance te houden van een grote batch queries als het kunnen achterhalen is het zetten van een flag (of een timestamp) op je duplicaat tabelrow. Je zou bijvoorbeeld zoiets kunnen doen als :
    [ code verwijderd ]

    Niet supernetjes en het werkt alleen onder MySQL, maar 't doet (als 't goed is) z'n werk .
    Ik begrijp niet precies wat je bedoelt, maar ik vind op zich de timestamp-suggestie niet onaardig....
    Alleen heb ik dan juist alle niet-gewijzigde records te pakken, wat niet per se hetzelfde is als alle duplicaten...
    pi_55984806
    quote:
    Op zaterdag 12 januari 2008 22:24 schreef Geqxon het volgende:
    De opmaak gaat via CSS, dus een template inladen is hier niet nodig.
    De opmaak gaat eigenliijk per definitie via css, daar is css voor, maar de structuur... hoe doe je dat dan?
    pi_55985156
    quote:
    Op zaterdag 12 januari 2008 22:52 schreef Farenji het volgende:

    [..]

    De opmaak gaat eigenliijk per definitie via css, daar is css voor, maar de structuur... hoe doe je dat dan?
    Die kwak ik van top-to-bottom in de body neer, en geef ik een passende class-naam mee. Dat gaat voor nu prima, een stukje hierboven staat een voorbeeld hoe ik met deze class een pagina opbouw.
    pi_55986241
    quote:
    Op zaterdag 12 januari 2008 23:02 schreef Geqxon het volgende:

    [..]

    Die kwak ik van top-to-bottom in de body neer, en geef ik een passende class-naam mee. Dat gaat voor nu prima, een stukje hierboven staat een voorbeeld hoe ik met deze class een pagina opbouw.
    Als je niet gaat positioneren via je class maar dat static via css gaat doen wat is dan nog het doel van de class? Imo wordt het pas bruikbaar als je alle css-styles meegeeft in de tags in het html-bestand. Anders kun je beter een template aanmaken en die elke keer gebruiken.

    Laat maar en niet goed gelezen, classes meegeven in de tag kan natuurlijk ook al krijg je dan wel enorm stylesheets als je alle opties sowieso moet aanmaken..
    pi_55989799
    quote:
    Op zaterdag 12 januari 2008 22:26 schreef Xcalibur het volgende:

    [..]

    Ik begrijp niet precies wat je bedoelt, maar ik vind op zich de timestamp-suggestie niet onaardig....
    Alleen heb ik dan juist alle niet-gewijzigde records te pakken, wat niet per se hetzelfde is als alle duplicaten...
    Als je de MySQL ON DUPLICATE functionaliteit gebruikt kun je juist de duplicaten markeren en deze dus later selecteren, daar doelde ik op .
    pi_55989907
    Heeft het nut om LIMIT 1 te gebruiken bij een UPDATE wanneer je zeker bent dat de limit ook altijd 1 is? Of is het overbodig?
    ne okuyon, bokmu var?
    pi_55989940
    quote:
    Op zondag 13 januari 2008 02:22 schreef saban het volgende:
    Heeft het nut om LIMIT 1 te gebruiken bij een UPDATE wanneer je zeker bent dat de limit ook altijd 1 is? Of is het overbodig?
    Depends. Want als er dan toch stiekem ooit 2 records zijn, weet je niet zeker of hij wel de goede van de twee update. Als je dan toch een LIMIT 1 doet, gelijk ook maar even een ORDER BY erbij, zodat hij wel de "beste" van de twee pakt.

    Verder kan het handig zijn voor als er ooit iets goed fout gaat, en hij maar 1 record verpest, in plaats van je complete tabel.
    pi_55990120
    Het kan niet zo zijn dat er twee zelfde records zijn, hij zoekt/select op een uniek id. Mijn vraag was meer van, heeft het snelheidswinst, dus wanneer hij de eerste record heeft gevonden niet meer naar een tweede zoekt (die is er toch niet).
    ne okuyon, bokmu var?
    pi_55993435
    Het zoeken op een geindexeerd ID gaat echt onwaarschijnlijk snel, dus ik vermoed dat de UPDATE zelf de bottleneck is zeg maar.... het toevoegen van een LIMIT zal wellicht *iets* uitmaken, maar dan heb je het toch wel over (tien?)duizenden van seconden denk ik...

    Maak anders een een benchmarkje, waarin je beide varianten 10.000 draait en de tijd bijhoudt
    pi_55993493
    quote:
    Op zondag 13 januari 2008 02:14 schreef autocue het volgende:
    Als je de MySQL ON DUPLICATE functionaliteit gebruikt kun je juist de duplicaten markeren en deze dus later selecteren, daar doelde ik op .
    Ik ga d'r even naar kijken
    Maar voor het goede moet je dan wel de duplicaten overschijven in je database, omdat je anders de oude informatie uit je database haalt, terwijl die niet per se hetzelfde is als de informatie in je CSV (de unieke combinatie is wel hetzelfde natuurlijk, maar de andere velden misschien niet). En eigenlijk wil je de informatie uit je CSV weten...

    Aan de andere kant: ik heb nu een unieke index op firstname + lastname + email, dus als ik dat laat zien weet je op zich ook wel genoeg

    Edit: heb er inmiddels naar gekeken. Volgens mij ontkom je er niet aan om een extra kolom, zoals in jouw voorbeeld? Op zich geen ramp, maar ook niet de mooiste oplossing ... Wat had jij voor ideeën over het bijhouden met een timestamp? Dat lijkt me niet zo betrouwbaar?

    [ Bericht 13% gewijzigd door Xcalibur op 13-01-2008 12:05:28 ]
    pi_55996306
    quote:
    Op zaterdag 12 januari 2008 19:47 schreef Tarabass het volgende:

    [..]

    Ja, hier is 'ie nu ook weer goed. Ik had trouwens de <p>-tags gecommentariseerd maar als je in css de p-tag een margin van 0 meegeeft moet het wel goed gaan in beide browsers. Margin wordt standaard in verschillende browsers per tag in verschillende afstanden weergegeven wat de site lelijk kan maken. Door de margin zelf in te stellen voorkom je dat en is de margin overal hetzelfde. Succes verder met je site!
    Ik zag het! Anders viel in IE het menu over de titelkop...

    Nogmaals heel erg bedankt
    pi_56004352
    quote:
    Op zondag 13 januari 2008 11:39 schreef Xcalibur het volgende:
    Het zoeken op een geindexeerd ID gaat echt onwaarschijnlijk snel, dus ik vermoed dat de UPDATE zelf de bottleneck is zeg maar.... het toevoegen van een LIMIT zal wellicht *iets* uitmaken, maar dan heb je het toch wel over (tien?)duizenden van seconden denk ik...

    Maak anders een een benchmarkje, waarin je beide varianten 10.000 draait en de tijd bijhoudt
    Duidelijk, thanks
    ne okuyon, bokmu var?
    pi_56021586
    Als ik een simpel php servertje op mn pc wil instaleren, is dat dan mogelijk zonder dat dat ding altijd loopt? Dat ik hem alleen run wanneer nodig? Zijn er nog verschillende manieren om zon php server te maken? Ik wil hem gewoon om wat scriptjes te testen...
    pi_56021920
    quote:
    Op maandag 14 januari 2008 12:54 schreef Flaccid het volgende:
    Als ik een simpel php servertje op mn pc wil instaleren, is dat dan mogelijk zonder dat dat ding altijd loopt? Dat ik hem alleen run wanneer nodig? Zijn er nog verschillende manieren om zon php server te maken? Ik wil hem gewoon om wat scriptjes te testen...
    Je kan de server als een service installeren en daarvan kun je aangeven of die automatisch of handmatig gestart moet worden.
    pi_56021955
    quote:
    Op maandag 14 januari 2008 12:54 schreef Flaccid het volgende:
    Als ik een simpel php servertje op mn pc wil instaleren, is dat dan mogelijk zonder dat dat ding altijd loopt? Dat ik hem alleen run wanneer nodig? Zijn er nog verschillende manieren om zon php server te maken? Ik wil hem gewoon om wat scriptjes te testen...
    www.wampserver.com, voor windows, bevat alles wat nodig is om gelijk te beginnen.
    Kan je zelf aan/uit zetten.
    pi_56022589
    quote:
    Op maandag 14 januari 2008 13:11 schreef Scorpie het volgende:

    [..]

    www.wampserver.com, voor windows, bevat alles wat nodig is om gelijk te beginnen.
    Kan je zelf aan/uit zetten.
    Bedankt, ga het zo eens uitchecken!

    Als je in een mysql table een row met auto_increment hebt, kan je deze waarde dan updaten naar iets anders zonder die auto increment?

    [ Bericht 13% gewijzigd door Flaccid op 14-01-2008 14:01:31 ]
    pi_56023287
    Iemand een tip hoe ik een eenvoudige taalkeuze mogelijkheid kan bouwen?

    Op het moment include ik een van de 2 mogelijke talen door middel van de controle van een sessie. In die sessie sla ik de keuze van de taal op.

    Echter moet ik dus een knopje krijgen die een bepaalde waarde toekent aan die sessie. Ik zat te denken aan een ?language=nl in de URL toe te voegen, en die uit te lezen in de top van de code door te submitten naar PHP_SELF. Echter hebben enkele pagina's weer bepaalde waardes in de URL meegegeven, en anderen weer niet.

    Dus dacht ik aan een 'toggle' pagina. De huidige URL wordt opgeslagen in een sessie waarna je naar een pagina gaat die aan de hand van de ?language=XX in de url de sessie waarde veranderd en hij je weer terug redirect naar de URL in de sessie.

    Dat moet in principe werken, maar misschien is er nog een veel betere manier die ik niet ken
    Michael Scott: If I were joking, you'd be laughing. Do you look like you're laughing?
    Dwight K. Schrute: Impossible to say. I can't see myself.
    pi_56023466
    Opslaan in een sessie is een goede optie. Als je het via de URL wilt meegeven kan dat bijvoorbeeld middels de http_build_query() functie. Het resultaat daarvan kun je gebruiken na de ? in de URL.

    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $data 
    = array('foo'=>'bar',
                  
    'baz'=>'boom',
                  
    'cow'=>'milk',
                  
    'php'=>'hypertext processor');

    echo 
    http_build_query($data); // foo=bar&baz=boom&cow=milk&php=hypertext+processor
    ?>


    Bron: http://php.net/http_build_query
    pi_56024071
    quote:
    Op maandag 14 januari 2008 14:14 schreef HuHu het volgende:
    Opslaan in een sessie is een goede optie. Als je het via de URL wilt meegeven kan dat bijvoorbeeld middels de http_build_query() functie. Het resultaat daarvan kun je gebruiken na de ? in de URL.
    [ code verwijderd ]

    Bron: http://php.net/http_build_query
    Kan je een login systeem ook het beste met sessies doen? Want ik wil nog een login systeem in mijn cms doen uiteraard.
    pi_56024136
    Ik denk trouwens dat ik i.p.v. de taal in de sessie op te slaan gebruik ga maken van een cookie, dan blijft de keuze natuurlijk onthouden.

    En ik denk dat ik dan toch maar gebruik ga maken van een toggle pagina die dan weer redirect naar de pagina waar hij vandaan kwam. Ik zou het anders ook niet weten.
    Michael Scott: If I were joking, you'd be laughing. Do you look like you're laughing?
    Dwight K. Schrute: Impossible to say. I can't see myself.
    pi_56024182
    quote:
    Op maandag 14 januari 2008 14:40 schreef Flaccid het volgende:

    [..]

    Kan je een login systeem ook het beste met sessies doen? Want ik wil nog een login systeem in mijn cms doen uiteraard.
    Zelf maak ik ook gebruik van een sessie bij een zelfgebouwd CMS. Ik controleer dan of die sessie bestaat en of de waarde juist is, en dan geef ik pas de content weer.
    Michael Scott: If I were joking, you'd be laughing. Do you look like you're laughing?
    Dwight K. Schrute: Impossible to say. I can't see myself.
    abonnement Unibet Coolblue Bitvavo
    Forum Opties
    Forumhop:
    Hop naar:
    (afkorting, bv 'KLB')