abonnement Unibet Coolblue Bitvavo
  woensdag 24 januari 2007 @ 16:43:32 #61
85514 ralfie
!Yvan eht nioj
pi_45634535
quote:
Op dinsdag 23 januari 2007 11:24 schreef hornage het volgende:

[..]

bij deze een mooie functie die dat voor je regelt:
[ code verwijderd ]
dat kan veel simpeler. Je weet dat php een aantal mooie array sorteer functies heeft met callback optie?

1
2
3
4
5
6
7
<?php
uasort
($arr,"comp");

function
comp($a,$b) {
        return
strlen($a)>strlen($b)?-1:1;
}
?>
pi_45635271
Ik weet even niet hoe ik een query moet schrijven voor het volgende

Ik heb een tabel X die een 1:n relatie heeft met tabel Y en een 1:n relatie met tabel Z. Dus één rij in tabel X kan 0...n rijen in tabel Y en Z hebben, onafhankelijk van elkaar. Nu wil ik in één query de waarden van tabel X, Y en Z ophalen, aan elkaar gejoined. Normaal gesproken zou je zoiets doen:

1
2
3
4
SELECT ...
FROM tabelX
JOIN tabelY ON join_voorwaarde_y
JOIN tabelZ ON join_voorwaarde_z


Nadeel hiervan is dat als er twee rijen voor een rij in tabel X in tabel Y staan, en drie rijen voor een rij in tabel X in tabel Z, ik 2x3 = 6 rijen terugkrijg (met dubbele waardes). Nu is een GROUP BY wel mogelijk, maar dit wordt lastiger als het strings betreft.

Alternatieve oplossing is het in meerdere queries doen, dus per rij in tabel X een aparte query voor tabel Y en Z, maar dat vind ik absoluut geen mooie oplossing. Hoe zouden jullie dit doen?
pi_45635376
quote:
Op dinsdag 23 januari 2007 11:24 schreef hornage het volgende:

bij deze een mooie functie die dat voor je regelt:
Tnx, maar is er in MySQL geen functie die dat automatisch kan doen?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_45635434
quote:
Op woensdag 24 januari 2007 17:09 schreef Chandler het volgende:

[..]

Tnx, maar is er in MySQL geen functie die dat automatisch kan doen?
In de documentatie van MySQL staan een hoop stringfuncties waar je met gemak op kunt sorteren. Jij zoekt waarschijnlijk LENGTH(kolom) let wel op dat dit soort sorteringen niet al te snel zijn omdat ze niet te indexeren zijn. Eventueel moet je dan de lengte van de string opslaan in een apart veld en daar een index op leggen. (UPDATE tabel SET lengte = LENGTH(stringkolom))
  woensdag 24 januari 2007 @ 17:29:06 #65
85514 ralfie
!Yvan eht nioj
pi_45635983
quote:
Op woensdag 24 januari 2007 17:11 schreef JeRa het volgende:

[..]

In de documentatie van MySQL staan een hoop stringfuncties waar je met gemak op kunt sorteren. Jij zoekt waarschijnlijk LENGTH(kolom) let wel op dat dit soort sorteringen niet al te snel zijn omdat ze niet te indexeren zijn.
Kun je daar een voorbeeld van geven? Heb zelf wat geexperimenteerd, maar schijnbaar wil mysql niet direct sorteren op length(kolom). Ik zou niet weten hoe deze query moet zonder een extra kolom...
  woensdag 24 januari 2007 @ 18:17:36 #66
37634 wobbel
Da WoBBeL King
pi_45637471
Wat is de beste manier om achter de bestandstype te komen van een geupload bestand? $_FILES['bestand']['type'] is niet veilig genoeg lees ik op php.net, maar wat is dan de beste manier?

Op extensie controleren én op mime-type? Ik ga er vanuit dat zoiets de veiligste manier is.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
if ( $mimetype bij $extensie hoort )
{

    
grant_access ( );

}
else
{

    
sterf( );

}
?>
pi_45638389
quote:
Op woensdag 24 januari 2007 17:29 schreef ralfie het volgende:

[..]

