abonnement Unibet Coolblue Bitvavo
  zaterdag 10 september 2011 @ 02:10:33 #201
137776 boem-dikkie
Jedi Mind Baby!
pi_101775568
quote:
0s.gif Op vrijdag 9 september 2011 20:29 schreef MrNiles het volgende:

[..]

dat heb ik dus gedaan..maar ik ben ff de draad kwijt :(
Voor het geval je er nog niet uit bent.

".$album."/thumbs/klein_".$files[$rand]. "

Kijk daar nog eens goed naar.

Je sluit je stukje php met " waardoor /thumbs/klein_ nergens meer tussen staat.

Dit moet wel werken denk ik.

1
2
3
<?php
echo '<img src="'.$album.'/thumbs/klein_'.$files[$rand]. '"title="'.$afbeelding['basename'] .'" alt="'.$afbeelding['basename']. '" class="thumbs"> ';
?>
Ik weet niks van Hindoes. Wel van Samoerai en andere dingen.
pi_101832456
quote:
14s.gif Op zaterdag 10 september 2011 02:10 schreef boem-dikkie het volgende:

[..]

Voor het geval je er nog niet uit bent.

".$album."/thumbs/klein_".$files[$rand]. "

Kijk daar nog eens goed naar.

Je sluit je stukje php met " waardoor /thumbs/klein_ nergens meer tussen staat.

Dit moet wel werken denk ik.
[ code verwijderd ]

het is min of meer gelukt
alle foutmeldingen zijn verdwenen maar het script doet niet wat ik had gehoopt :(
http://www.phphulp.nl/php(...)h-fotoalbum-v3/1491/ is een fotoalbum die vanuit mapjes zelf "sub"albums aanmaakt
werkt prima
maar
op de voorbeeld pagina is het de overzichtspagina met linkjes EN plaatjes. In het script van phphulp heb ik alleen linkjes
Ik had gehoopt met een aangepast script wat erbij stond dit te kunnen maken..maar helaas..
ook gaat mijn php kennis lang niet vergenoeg om zoiets zelf te maken
pi_101832772
Wij kunnen het wel weer voorkauwen maar wellicht kun je het hele project beter uitbesteden.
pi_101833462
quote:
1s.gif Op zondag 11 september 2011 21:03 schreef Tegan het volgende:
Wij kunnen het wel weer voorkauwen maar wellicht kun je het hele project beter uitbesteden.
ik vraag er toch ook niet om, leg alleen even uit waar ik mee bezig ben
als het me verder niet meer lukt..so be it..dan maar alleen linkjes
tis maar voor de hobby..gelukkig hoef ik er niet rijk van te worden :)
pi_101833571
Heb je wellicht GD niet geinstalleerd staan? [/wilde suggestie]

En waarom maak je niet gewoon lekker een picasa-album ofzo?
  zondag 11 september 2011 @ 21:16:30 #206
137776 boem-dikkie
Jedi Mind Baby!
pi_101833593
quote:
0s.gif Op zondag 11 september 2011 20:58 schreef MrNiles het volgende:

[..]

het is min of meer gelukt
alle foutmeldingen zijn verdwenen maar het script doet niet wat ik had gehoopt :(
http://www.phphulp.nl/php(...)h-fotoalbum-v3/1491/ is een fotoalbum die vanuit mapjes zelf "sub"albums aanmaakt
werkt prima
maar
op de voorbeeld pagina is het de overzichtspagina met linkjes EN plaatjes. In het script van phphulp heb ik alleen linkjes
Ik had gehoopt met een aangepast script wat erbij stond dit te kunnen maken..maar helaas..
ook gaat mijn php kennis lang niet vergenoeg om zoiets zelf te maken
Wat voor aangepast script wat erbij stond?
Ik weet niks van Hindoes. Wel van Samoerai en andere dingen.
pi_101834049
quote:
0s.gif Op zondag 11 september 2011 21:16 schreef KomtTijd... het volgende:
Heb je wellicht GD niet geinstalleerd staan? [/wilde suggestie]

En waarom maak je niet gewoon lekker een picasa-album ofzo?
Wat is GD? (edit: GD support = enabled)

Ik ben zelf een beetje aan het pielen met php als hobby
daarom eigenlijk geen picasa,
Heb nu zo gemaakt dat er een zipje wordt geupload naar de site
deze wordt uitgepakt in de juiste dir en zo een fotoboek ontstaat
Het is gewoon om te spelen eigenlijk, beetje bezig in m'n vrije tijd

@boem-dikkie: verder omlaag in de comments staat er een aangepast script,
ik wist niet precies wat het ging doen, de omschrijving was niet heel goed erbij
als ik het nu terug lees is het denk ik een oplossing voor een ander probleem
maar dit was de extra code erin
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
<?php
// Nieuw Nieuw Nieuw Nieuw //
      
$exts 'jpg jpeg png gif';
      
$files = array();
      
$i = - 1;
      if (
'' == $album)
        
$album './';
      
$handle opendir($album);
      
$exts explode(' '$exts);
      while (
false !== ($file readdir($handle))) {
        foreach (
$exts as $ext) {
          if (
preg_match('/\.' $ext '$/i'$file$test)) {
            
$files[] = $file;
            ++
$i;
          }
        }
      }
      
closedir($handle);
      
mt_srand((double) microtime() * 1000000);
      
$rand mt_rand(0$i);
// Eind Eind Eind Eind Eind //

      
echo '<img src="'.$album.'/thumbs/klein_'.$files[$rand]. '"title="'.$afbeelding['basename'] .'" alt="'.$afbeelding['basename']. '" class="thumbs"> ';
      echo 
'<a href='?pagina=fotoalbum&album=' . $album . ''>' ucfirst(basename($album)) . '</a><br><br />' PHP_EOL;
?>


[ Bericht 2% gewijzigd door MrNiles op 12-09-2011 10:23:34 ]
  donderdag 15 september 2011 @ 10:32:37 #208
107418 wdn
Elfen lied O+
pi_101969175
MySQL...

Ik heb een display van `relaties` en daarnaast een tabel van enkele miljoenen (10+) records waarbij op basis van een veld `relatie` en `jaartal` moet gaan controleren wat de `omzet` (sum) is over 3 jaren.
Dus... relatie, naam. omzet 2011, omzet 2010, omzet 2009.

Maar zelfs met `indexering` op de tabel is het veel en veels te langzaam (30+ secondes) om alles bij elkaar te rapen.

Nu ben ik een beetje aan het rondkijken en kwam ik `stored procedures` tegen. Is dit wat ik nodig heb om hiermee bijvoorbeeld een schaduwtabel te maken die real time ge-update wordt als de hoofdtabel opgebouwd wordt?

Of is er een betere oplossing? Ik weiger om in de tabel `relaties` een veld op te nemen met de omzetgegevens voor die jaren ;-)
Beatus vir qui suffert tentationem.
PSN Rinzewind en Cadsuana Melaidhrin
Stellar Blade *O* Sea of Stars *O* Trails Daybreak *O*
  donderdag 15 september 2011 @ 10:38:55 #209
75592 GlowMouse
l'état, c'est moi
pi_101969316
Onduidelijk verhaal. Wat is de output van SHOW CREATE TABLE, en wat is je query?
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  donderdag 15 september 2011 @ 12:04:39 #210
58834 Catbert
The evil HR Director.
pi_101971738
Ik vermoed dat 'ie een overzicht wil tonen van alle relaties met de omzet daarbij. Als hij geen index heeft op het veld wat die informatie bevat in de grote tabel zal 'ie voor zo'n overzicht iedere keer die hele tabel door moeten ploegen.
"[...] a large number of the teenagers claiming Asperger's are, in fact, merely dicks."
  donderdag 15 september 2011 @ 12:14:48 #211
75592 GlowMouse
l'état, c'est moi
pi_101972014
quote:
0s.gif Op donderdag 15 september 2011 12:04 schreef Catbert het volgende:
Ik vermoed dat 'ie een overzicht wil tonen van alle relaties met de omzet daarbij. Als hij geen index heeft op het veld wat die informatie bevat in de grote tabel zal 'ie voor iedere rij uit zo'n overzicht iedere keer die hele tabel door moeten ploegen.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  donderdag 15 september 2011 @ 12:18:23 #212
58834 Catbert
The evil HR Director.
pi_101972132
Nee, want hij heeft vermoedelijk wel een index op relatie id. Tenminste, dat hoop ik, anders is het wel heel erg dom.
"[...] a large number of the teenagers claiming Asperger's are, in fact, merely dicks."
  donderdag 15 september 2011 @ 12:28:01 #213
75592 GlowMouse
l'état, c'est moi
pi_101972417
Zelfs met zo'n index is het goed mogelijk dat hij voor elke relatie in zijn overzicht de hele tabel doorloopt. Doorlopen moet je dan zien elke datapage raadplegen (als is het maar voor een record per page).
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  donderdag 15 september 2011 @ 12:30:45 #214
12221 Tijn
Powered by MS Paint
pi_101972482
quote:
0s.gif Op donderdag 15 september 2011 10:32 schreef wdn het volgende:

Maar zelfs met `indexering` op de tabel is het veel en veels te langzaam (30+ secondes) om alles bij elkaar te rapen.
Dan heb je niet de juiste indices geplaatst.
  donderdag 15 september 2011 @ 12:43:51 #215
75592 GlowMouse
l'état, c'est moi
pi_101972823
quote:
3s.gif Op donderdag 15 september 2011 12:30 schreef Tijn het volgende:

[..]

Dan heb je niet de juiste indices geplaatst.
Wat een snelle conclusie, een kenner?
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  donderdag 15 september 2011 @ 13:27:51 #216
12221 Tijn
Powered by MS Paint
pi_101974172
quote:
7s.gif Op donderdag 15 september 2011 12:43 schreef GlowMouse het volgende:

[..]

Wat een snelle conclusie, een kenner?
Als er verder geen informatie wordt gegeven, kun je verder niet zoveel zeggen dan "je hebt het verkeerd gedaan" :P
pi_101975232
Probeer eens een 'explain' voor je query te gooien om te kijken waar prestatiewinst te behalen valt.
http://dev.mysql.com/doc/refman/5.0/en/explain.html
pi_101976377
quote:
0s.gif Op donderdag 15 september 2011 14:02 schreef Intrepidity het volgende:
Probeer eens een 'explain' voor je query te gooien om te kijken waar prestatiewinst te behalen valt.
http://dev.mysql.com/doc/refman/5.0/en/explain.html
Ik heb net query gemaakt en gekeken met explain wat hij toevoegt, maar ik zie wat hij doet, maar niet waar hoeveel tijd inging zitten en hoeveel percentage de belasting van een onderdeel was. Zou wel tof zijn als hij zegt dat een bepaalde join 60% van de belasting vraagt en dat je daar kunt beginnen voor verbetering.
  donderdag 15 september 2011 @ 14:45:24 #219
58834 Catbert
The evil HR Director.
pi_101976671
Je weet niks als hij niet post welke indices hij heeft.

De MSSQL query explain geeft overigens gewoon aan hoe zwaar een bepaald deel is.
"[...] a large number of the teenagers claiming Asperger's are, in fact, merely dicks."
pi_101977778
quote:
0s.gif Op donderdag 15 september 2011 14:45 schreef Catbert het volgende:
Je weet niks als hij niet post welke indices hij heeft.

De MSSQL query explain geeft overigens gewoon aan hoe zwaar een bepaald deel is.
MySQL geeft echt weinig informatie ;(
  donderdag 15 september 2011 @ 15:17:27 #221
75592 GlowMouse
l'état, c'est moi
pi_101977871
Je kunt het gewoon niet lezen.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_101977896
quote:
0s.gif Op donderdag 15 september 2011 15:17 schreef GlowMouse het volgende:
Je kunt het gewoon niet lezen.
Geef dan eens een mooi voorbeeld.
  donderdag 15 september 2011 @ 15:31:51 #223
75592 GlowMouse
l'état, c'est moi
pi_101978434
Nee, want het kost gewoon tijd voor je het kunt.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  vrijdag 16 september 2011 @ 15:47:31 #224
267443 Cue_
Cuecumbergirl
pi_102020043
Oke ik zit met het volgende, vanuit een pakket wordt de volgende code gegenereerd die ik in mijn database moet gooien:

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
/* Drop stored procedure task_generate_sales_invoice first. */

if exists (select 1 from sysobjects
           where name = 'task_generate_sales_invoice' and type = 'P')
   drop procedure task_generate_sales_invoice
go

create procedure task_generate_sales_invoice
(

   @until_date    date   ,
   @customer_id   id     
)
as
begin

  -- Do not count affected rows for performance
  SET NOCOUNT ON

   -- Generate sales invoice
   
   insert into sales_invoice
   select isnull((select max(sales_invoice_no) + 1
                  from sales_invoice), 1),
          customer_id,
          getdate(),
          dateadd(day, 30, getdate()),
          0,
          0,
          0
   from customer c
   where c.customer_id = @customer_id
     and exists (select 1
                 from hour h
                 join project p on (p.project_id = h.project_id)
                 where h.sales_invoice_id is null
                   and p.customer_id = c.customer_id)
   
   -- Connect hours to sales invoice.
   
   update h
   set sales_invoice_id = (select max(sales_invoice_id)
                           from sales_invoice i
                           where i.customer_id = p.customer_id)
   from hour h
   join project p on (p.project_id = h.project_id)
   where h.sales_invoice_id is null
     and p.customer_id = @customer_id
     and h.date       <= @until_date
   
end
go

Nu krijg ik de volgende foutmelding:
1
2
Msg 213, Level 16, State 1, Procedure task_generate_sales_invoice, Line 16
Insert Error: Column name or number of supplied values does not match table definition.
  vrijdag 16 september 2011 @ 16:05:16 #225
52200 ViPeRII
It's a good day to die
pi_102020671
Een van je tabelnamen die geselecteerd worden, bestaat niet
-- ViPeRII --
  vrijdag 16 september 2011 @ 16:12:34 #226
58834 Catbert
The evil HR Director.
pi_102020948
quote:
0s.gif Op vrijdag 16 september 2011 16:05 schreef ViPeRII het volgende:
Een van je tabelnamen die geselecteerd worden, bestaat niet
Kolomnaam volgens mij.
"[...] a large number of the teenagers claiming Asperger's are, in fact, merely dicks."
  vrijdag 16 september 2011 @ 16:16:28 #227
267443 Cue_
Cuecumbergirl
pi_102021104
de kolommen/tabellen komen overeen met het datamodel
  vrijdag 16 september 2011 @ 17:13:51 #228
107418 wdn
Elfen lied O+
pi_102023207
quote:
3s.gif Op donderdag 15 september 2011 12:30 schreef Tijn het volgende:

[..]

Dan heb je niet de juiste indices geplaatst.
Onzin. Echt.
quote:
0s.gif Op donderdag 15 september 2011 12:04 schreef Catbert het volgende:
Ik vermoed dat 'ie een overzicht wil tonen van alle relaties met de omzet daarbij. Als hij geen index heeft op het veld wat die informatie bevat in de grote tabel zal 'ie voor zo'n overzicht iedere keer die hele tabel door moeten ploegen.
Nee, de index staat op de relatie natuurlijk (als ik die niet zet gaat mysql onderuit ;) ).
Het is puur de hoeveelheid data (op dit moment 12.3 miljoen records) en hoeveelheid geheugen die ik kan gebruiken.

Maar uit de discussie hier kan ik al bepalen dat mijn vraag met 'nee' beantwoord moet worden: stored procedures is niet de oplossing.

relaties kent een 1500 records.
factuur historie 12.3m records.

factuur historie wordt op bedrijf, debiteur, contract factuur, regel doorlopen (en dat is de volledige primary key met debiteur ertussen). Geforceerd met een USE INDEX.

Ik had het idee om een soort van afgeleide tabel boven op deze tabel te leggen (met een PK bedrijf, debiteur, jaar, omzet).
Beatus vir qui suffert tentationem.
PSN Rinzewind en Cadsuana Melaidhrin
Stellar Blade *O* Sea of Stars *O* Trails Daybreak *O*
pi_102023251
quote:
0s.gif Op vrijdag 16 september 2011 17:13 schreef wdn het volgende:

[..]

Onzin. Echt.

[..]

Nee, de index staat op de relatie natuurlijk (als ik die niet zet gaat mysql onderuit ;) ).
Het is puur de hoeveelheid data (op dit moment 12.3 miljoen records) en hoeveelheid geheugen die ik kan gebruiken.