Kun je daar een voorbeeld van geven? Heb zelf wat geexperimenteerd, maar schijnbaar wil mysql niet direct sorteren op length(kolom). Ik zou niet weten hoe deze query moet zonder een extra kolom...
Nou, je gebruikt gewoon die functie in combinatie met een VARCHAR of TEXT kolom eventueel via een apart veld:

1SELECT LENGTH(tekst) AS lengte, tekst FROM tabel ORDER BY lengte DESC LIMIT 10;
pi_45638434
quote:
Op woensdag 24 januari 2007 18:17 schreef wobbel het volgende:
Wat is de beste manier om achter de bestandstype te komen van een geupload bestand? $_FILES['bestand']['type'] is niet veilig genoeg lees ik op php.net, maar wat is dan de beste manier?

Op extensie controleren én op mime-type? Ik ga er vanuit dat zoiets de veiligste manier is.
[ code verwijderd ]
Ik zou idd op mimetype, bestandsextensie en eventueel bestandsgrootte filtreren. Daar heb je ook handige functies voor
pi_45638471
Vraag m.b.t. het locken van tabellen? hoe kan een tabel gelocked worden zonder dat je daarvoor speciale queries draait?

vandaag is een website van een opdrachtgever offline gezet op zijn nieuwe hosting omdat de queries (ja het zijn er heel wat per pagina, maar goed en niet door mij gescript ) de tabellen zouden locken en problemen zou veroorzaken m.b.t. de preformance van MySQL.

Heeft iemand hier een mooie uitleg voor?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_45638532
@Jera, nog bedankt voor de tip van LENGTH! ga gelijk even de documentatie doorlezen m.b.t. andere mysql tekst functies... en snelheid doet in deze niet zoveel terzake, echter pas als een document geconverteerd dient te worden.
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_45638803
quote:
Op woensdag 24 januari 2007 18:52 schreef Chandler het volgende:
Vraag m.b.t. het locken van tabellen? hoe kan een tabel gelocked worden zonder dat je daarvoor speciale queries draait?

vandaag is een website van een opdrachtgever offline gezet op zijn nieuwe hosting omdat de queries (ja het zijn er heel wat per pagina, maar goed en niet door mij gescript ) de tabellen zouden locken en problemen zou veroorzaken m.b.t. de preformance van MySQL.

Heeft iemand hier een mooie uitleg voor?
Queries in MySQL zijn atomic, dat wil zeggen dat tijdens het uitvoeren van een SELECT, INSERT, UPDATE of DELETE MySQL garandeert dat de inhoud van de tabellen die je aanspreekt niet wijzigt. Daarvoor moet MySQL de tabellen locken, zodat wanneer jij een SELECT uitvoert die lang duurt er geen andere query tussen kan komen die de tabellen wijzigt. Echter kunnen queries die de tabellen niet wijzigen (andere SELECTs) wél gewoon worden uitgevoerd tijdens een langdurige SELECT.

Je kunt dus last krijgen van verminderde performance bij locking als:
1) Je een SELECT hebt draaien die lang duurt
2) Je gelijktijdig iets in de tabellen die worden aangesproken door de SELECT wilt wijzigen

Kwestie van uitzoeken welke queries er lastig doen, dus hint: SHOW FULL PROCESSLIST
  woensdag 24 januari 2007 @ 19:28:29 #72
85514 ralfie
!Yvan eht nioj
pi_45639728
quote:
Op woensdag 24 januari 2007 18:50 schreef JeRa het volgende:

[..]

Nou, je gebruikt gewoon die functie in combinatie met een VARCHAR of TEXT kolom eventueel via een apart veld:
[ code verwijderd ]
hoe simpel

half uur zitten klooien met ORDER BY length(text) en veel, VEEL varianten daarop...maar er nooit aan gedacht om de LENGTH() in het SELECT deel te zetten
pi_45640380
quote:
Op woensdag 24 januari 2007 19:02 schreef JeRa het volgende:

[..]

Queries in MySQL zijn atomic, dat wil zeggen dat tijdens het uitvoeren van een SELECT, INSERT, UPDATE of DELETE MySQL garandeert dat de inhoud van de tabellen die je aanspreekt niet wijzigt. Daarvoor moet MySQL de tabellen locken, zodat wanneer jij een SELECT uitvoert die lang duurt er geen andere query tussen kan komen die de tabellen wijzigt. Echter kunnen queries die de tabellen niet wijzigen (andere SELECTs) wél gewoon worden uitgevoerd tijdens een langdurige SELECT.

Je kunt dus last krijgen van verminderde performance bij locking als:
1) Je een SELECT hebt draaien die lang duurt
2) Je gelijktijdig iets in de tabellen die worden aangesproken door de SELECT wilt wijzigen

Kwestie van uitzoeken welke queries er lastig doen, dus hint: SHOW FULL PROCESSLIST
Tnx, helaas voor mij is de technicus van deze webhosting niet meer aanwezig en moet ik dus wachten tot morgen ochtend om voor deze klant de problemen op te lossen... gelukkig ben ik al weer heel wat kennis rijker (door jou )

Morgen nieuwe dag!
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_45640397
quote:
Op woensdag 24 januari 2007 19:28 schreef ralfie het volgende:

[..]

hoe simpel

half uur zitten klooien met ORDER BY length(text) en veel, VEEL varianten daarop...maar er nooit aan gedacht om de LENGTH() in het SELECT deel te zetten
Ik ook niet
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_45644969
quote:
Op woensdag 24 januari 2007 17:06 schreef JeRa het volgende:
Ik heb een tabel X [...]
Leuk probleem. Alleen zie ik zo gauw geen oplossing, ook niet met een group by trouwens.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_45645473
quote:
Op woensdag 24 januari 2007 21:41 schreef SuperRembo het volgende:

[..]

Leuk probleem. Alleen zie ik zo gauw geen oplossing, ook niet met een group by trouwens.
Het rare is dus dat ik helemaal geen vreemd datamodel heb, het is sterk genormaliseerd zelfs. Je zou zeggen dat er meer mensen tegen een dergelijk probleem oplopen als ze twee of meer typen attributen aan één item willen toekennen in een database.

Het stomme is trouwens dat ik al wel een oplossing heb. Dit speelt zich af in PostgreSQL waar het mogelijk is om zelf aggregaat functies te definiëren (CREATE AGGREGATE). Ik zou dus een aggregaat functie kunnen schrijven die meerdere TEXT velden kan combineren tot één comma separated veld met al die waarden, die toegepast wordt na een GROUP BY. Maar dat leek me zo omslachtig dat ik me niet kon voorstellen dat het niet anders kon.
pi_45645826
Ik denk niet dat je hoeft te groupen op de tekstvelden zelf. Als het je lukt om (met een eigen aggregate) de juiste id's van tabel X, Y en Z bij elkaar hebt, dan kan je daar wel weer tegenaan joinen om de teksten op te halen.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_45646122
quote:
Op woensdag 24 januari 2007 22:05 schreef SuperRembo het volgende:
Ik denk niet dat je hoeft te groupen op de tekstvelden zelf. Als het je lukt om (met een eigen aggregate) de juiste id's van tabel X, Y en Z bij elkaar hebt, dan kan je daar wel weer tegenaan joinen om de teksten op te halen.
Dat is wel te doen, maar dan nog vind ik het niet bij het hiërarchische model horen dat ik in m'n database heb vastgelegd eigenlijk is het maar raar dat je met queries altijd een 2-dimensionaal resultaat krijgt (records versus kolommen) terwijl als je veel tabellen aan elkaar gekoppeld hebt je een 3- of meer-dimensionaal resultaat hebt.
pi_45646423
http://en.wikipedia.org/wiki/Dimensional_database zou dit eventueel nog kunnen helpen?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_45646495
quote:
Op woensdag 24 januari 2007 22:23 schreef Chandler het volgende:
http://en.wikipedia.org/wiki/Dimensional_database zou dit eventueel nog kunnen helpen?
Ja dat idee dus, maar dan voor DBMS'en als MySQL of PgSQL
pi_45646556
niet voor mij weg gelegd!?t?, laat staan nederlands
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_45683138
ik wil een RSS waarin de verkeerde spelling staat van een bepaald woord alsnog omzetten naar html maar dan met de mogelijkheid een woord bijvoorbeeld: "acces" te renamen naar het juiste woord "access" is dit mogelijk bijv met een if of foreach statement, hoe zou dit in zn werk gaan ?
pi_45683489
Misschien zo iet's?
Schiet mij niet af als het erg fout is aub

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function check($invoer) {
    
$woorden = array('acces' => 'access');
    
    foreach(
$woorden as $fout => $goed) {
        
$invoer = preg_replace("#".preg_quote($fout,'#')."#i","$goed",$invoer);
    }
    return
$invoer;
}