Maar uit de discussie hier kan ik al bepalen dat mijn vraag met 'nee' beantwoord moet worden: stored procedures is niet de oplossing.

relaties kent een 1500 records.
factuur historie 12.3m records.

factuur historie wordt op bedrijf, debiteur, contract factuur, regel doorlopen (en dat is de volledige primary key met debiteur ertussen). Geforceerd met een USE INDEX.

Ik had het idee om een soort van afgeleide tabel boven op deze tabel te leggen (met een PK bedrijf, debiteur, jaar, omzet).
Idee om je factuur historie tabel te gaan sharden? Dat zou de boel een stuk moeten versnellen.
pi_102096658
Ik gebruik op dit moment voor m'n website een paging system:

1
2
3
4
5
        if($pages >= 1 && $page <= $pages){
            for ($x=1; $x<=$pages; $x++) {
                echo ($x == $page) ? "<strong><a href='/nieuws/overzicht&page=".$x."'>".$x."</a></strong>  " : "<a href='/nieuws/overzicht&page=".$x."'>".$x."</a>  ";
            }
        }

Alleen er zijn nu zoveel pagina's dat de hele pagina wordt gevuld ermee. Nu heb ik zitten denken hoe ik ervoor kan zorgen dat ik '1 2 3 ... 30 31 32' krijg (of iets dergelijks), maar ik kom er niet uit.

Iemand die mij kan helpen?
pi_102103415
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  zondag 18 september 2011 @ 18:53:57 #232
12221 Tijn
Powered by MS Paint
pi_102106592
Gewoon een ifje in je for-loop die kijkt of $x kleiner is dan 3 en een ifje die kijkt of $x groter is dan $pages - 3 toch?
pi_102107009
Ik ga eens even kijken naar een if statement :)
  zondag 18 september 2011 @ 19:29:14 #234
75592 GlowMouse
l'état, c'est moi
pi_102107880
quote:
5s.gif Op zondag 18 september 2011 18:53 schreef Tijn het volgende:
Gewoon een ifje in je for-loop die kijkt of $x kleiner is dan 3 en een ifje die kijkt of $x groter is dan $pages - 3 toch?
Dat is erg inefficiënt, je kunt beter in die for-loop $x in 1x flink ophogen als je bij de puntjes aanbelandt.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_102110569
Het is me nu gelukt op de volgende manier;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if($pages >= 1 && $page <= $pages){
            if($page >= 2){
                $nextpage = $page+1;
                $previouspage = $page-1;
                if($page == $pages){
                    echo "<a href='overzicht&page=1'>Eerste</a> | <a href='overzicht&page=$previouspage'>Vorige</a> <strong>...<a href='overzicht&page=$page'>$page</a></strong>";
                }
                else{                
                    echo "<a href='overzicht&page=1'>Eerste</a> | <a href='overzicht&page=$previouspage'>Vorige</a> <strong>...<a href='overzicht&page=$page'>$page</a>...</strong> <a href='overzicht&page=".$nextpage."'>Volgende</a> | <a href='overzicht&page=$pages'>Laatste</a>";
                }            
            }
            else{
                $nextpage = $page+1;
                echo "<strong><a href='overzicht&page=$page'> $page</a>...</strong> <a href='overzicht&page=".$nextpage."'>Volgende</a> | <a href='overzicht&page=$pages'>Laatste</a>";
            }
        }
pi_102114805
Tijdje geleden heb ik een functie geschreven dit tot de dag van vandaag nog goed te gebruiken is. Volledig aanpasbaar door opgeven van parameters en hij poept netjes de pagina string uit.
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
<?php
/**
 * 
 * Format base_url: 'pages.php?id=1&start=%d'
 * The %d string is for the count element
 * 
 * Decoration array parameters
 * - param: Boolean $add_prevnext_text
 * - param: String $selected_format
 * - param: String $base_url_html
 * - param: String $spacer
 * - param: String $breaker
 *
 * @param String $base_url
 * @param Integer $num_items
 * @param Integer $per_page
 * @param Integer $start_item
 * @param Array $add_prevnext_text
 * @return String
 */