$tekst = 'acces';
echo
check($tekst)
?>

Misschien kun je ook die array $woorden laten opvullen uit een database, iets flexibeler met toevoegen/verwijderen/aanpassen van de woorden.

edit-
huh mijn smileys doen het niet.
En de naam van de functie is ook niet goed, zou misschien een iets duidelijkere naam moeten hebben.
  vrijdag 26 januari 2007 @ 00:26:46 #84
46383 Tiemie
sowieso wel!
pi_45684007
1
2
3
4
5
6
7
<?php
$tekst 
'acces ies vout';
$foute_woorden = array('acces''vout''ies');
$goede_woorden = array('access''goed''is');
$tekst str_replace($foute_woorden$goede_woorden$tekst);
print 
$tekst;
?>


zo kan 't ook.
pi_45684352
kheb t even geprobeerd en het werkt wel, maar ik krijg het niet werkend voor de hele body. hoe kan ik dit toepassen op de volledige body van de page.
  vrijdag 26 januari 2007 @ 16:43:19 #86
37634 wobbel
Da WoBBeL King
pi_45700272
Wat is de beste manier om met de hand de volgorde te bepalen van rijen in de database?

Ik heb nu de volgende rijen:
- Waarde 1
- Waarde 2
- Waarde 3
- Waarde 4

Maar ik wil met de hand bepalen dat het zo wordt weergegeven vanuit de database:

- Waarde 3
- Waarde 2
- Waarde 1
- Waarde 4
  vrijdag 26 januari 2007 @ 17:06:35 #87
85514 ralfie
!Yvan eht nioj
pi_45700726
quote:
Op vrijdag 26 januari 2007 16:43 schreef wobbel het volgende:
Wat is de beste manier om met de hand de volgorde te bepalen van rijen in de database?

Ik heb nu de volgende rijen:
- Waarde 1
- Waarde 2
- Waarde 3
- Waarde 4

Maar ik wil met de hand bepalen dat het zo wordt weergegeven vanuit de database:

- Waarde 3
- Waarde 2
- Waarde 1
- Waarde 4
Wil je de rijen random uit de database trekken, of wat?
  vrijdag 26 januari 2007 @ 17:07:33 #88
18008 hornage
FOK! Movie Trivia-Prijsmeester
pi_45700753
de volgorde wordt bepaald door de index. Standaard zit er eentje op je primary key. Als die niet de volgorde geeft die je wilt hebben lijkt mij dat je een extra field aanmaakt en daar een index op maakt. In die tweede geef je dan dmv integers de volgorde die volgens jou juist is
Test je filmkennis! Speel mee met FOK! Movie Trivia en win prijzen!
  vrijdag 26 januari 2007 @ 17:16:03 #89
37634 wobbel
Da WoBBeL King
pi_45700992
quote:
Op vrijdag 26 januari 2007 17:07 schreef hornage het volgende:
de volgorde wordt bepaald door de index. Standaard zit er eentje op je primary key. Als die niet de volgorde geeft die je wilt hebben lijkt mij dat je een extra field aanmaakt en daar een index op maakt.
Tot hier snapte ik het nog
pi_45701453
Je hebt een ID dus bijv Record 1 heeft ID 1. Dan pak je de ID van Waarde 1, ID + 3 is dus waarde 4 ed
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')