function GeneratePagination($base_url$num_items$per_page$start_item$decoration = array())
{
    
$add_prevnext_text false;
    
$selected_format '<b>%d</b>';
    
$base_url_html sprintf('<a href="%s">%s</a>'$base_url'%s');
    
    
$spacer            ' ';
    
$breaker        ' ... ';
    
$previous_text    'Previous';
    
$next_text        'Next';
    
    if ( 
$num_items == )
    {
        throw new 
Exception('mag geen 0 zijn want die kun je niet delen door een getal.');
    }
    
    if ( isset(
$decoration['add_prevnext_text']) === true )
    {
        
$add_prevnext_text true;
    }
    
    if ( isset(
$decoration['previous_text']) === true )
    {
        
$previous_text $decoration['previous_text'];
    }
    
    if ( isset(
$decoration['next_text']) === true )
    {
        
$next_text $decoration['next_text'];
    }
    
    if ( isset(
$decoration['selected_format']) === true )
    {
        
$selected_format $decoration['selected_format'];
    }
    
    if ( isset(
$decoration['base_url_html']) === true )
    {
        
$base_url_html sprintf($decoration['base_url_html'], $base_url'%s');
    }
    
    if ( isset(
$decoration['spacer']) === true )
    {
        
$spacer $decoration['spacer'];
    }
    
    if ( isset(
$decoration['breaker']) === true )
    {
        
$breaker $decoration['breaker'];
    }
    
    
$total_pages ceil($num_items/$per_page);

    if ( 
$total_pages == )
    {
        return 
'';
    }

    
$on_page floor($start_item $per_page) + 1;

    
$page_string '';
    if ( 
$total_pages 10 )
    {
        
$init_page_max = ( $total_pages ) ? $total_pages;

        for(
$i 1$i $init_page_max 1$i++)
        {
            
$page_string .= ( $i == $on_page ) ? sprintf($selected_format$i) : sprintf($base_url_html, ( ( $i ) * $per_page ), $i);
            if ( 
$i <  $init_page_max )
            {
                
$page_string .= $spacer;
            }
        }

        if ( 
$total_pages )
        {
            if ( 
$on_page && $on_page $total_pages )
            {
                
$page_string .= ( $on_page ) ? $breaker $spacer;

                
$init_page_min = ( $on_page ) ? $on_page 5;
                
$init_page_max = ( $on_page $total_pages ) ? $on_page $total_pages 4;

                for(
$i $init_page_min 1$i $init_page_max 2$i++)
                {
                    
$page_string .= ($i == $on_page) ? sprintf($selected_format$i) : sprintf($base_url_html, ( ( $i ) * $per_page ), $i);
                    if ( 
$i <  $init_page_max )
                    {
                        
$page_string .= $spacer;
                    }
                }

                
$page_string .= ( $on_page $total_pages ) ? $breaker $spacer;
            }
            else
            {
                
$page_string .= $breaker;
            }

            for(
$i $total_pages 2$i $total_pages 1$i++)
            {
                
$page_string .= ( $i == $on_page ) ? sprintf($selected_format$i)  : sprintf($base_url_html, ( ( $i ) * $per_page ), $i);
                
                if( 
$i $total_pages )
                {
                    
$page_string .= $spacer;
                }
            }
        }
    }
    else
    {
        for( (int) 
$i 1$i $total_pages 1$i++ )
        {
            
$page_string .= ( $i == $on_page ) ? sprintf($selected_format$i) : sprintf($base_url_html, ( $i ) * $per_page$i);
            
            if ( 
$i $total_pages )
            {
                
$page_string .= $spacer;
            }
        }
    }

    if ( 
$add_prevnext_text )
    {
        if ( 
$on_page )
        {
            
$page_string sprintf($base_url_html, ( $on_page ) * $per_page$previous_text) . ' ' $page_string;
        }

        if ( 
$on_page $total_pages )
        {
            
$page_string .= (string) ' ' sprintf($base_url_html$on_page $per_page$next_text);
        }
    }

    return 
$page_string;
}
?>


:)
  zondag 18 september 2011 @ 22:30:24 #237
85514 ralfie
!Yvan eht nioj
pi_102120910
isset($decoration['breaker']) === true

isset poept toch alleen maar true of false? waarom die === true ?
  zondag 18 september 2011 @ 23:58:08 #238
12221 Tijn
Powered by MS Paint
pi_102125902
Met een beetje geluk mag ik binnenkort een applicatie gaan schrijven die mailtjes moet importeren uit een POP3 mailbox (dmv van de imap-functies) en data moet exporteren naar iCalender voor gebruik in Google Calender en Apple iCal. Best tof lijkt me, want het zijn allebei dingen die ik nog nooit gedaan heb, maar volgens mij ook niet supermoeilijk te bouwen zijn :)
pi_102129656
quote:
5s.gif Op zondag 18 september 2011 22:30 schreef ralfie het volgende:
isset($decoration['breaker']) === true

isset poept toch alleen maar true of false? waarom die === true ?
Ik vind
1
2
3
<?php
if( functie($parameter) === true ) { }
?>
fijner lezen als
1
2
3
<?php
if( functie($parameter)) { }
?>

Maar dat is persoonlijk :P En de === i.p.v. de == die gebruikelijk is in een statement: http://www.php.net/manual/en/language.operators.comparison.php. Die controleert ook of het type hetzelfde is.
  maandag 19 september 2011 @ 08:17:27 #240
91039 mstx
2x1/2 = 1/2 x 1/2
pi_102129952
quote:
0s.gif Op maandag 19 september 2011 07:47 schreef Pakspul het volgende:
En de === i.p.v. de == die gebruikelijk is in een statement: http://www.php.net/manual/en/language.operators.comparison.php. Die controleert ook of het type hetzelfde is.
Bij isset() is dat nutteloos want die returned sowieso alleen true of false.
Op donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
pi_102129964
quote:
0s.gif Op maandag 19 september 2011 08:17 schreef mstx het volgende:

[..]

Bij isset() is dat nutteloos want die returned sowieso alleen true of false.
En dan komt reden 1 om de hoek kijken :P
  dinsdag 20 september 2011 @ 11:14:15 #242
37634 wobbel
Da WoBBeL King
pi_102173640
Ik heb een tabel met producten, en een tabel met verkocht.

Tabel "producten"
1 | Product A | 25,-
2 | Product B | 100,-
3 | Product C | 33,-

Tabel "verkocht"
1 | 25-8-2011
1 | 26-8-2011
1 | 27-8-2011
2 | 27-8-2011
2 | 28-8-2011
3 | 25-8-2011

Hoe krijg ik nu een overzicht hoeveel producten er verkocht zijn van elk?

Dus ongeveer dit:

Product A | 3x
Product B | 2x
Product C | 1x
  dinsdag 20 september 2011 @ 11:16:34 #243
91039 mstx
2x1/2 = 1/2 x 1/2
pi_102173690
SELECT producten.naam, SUM(*) FROM verkocht LEFT JOIN producten ON verkocht.pro_id=producten.pro_id GROUP BY verkocht.pro_id

zoiets?
Op donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
  dinsdag 20 september 2011 @ 11:19:16 #244
75592 GlowMouse
l'état, c'est moi
pi_102173768
SELECT producten.naam, COUNT(*)
FROM verkocht
LEFT JOIN producten ON verkocht.pro_id=producten.pro_id
GROUP BY producten.pro_id
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  dinsdag 20 september 2011 @ 11:22:32 #245
37634 wobbel
Da WoBBeL King
pi_102173845
quote:
3s.gif Op dinsdag 20 september 2011 11:19 schreef GlowMouse het volgende:
SELECT producten.naam, COUNT(*)
FROM verkocht
LEFT JOIN producten ON verkocht.pro_id=producten.pro_id
GROUP BY producten.pro_id
Bedankt :) ik was alleen vergeten het in een while loop te gooien waardoor ik maar 1 resultaat kreeg. Had al dezelfde query als jou gebouwd :')

Array
(
[Naam] => Draytek Vigor 2710N-A
[Aantal] => 1
)
Array
(
[Naam] => EnGenius M36
[Aantal] => 1
)
Array
(
[Naam] => Draytek Vigor 2820N-A
[Aantal] => 2
)
pi_102173858
quote:
3s.gif Op dinsdag 20 september 2011 11:19 schreef GlowMouse het volgende:
SELECT producten.naam, COUNT(*)
FROM verkocht
LEFT JOIN producten ON verkocht.pro_id=producten.pro_id
GROUP BY producten.pro_id
Geen COUNT(*) maar COUNT(id) doen. Bij * pakt hij de index niet mee ;)
  dinsdag 20 september 2011 @ 11:22:59 #247
91039 mstx
2x1/2 = 1/2 x 1/2
pi_102173860
quote:
3s.gif Op dinsdag 20 september 2011 11:19 schreef GlowMouse het volgende:
SELECT producten.naam, COUNT(*)
FROM verkocht
LEFT JOIN producten ON verkocht.pro_id=producten.pro_id
GROUP BY producten.pro_id
Oja het moet inderdaad een count zijn, foutje. :P
Op donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
  dinsdag 20 september 2011 @ 11:34:47 #248
75592 GlowMouse
l'état, c'est moi
pi_102174170
quote:
0s.gif Op dinsdag 20 september 2011 11:22 schreef Intrepidity het volgende:

[..]

Geen COUNT(*) maar COUNT(id) doen. Bij * pakt hij de index niet mee ;)
COUNT(*) is exact hetzelfde als COUNT(kolom die NOT NULL is)
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  dinsdag 20 september 2011 @ 11:35:20 #249
75592 GlowMouse
l'état, c'est moi
pi_102174184
quote:
0s.gif Op dinsdag 20 september 2011 11:22 schreef mstx het volgende:

[..]

Oja het moet inderdaad een count zijn, foutje. :P
En de GROUP BY is ook op een andere tabel, anders krijg je producten met 0 bestellingen niet te zien.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_102174230
quote:
0s.gif Op dinsdag 20 september 2011 11:34 schreef GlowMouse het volgende:

[..]

COUNT(*) is exact hetzelfde als COUNT(kolom die NOT NULL is)
Klopt, maar toch pakt hij een eventuele index niet mee tenzij je expliciet een kolom met index specificeert. MySQL is een hacky stuk code. Zolang je gewoon de PK in een COUNT gebruikt is er niets aan het handje :)
  dinsdag 20 september 2011 @ 11:43:45 #251
37634 wobbel
Da WoBBeL King
pi_102174413
Ik heb verkocht en producten al omgewisseld bij de LEFT JOIN, maar hoe krijg ik ook de producten waarvan er 0 zijn verkocht? :P Als ik ze omwissel staat overal 1 achter :'(
pi_102174451
Overigens is het ook een stuk sneller om de relatie om te draaien. selecten uit producten en verkocht hieraan joinen. Dit omdat er een stuk meer records in verkocht dan in producten zitten.
  dinsdag 20 september 2011 @ 11:56:49 #253
75592 GlowMouse
l'état, c'est moi
pi_102174791
quote:
0s.gif Op dinsdag 20 september 2011 11:36 schreef Intrepidity het volgende:

[..]

Klopt, maar toch pakt hij een eventuele index niet mee tenzij je expliciet een kolom met index specificeert. MySQL is een hacky stuk code. Zolang je gewoon de PK in een COUNT gebruikt is er niets aan het handje :)
Ik heb hier aardig wat mee getest en dit heb ik nog nooit gezien. Heb je een dataset, een query, en een MySQL-versienummer waarbij dit optreedt?
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_102174803
GlowMouse, hoe ben jij ooit zon MySQL-baas geworden als ik mag vragen? Ik kan zelf nog steeds niet altijd voorspellen wat het query plan wordt van bepaalde queries, is dat een kwestie van de source erop naslaan of heb je misschien een handige referentie voor me? De manual behandelt dit niet echt in-depth volgens mij :)

Concrete vraag; ik heb zoiets:

1
2
3
4
5
6
7
8
CREATE TABLE `comments` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `content_id` timestamp NULL DEFAULT NULL, -- timestamp ja :D
  *snip* hoop blabla *snip*
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `by_content_id` (`content_id`,`created_at`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

Ik wil een ordening van alle items waarnaar content_id refereert op basis van MAX(created_at), stel ik heb dus 1 bepaald content_id, hoe bepaal ik dan de "offset", d.w.z. hoeveel content_id's zijn er met lagere MAX(created_at)?

Zelf heb ik dit
1
2
3
4
5
6
7
8
9
10
11
SELECT COUNT(*)
FROM (
       SELECT 1
       FROM comments
       GROUP BY content_id
       HAVING MAX(created_at) > (
               SELECT MAX(created_at)
               FROM comments
               WHERE content_id = FROM_UNIXTIME(1316465786)
       )
) AS predecessors

Werkt prima maar ik vind het, a: spuuglelijk, b: ik heb een vermoeden dat het beter/korter/mooier moet kunnen.

EDIT: Ik vind het ook vervelend dat ik FROM_UNIXTIME / UNIX_TIMESTAMP telkens moet gebruiken, ik werk met UTC timestamps dus de conversie van/naar is onnodig en vervelend. Is er een instelling voor de default weergave als UTC stamp? (ik heb hem niet kunnen vinden)
pi_102174816
quote:
0s.gif Op dinsdag 20 september 2011 11:56 schreef GlowMouse het volgende:

[..]

Ik heb hier aardig wat mee getest en dit heb ik nog nooit gezien. Heb je een dataset, een query, en een MySQL-versienummer waarbij dit optreedt?
Ik heb nu geen tijd (@ werk), maar zal vanavond eens wat gaan testen :)
Kan idd ook wezen dat het al lang weer uit MySQL is. Het is een behoorlijke legacy-werkwijze van mij :P Stamt nog uit het 4.x tijdperk afaik.
  dinsdag 20 september 2011 @ 12:04:41 #256
75592 GlowMouse
l'état, c'est moi
pi_102174999
quote:
3s.gif Op dinsdag 20 september 2011 11:57 schreef Thomass het volgende:
GlowMouse, hoe ben jij ooit zon MySQL-baas geworden als ik mag vragen?
:o
http://shop.oreilly.com/product/9780596101718.do en http://www.mysqlperformanceblog.com/ helemaal lezen, en veel uitproberen. De meeste kennis heb ik in een maandje of 2-3 wel verworven.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_102175026
En het is ook een kwestie van veel EXPLAIN gebruiken en kijken waar je kunt optimaliseren. Nadat je dat 10 keer hebt uitgevonden doe je het volautomatisch :P
  dinsdag 20 september 2011 @ 12:09:01 #258
75592 GlowMouse
l'état, c'est moi
pi_102175123
zo?
1
2
3
4
5
6
7
SELECT COUNT(DISTINCT content_id)
FROM comments
WHERE created_at > (
        SELECT MAX(created_at)
        FROM comments
        WHERE content_id = FROM_UNIXTIME(1316465786)
)
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  dinsdag 20 september 2011 @ 12:14:37 #259
75592 GlowMouse
l'état, c'est moi
pi_102175287
Volgens mij bedoel je op regel 6 een < ipv een >. Voor een < kun je zoiets doen:
1
2
3
4
SELECT COUNT(DISTINCT c1.content_id)
FROM comments c1
LEFT JOIN c2 ON(c1.content_id=c2.content_id AND c2.created_at>[subquery eerst uitvoeren en het resultaat hier zetten])
WHERE c2.content_id IS NULL
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  dinsdag 20 september 2011 @ 12:17:36 #260
75592 GlowMouse
l'état, c'est moi
pi_102175366
quote:
0s.gif Op dinsdag 20 september 2011 12:04 schreef GlowMouse het volgende:

[..]

:o
http://shop.oreilly.com/product/9780596101718.do en http://www.mysqlperformanceblog.com/ helemaal lezen, en veel uitproberen. De meeste kennis heb ik in een maandje of 2-3 wel verworven.
Deel 3 komt eraan: http://www.xaprb.com/blog(...)mysql-third-edition/
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  dinsdag 20 september 2011 @ 12:51:54 #261
25889 Sitethief
Fulltime Flapdrol
pi_102176356
Is EXPLAIN ook goed in te zetten als je een PDO class hebt opgebouwd waarmee je al je queries afhandelt?
Stroek: Sitethief, die is heel groot en sterk :Y.
Faat: *zucht* zoals gewoonlijk hoor Sitethief weer in de bocht &gt;:)
pi_102176659
quote:
0s.gif Op dinsdag 20 september 2011 12:51 schreef Sitethief het volgende:
Is EXPLAIN ook goed in te zetten als je een PDO class hebt opgebouwd waarmee je al je queries afhandelt?
Binnen je applicatie heb je er niet zo veel aan afaik. Je gebruikt het direct op MySQL om je queries te optimaliseren voordat je ze in je applicatie gaat gebruiken.
pi_102176937
quote:
0s.gif Op dinsdag 20 september 2011 12:14 schreef GlowMouse het volgende:
Volgens mij bedoel je op regel 6 een < ipv een >. Voor een < kun je zoiets doen:
[ code verwijderd ]

Het is verwarrend ja maar ik bedoelde wel een groter dan. Item met meest recent comment heeft 0 predecessors, t item met het op-ena-meest recente comment heeft 1 predecessor enz.

Bedankt i.i.g. voor je bijdrage, maar ik heb wel de indruk dat het meer werk doet dan mijn oplossing. Kan dat kloppen?

Als ik zo een tabelletje bouw en er wat data in prop:
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
mysql> show create table comments2\G
*************************** 1. row ***************************
       Table: comments2
Create Table: CREATE TABLE `comments2` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `content_id` int(10) unsigned DEFAULT NULL,
  `created_at` int(10) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  KEY `by_content_id` (`content_id`,`created_at`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

mysql> select count(*) from comments2;
+----------+
| count(*) |
+----------+
|  2359296 |
+----------+
1 row in set (0.02 sec)

mysql> select content_id, max(created_at) from comments2 group by content_id order by max(created_at) asc;
+------------+-----------------+
| content_id | max(created_at) |
+------------+-----------------+
|          1 |               3 |
|          2 |               6 |
*snip*
|    2654208 |         5308416 |
|    3981312 |         7962624 |
+------------+-----------------+
95 rows in set (0.04 sec)

Dan krijg ik bij jouw resp. mijn query dit (subquery apart doen en invullen maakt geen verschil)
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
mysql> SELECT COUNT(DISTINCT content_id)
    -> FROM comments2
    -> WHERE created_at > (
    ->         SELECT MAX(created_at)
    ->         FROM comments2
    ->         WHERE content_id = 2654208
    -> );
+----------------------------+
| COUNT(DISTINCT content_id) |
+----------------------------+
|                          1 |
+----------------------------+
1 row in set (1.58 sec)

mysql> SELECT COUNT(*)
    -> FROM (
    ->   SELECT 1
    ->   FROM comments2
    ->   GROUP BY content_id
    ->   HAVING MAX(created_at) > (
    ->     SELECT MAX(created_at)
    ->     FROM comments2
    ->     WHERE content_id = 2654208
    ->   )
    -> ) AS predecessors;
+----------+
| COUNT(*) |
+----------+
|        1 |
+----------+
1 row in set (0.01 sec)

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
mysql> explain SELECT COUNT(*)
    -> FROM (
    ->   SELECT 1
    ->   FROM comments2
    ->   GROUP BY content_id
    ->   HAVING MAX(created_at) > (
    ->     SELECT MAX(created_at)
    ->     FROM comments2
    ->     WHERE content_id = 2654208
    ->   )
    -> ) AS predecessors;
+----+-------------+-----------+-------+---------------+---------------+---------+------+------+------------------------------+
| id | select_type | table     | type  | possible_keys | key           | key_len | ref  | rows | Extra                        |
+----+-------------+-----------+-------+---------------+---------------+---------+------+------+------------------------------+
|  1 | PRIMARY     | NULL      | NULL  | NULL          | NULL          | NULL    | NULL | NULL | Select tables optimized away |
|  2 | DERIVED     | comments2 | range | NULL          | by_content_id | 5       | NULL |   95 | Using index for group-by     |
|  3 | SUBQUERY    | NULL      | NULL  | NULL          | NULL          | NULL    | NULL | NULL | Select tables optimized away |
+----+-------------+-----------+-------+---------------+---------------+---------+------+------+------------------------------+
3 rows in set (0.01 sec)

mysql> explain SELECT COUNT(DISTINCT content_id)
    -> FROM comments2
    -> WHERE created_at > (
    ->         SELECT MAX(created_at)
    ->         FROM comments2
    ->         WHERE content_id = 2654208
    -> );
+----+-------------+-----------+-------+---------------+---------------+---------+------+---------+------------------------------+
| id | select_type | table     | type  | possible_keys | key           | key_len | ref  | rows    | Extra                        |
+----+-------------+-----------+-------+---------------+---------------+---------+------+---------+------------------------------+
|  1 | PRIMARY     | comments2 | index | NULL          | by_content_id | 9       | NULL | 2359296 | Using where; Using index     |
|  2 | SUBQUERY    | NULL      | NULL  | NULL          | NULL          | NULL    | NULL |    NULL | Select tables optimized away |
+----+-------------+-----------+-------+---------------+---------------+---------+------+---------+------------------------------+
2 rows in set (0.00 sec)
  dinsdag 20 september 2011 @ 13:11:18 #264
25889 Sitethief
Fulltime Flapdrol
pi_102176964
Hmm, ik doe mijn JOINS toch bijna alleen op de resultset, of daar nou heel veel snelheidsverbetering in zit vraag ik me af.
Stroek: Sitethief, die is heel groot en sterk :Y.
Faat: *zucht* zoals gewoonlijk hoor Sitethief weer in de bocht &gt;:)
  dinsdag 20 september 2011 @ 14:11:33 #265
75592 GlowMouse
l'état, c'est moi
pi_102178738
Mijn query zou bij weinig resultaten idd sneller draaien als er ook een index stond op (created_at,comment_id).
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_102226024
quote:
0s.gif Op dinsdag 20 september 2011 12:51 schreef Sitethief het volgende:
Is EXPLAIN ook goed in te zetten als je een PDO class hebt opgebouwd waarmee je al je queries afhandelt?
quote:
0s.gif Op dinsdag 20 september 2011 13:00 schreef Intrepidity het volgende:

[..]

Binnen je applicatie heb je er niet zo veel aan afaik. Je gebruikt het direct op MySQL om je queries te optimaliseren voordat je ze in je applicatie gaat gebruiken.
Dat hangt er maar net vanaf. Wij werken hier bv aan een behoorlijk grote (web)applicatie met enkele duizenden query's waarvan ook een flink deel automatisch gegenereerd is. We hebben pagina's met meer dan 100 query's en dan is het nogal fijn als je niet alles met de hand hoeft na te lopen. We hebben daarom op de devservers gewoon een analyser meelopen die voor iedere query ook een explain uitvoert en deze analyseert. Als het systeem denkt dat het beter kan zet hij netjes een warnings icoontje bij onze query log die onder iedere pagina staat met de values, tijd etc. Klik je er op krijg je de explain, backtraces en nog veel meer debug informatie :)
  woensdag 21 september 2011 @ 17:40:13 #267
75592 GlowMouse
l'état, c'est moi
pi_102226322
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_102226594
Nosql
"Op Fok! val je pas op als je normaal bent." -mazaru
  woensdag 21 september 2011 @ 17:50:55 #269
75592 GlowMouse
l'état, c'est moi
pi_102226662
quote:
3s.gif Op woensdag 21 september 2011 17:48 schreef Flepke het volgende:
Nosql
HandlerSocket
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_102227136
quote:
Hmm een automatische tool die een samenvatting op iedere pagina zet vs een losse tool die je handmatig moet draaien, eerst een netwerk dump maken en dan analyseren. Ik weet het wel :P De nuttige informatie die er uit komt is vrijwel hetzelfde.

Die tool heeft imo meer zn nut om op productieservers te draaien zodat je een snapshot kan nemen over vele requests en zo de zware query's er uit te vissen, niet voor development :)

quote:
3s.gif Op woensdag 21 september 2011 17:48 schreef Flepke het volgende:
Nosql
Je klinkt imo als een random persoon die gewoon de laatste hype na blaat.
  woensdag 21 september 2011 @ 18:18:08 #271
75592 GlowMouse
l'état, c'est moi
pi_102227626
EXPLAIN is in het begin nog wel handig om de echte ondingen eruit te vissen. Je moet dan bij development je database al wel goed vullen. Bij draaiende servers is hij met name handig omdat hij ook relatief snelle queries eruit vist die heel vaak draaien.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_102227809
Klopt, je hebt uiteraard data nodig. Wij hebben gewoon een paar maanden oude (geanonimiseerde) kopie van productie draaien.
  woensdag 21 september 2011 @ 21:20:51 #273
37634 wobbel
Da WoBBeL King
pi_102237474
Ik heb een hele domme, maar ik ben moe en komer niet meer op :P

SELECT *
FROM producten

en dan waarvan 'prijs' 15 EN/OF 25 is

Ik wil een array krijgen met alle producten die 15 EN/OF 25 euro zijn :P
  woensdag 21 september 2011 @ 21:24:44 #274
12221 Tijn
Powered by MS Paint
pi_102237700
Wat is het verschil tussen en/of en gewoon of?

1SELECT * FROM `producten` WHERE `prijs` = 15 OR `prijs` = 25;
  woensdag 21 september 2011 @ 21:26:46 #275
37634 wobbel
Da WoBBeL King
pi_102237803
:') dat bedoel ik...ik moet slapen :P

Ik doe trouwens altijd WHERE (veld = 'waarde' OR veld = 'waarde2') met haakjes. Moet niet uitmaken toch? :P
pi_102237936
Maakt niet uit, zolang je maar consistent blijft in gebruik ervan (wel zo netjes).
  woensdag 21 september 2011 @ 21:30:06 #277
37634 wobbel
Da WoBBeL King
pi_102237979
quote:
7s.gif Op woensdag 21 september 2011 21:29 schreef Diabox het volgende:
Maakt niet uit, zolang je maar consistent blijft in gebruik ervan (wel zo netjes).
Dat ben ik altijd wel gelukkig :) niks vervelender dan iemand anders z'n programmeerwerk aanpassen en dan elke keer andere zaken tegenkomen. Lastig te lezen voor een eventuele opvolger van mijn werk ;)
  woensdag 21 september 2011 @ 23:45:04 #278
298746 Dalando
18, niet meer gefrustreerd
pi_102246356
Ik heb een getal. 1940239315. En ik moet het leesbaar maken via PHP, dus 1.940.239.315 ofzo. Hoe?
Spel-, taal- en grammaticafouten voorbehouden.
994a040db3f025e25771e045468fc121
  woensdag 21 september 2011 @ 23:52:35 #279
284294 BBQSausage
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
pi_102246706
quote:
7s.gif Op woensdag 21 september 2011 23:45 schreef Dalando het volgende:
Ik heb een getal. 1940239315. En ik moet het leesbaar maken via PHP, dus 1.940.239.315 ofzo. Hoe?
number_format();
  woensdag 21 september 2011 @ 23:58:42 #280
298746 Dalando
18, niet meer gefrustreerd
pi_102246949
quote:
14s.gif Op woensdag 21 september 2011 23:52 schreef BBQSausage het volgende:

[..]

number_format();
quote:
7s.gif Op woensdag 21 september 2011 23:58 schreef Dalando het volgende:

[..]

_O_
Spel-, taal- en grammaticafouten voorbehouden.
994a040db3f025e25771e045468fc121
  donderdag 22 september 2011 @ 09:33:25 #281
58834 Catbert
The evil HR Director.
pi_102252120
Helpt ook als je weet waarop je moet zoeken, formatting dus ;)
"[...] a large number of the teenagers claiming Asperger's are, in fact, merely dicks."
  donderdag 22 september 2011 @ 10:03:17 #282
37634 wobbel
Da WoBBeL King
pi_102252739
- dom geneuzel, niet gelezen -
pi_102263752
Weet iemand hoe ik het volgende vrij simpel kan maken?

Ik heb 1 database met een paar velden.

gebruiker, type, naam en inhoud.

nu wil ik deze tabel uitlezen maar tegelijk in de zelfde query bepalen of er van de naam meerdere in het tabel voorkomen met de gegeven where

voorbeeld:
1
2
3
4
5
SELECT count(t2.naam) AS totaal,
              t1.*
FROM t1
LEFT JOIN t2 ON t1.naam = t2.naam
WHERE gebruiker = 1

inhoud van database
1
2
3
4
5
6
1 - fruit - appels - aard 1
1 - fruit - appels - aard 2
1 - fruit - appels - aard 3
1 - fruit - bananen - chiqita
1 - fruit - peren - peer
1 - fruit - kiwi - kiwi

nu zie je dat appels er 3x in voorkomt met gebruikers id 1 dus wil ik als uitkomst van de query het volgende hebben.

1
2
3
4
5
6
1 - fruit - appels - aard 1 - 3
1 - fruit - appels - aard 2 - 3
1 - fruit - appels - aard 3 - 3
1 - fruit - bananen - chiqita - 1
1 - fruit - peren - peer - 1
1 - fruit - kiwi - kiwi - 1

Hoe krijg ik dit voor elkaar? zit er al een tijd mee te pielen, ook geprobeerd met FROM t1, t1 t2

Iemand?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  donderdag 22 september 2011 @ 16:36:42 #284
75592 GlowMouse
l'état, c'est moi
pi_102263906
SELECT t1.*,count(*) AS totaal
FROM t1
JOIN t2 ON (t1.naam = t2.naam AND t1.gebruiker = t2.gebruiker)
GROUP BY t1.gebruiker,t1.type,t1.naam
WHERE t1.gebruiker = 1
ORDER BY t1.gebruiker,t1.type,t1.naam
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_102269570
Duidelijk, die gaat in de verzameldoos! :)
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  vrijdag 23 september 2011 @ 10:25:43 #286
267443 Cue_
Cuecumbergirl
pi_102291243
Vraagje

Ik heb een connectie naar mijn database in mijn command prompt. Voer daar dus leuk mijn qrys uit en alles. Maar hoe krijg ik de output die ik daar heb naar bv excel?
  vrijdag 23 september 2011 @ 10:32:30 #287
12221 Tijn
Powered by MS Paint
  vrijdag 23 september 2011 @ 10:35:33 #288
267443 Cue_
Cuecumbergirl
pi_102291474
Is leuk bij kleine lijstjes, maar bij grote bv?
Geen leuke command voor?
  vrijdag 23 september 2011 @ 10:38:52 #289
12221 Tijn
Powered by MS Paint
pi_102291545
Ik maak zelf meestal een CSV-file als het nodig is om data in Excel te importeren. fputcsv() kan je daarbij helpen, maar je zult er wel een klein scriptje omheen moeten schrijven om de juiste data in de juiste file te krijgen.
  vrijdag 23 september 2011 @ 10:47:34 #290
267443 Cue_
Cuecumbergirl
pi_102291746
oke, via php script doen dus. :)
pi_102291853
quote:
0s.gif Op vrijdag 23 september 2011 10:47 schreef Cue_ het volgende:
oke, via php script doen dus. :)
Er zijn ook PHP classes voor

http://phpexcel.codeplex.com/


of simpel met de juiste headers

http://forums.digitalpoint.com/showthread.php?t=60681
  vrijdag 23 september 2011 @ 11:08:08 #292
267443 Cue_
Cuecumbergirl
pi_102292315
tnx O+
pi_102292914
Heeft iemand een simpel regexje liggen die het volgende doet?

ik heb een blog url
http://www.blog.nl/mijnblog/123-dit-is-mijn-titel.html

nu wil ik alleen het cijfer gedeelte van 123 ophalen en niets meer en niets minder. Nu kan ik natuurlijk opzoek gaan naar de eerste - maar wil dit eigenlijk liever met een regexje doen :P en zoals standaard lukt het mij niet.

Regexje net gedeleted door overschrijven van pagina :{ iemand een linkje/voorbeeldje?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_102295616
quote:
0s.gif Op vrijdag 23 september 2011 11:30 schreef Chandler het volgende:
Heeft iemand een simpel regexje liggen die het volgende doet?

ik heb een blog url
http://www.blog.nl/mijnblog/123-dit-is-mijn-titel.html

nu wil ik alleen het cijfer gedeelte van 123 ophalen en niets meer en niets minder. Nu kan ik natuurlijk opzoek gaan naar de eerste - maar wil dit eigenlijk liever met een regexje doen :P en zoals standaard lukt het mij niet.

Regexje net gedeleted door overschrijven van pagina :{ iemand een linkje/voorbeeldje?
In woorden: match een forward slash, dan een of meer getallen, dan een of meer niet-forward slashes, dan het einde van de string.

Lukt het daarmee?
  vrijdag 23 september 2011 @ 13:01:11 #295
4159 GI
Nee ik heet geen JOE
  vrijdag 23 september 2011 @ 13:02:41 #296
91039 mstx
2x1/2 = 1/2 x 1/2
pi_102295778
quote:
0s.gif Op vrijdag 23 september 2011 11:30 schreef Chandler het volgende:
Nu kan ik natuurlijk opzoek gaan naar de eerste - maar wil dit eigenlijk liever met een regexje doen :P
Waarom?
Op donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
pi_102296061
quote:
0s.gif Op vrijdag 23 september 2011 11:30 schreef Chandler het volgende:
Heeft iemand een simpel regexje liggen die het volgende doet?

ik heb een blog url
http://www.blog.nl/mijnblog/123-dit-is-mijn-titel.html

nu wil ik alleen het cijfer gedeelte van 123 ophalen en niets meer en niets minder. Nu kan ik natuurlijk opzoek gaan naar de eerste - maar wil dit eigenlijk liever met een regexje doen :P en zoals standaard lukt het mij niet.

Regexje net gedeleted door overschrijven van pagina :{ iemand een linkje/voorbeeldje?
gebruik strpos om de eerste - (streepje) op te zoeken en substr dan vanaf aantal karakters dat je URL lang is tot de positie van het eerste streepje.
  vrijdag 23 september 2011 @ 13:29:04 #298
25889 Sitethief
Fulltime Flapdrol
pi_102296555
Iemand ervaring met PDO + InnoDB? Insert queries die met PDO + MyISAM goed liepen doen het met InnoDB niet via PDO, wel direct in de database. Kheb al flink gezocht naar informatie hier over maar kan niet echt specifiek deze case vinden.

Bij Inserts via PDO met InnoDB met gebruik van BindParam() gaat het mis. BindParam() geeft wél true terug, en debugDumpParams () geeft ook aan dat de parameters ook gebonden zijn. Maar er wordt gewoon ':name' ipv 'NaamVanObject' geinsert. Iets wat nog vervelender is als ':key' als string ipv als int in een foreign key veld geinsert wordt (of iig een poging).

Ik heb geen zin om de functionaliteiten van PDO volledig te om zeilen alleen maar omdat Innodb hier blijkbaar niet goed mee om gaat.
Stroek: Sitethief, die is heel groot en sterk :Y.
Faat: *zucht* zoals gewoonlijk hoor Sitethief weer in de bocht &gt;:)
  vrijdag 23 september 2011 @ 13:49:50 #299
4159 GI
Nee ik heet geen JOE
pi_102297141
quote:
0s.gif Op vrijdag 23 september 2011 13:13 schreef Pakspul het volgende:

[..]

gebruik strpos om de eerste - (streepje) op te zoeken en substr dan vanaf aantal karakters dat je URL lang is tot de positie van het eerste streepje.
Of een implode van de url op / en dan het laatste resultaat imploden op - en dan de eerste pakken ?
pi_102297549
quote:
3s.gif Op vrijdag 23 september 2011 13:49 schreef GI het volgende:

[..]

Of een implode van de url op / en dan het laatste resultaat imploden op - en dan de eerste pakken ?
1
2
3
<?php
current
(explode("-"end(explode("/""http://www.blog.nl/mijnblog/123-dit-is-mijn-titel.html"))));
?>

Zeer leesbaar uiteraard
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')