abonnement Unibet Coolblue Bitvavo
pi_40945668
Is de tijd in timestamp formaat?
pi_41004095
Ik heb een hele simpele tabel, met daarin een datum-kolom. Soms zijn de datums in die kolom hetzelfde, maar ik wil weten hoeveel verschillende datums er zijn.

Voorbeeld:
20-8-2006
19-8-2006
20-8-2006
Totaal moet zijn 2.

Ik heb het al geprobeerd met GROUP BY datum (uitkomst=1) en DISTINCT (uitkomst=3).

Wat is de juiste query, want ik zie het ff niet meer
pi_41004153
@Piles

SELECT COUNT(datum) AS aantal_unieke_data FROM data GROUP BY datum

Zorg er wel voor dat je een index hebt op de kolom met data
  zondag 20 augustus 2006 @ 18:04:51 #54
120139 freiss
Hertog Jan :9~
pi_41004265
SELECT COUNT(DISTINCT(datum)) FROM `tabel` ?
HJ 14-punt-gift.
Lijst met rukmateriaal!
pi_41004636
quote:
Op zondag 20 augustus 2006 18:04 schreef freiss het volgende:
SELECT COUNT(DISTINCT(datum)) FROM `tabel` ?
Werkt prima
  zondag 20 augustus 2006 @ 22:25:06 #56
73232 De_Hertog
Aut bibat, aut abeat
pi_41012997
Ik kom er niet meer uit, en volgens mij zit hier wel iemand die me kan helpen. Ik heb, op een windows server, mysql server 5.0 draaien, en moest daarom mijn php upgraden naar 5+ (5.1.5, gewoon van de site gedownload). Nu moet je dan volgens verschillende sites, o.a. deze, een aantal stappen uitvoeren omdat MySQL niet meer rechtstreeks in php zit:
-c:\php in je path zetten en opnieuw opstarten
-c:\php\ext in je extensions_dir zetten in php.ini
-extension=php_mysql.dll aanzetten in php.ini

Het idee is: php_mysql.dll staat in c:\php\ext, aangegeven door die extensions_dir, en lybmysql.dll staat in je path (in dit geval óók c:\php\ext). Dat heb ik allebei gecontroleerd, en dat staat goed. Maar ik krijg nog steeds deze error: Fatal error: Call to undefined function mysql_connect() in ...\test.php on line 6

En het vervelende is, als ik op die foutmelding zoek krijg ik pagina's lang bovenstaande instructie, met de tekst 'nu zou het opgelost moeten zijn'. En helaas is dat dus niet zo.. Weet iemand wat ik over het hoofd zou kunnen zien?
Mary had a little lamb
Then Mary had dessert
pi_41014068
Was ik weer
Ik ben (nog steeds) niet goed met regex, dus ik hoop dat iemand zin heeft ze even voor te kauwen. Ik ben al een uur bezig met wat simpele checks, maar ik het gewoon niet
Ik heb nodig:
- datum check (dd-mm-yyyy) (kan misschien ook in 1 keer met checkdate()? )
- tijd check (uu:mm)
- een bedrag (tussen de 0 en 1000, mag met 2 decimalen (punt of komma))

Ik hoop dat iemand mij dit even voor kan doen (of een goede uitleg met veel voorbeelden

Alvast enorm bedankt
pi_41014776
\d{1,2}-\d{1,2}-\d{1,2}

\d{1,2}:\d{1,2}

(\d{1,4}[\.\,]?\d{0,2})

Die laatste is lelijk en klopt niet helemaal.

datumcheck: (al het al niet automatisch kan ie niet beter geexplode worden, en de 3 waarden ge'if'ed worden of ie tussen 0-31, 0-12 zit? Idem voor tijd.
pi_41014850
Dat is mss een beter idee. Ik zal morgen zelf eens een functie schrijven
pi_41016221
\d{1,2}-\d{1,2}-\d{2,4}

\d{1,2}:\d{1,2}

(\d+([\.\,]\d{0,2})?)

Iets aangepast. Je kunt je nog afvragen of je bij datum en tijd ook de kortere notaties wilt toestaan, en hoe je dat bij een jaartal gaat oplossen.

Getal kan nu ook groter dan 1000 zijn. Als je daar de + vervangt door {1-3} zijn getallen tot 1000 mogelijk.
  maandag 21 augustus 2006 @ 11:06:04 #61
85514 ralfie
!Yvan eht nioj
pi_41023643
kijk ook eens naar de ingebouwde datum parser van php, strtotime
pi_41044630
Hallo daar! Ik ben weer bezig met de top 100 in PHP en ik kom er nog steeds niet uit. Ik heb de tabel opnieuw aangemaakt.
quote:
tabel 'top100' met volgende rows:

id (uniek)
userid
datum
artist
titel
weken
vorigeweek
type
label
Nu ben ik bezig met 100 rows aanmaken, met iedere keer andere 'id' (van 1 t/m 100). Ik wil via ons CMS heel gemakkelijk deze top 100 in een keer kunnen wijzigen. Dus 100 rijen onder elkaar met invulveldjes voor:

- Artist
- Titel
- Aantal weken
- Vorige week
- Platenlabel

En dat dus 100 keer onder elkaar, like:

1. [input voor artist met als value="" de huidige natuurlijk] [titel] [aantal weken] [type (stijger of daler)] [platenlabel]
2. [input voor artist met als value="" de huidige natuurlijk] [titel] [aantal weken] [type (stijger of daler)] [platenlabel]
3. [input voor artist met als value="" de huidige natuurlijk] [titel] [aantal weken] [type (stijger of daler)] [platenlabel]

Ik heb nu het volgende voor in het CMS, maar hoe fix ik het verder qua UPDATE via PHP in SQL, want ik kan normaal gesproken 100 keer een query hebben voor update, maar dat lijkt me niet zo okeger.
quote:
<?
$query = mysql_query("SELECT * FROM top100 ORDER BY 'id' ASC");
$result = mysql_num_rows($query);
if(!$result){
echo "<tr><td colspan='6'>Geen ingave.</td></tr>";
}
else {
$i = 0;
while($object = mysql_fetch_object($query)){
$i++;
?>
<tr>
<td><? echo $i ?></td><input type="hidden" name="id<? echo $i ?>" value="<? echo $object->id ?>">
<td><input type="text" name="artist<? echo $object->id ?>" value="<? echo $object->artist ?>" size="10"></td>
<td><input type="text" name="titel<? echo $object->id ?>" value="<? echo $object->titel ?>" size="10"></td>
<td><input type="text" name="weken<? echo $object->id ?>" value="<? echo $object->weken ?>" size="2"></td>
<td>
<select name="type<? echo $object->id ?>">
<option value=""></option>
<option value="stijger" <? if($object->type == "stijger"){ ?> selected="selected" <? } ?>>stijger</option>
<option value="daler" <? if($object->type == "daler"){ ?> selected="selected" <? } ?>>daler</option>
</select>
</td>
<td><input type="text" name="label<? echo $object->id ?>" value="<? echo $object->label ?>" size="5"></td>
</tr>
<?
}
}
?>
dit
is
mijn
signature.
pi_41045504
quote:
Op maandag 21 augustus 2006 22:29 schreef RiderXXX het volgende:
[...veel regels...]
Zou het niet veel mooier zijn om het zo te doen:
- laat alle regels zien, maar read-only
- op elke regel een edit knop.
- de edit knop verandert m.b.v. javascript de regel in edit veldjes.
- de wijzigingen van die regel kan je m.b.v. ajax opslaan.
Dan voorkom je ook dat iemand 100 regels voor niets heeft zitten invoeren als er iets fout gaat.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_41045639
quote:
Op maandag 21 augustus 2006 23:00 schreef SuperRembo het volgende:

[..]

Zou het niet veel mooier zijn om het zo te doen:
- laat alle regels zien, maar read-only
- op elke regel een edit knop.
- de edit knop verandert m.b.v. javascript de regel in edit veldjes.
- de wijzigingen van die regel kan je m.b.v. ajax opslaan.
Dan voorkom je ook dat iemand 100 regels voor niets heeft zitten invoeren als er iets fout gaat.
haha wel een goeie ja, maar dan doet diegene het maar mooi opnieuw, aangezien dan alles gewoon wel opgeslagen is.. het is UPDATE en in die tekstveldjes is er een value="" met de huidige invoer wat in de DB staat opgeslagen.. dus erg veel moeite kost het niet..
dit
is
mijn
signature.
pi_41057857
klein vraagje:
wat is een goede manier om een username + password te controleren maar op zo'n manier dat je ook nog kan aangeven waar het fout gaat
ik zat zelf aan het volgende te denken:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$user
= addslashes(strip_tags($_POST['Username']));
$pass = md5($_POST['Password']);

$Ucheck = mysql_query("SELECT * FROM `users` WHERE `Username` = '".$user."'");
if(
mysql_num_rows($Ucheck) == 1)
{
$check = mysql_query("SELECT * FROM `users` WHERE `Username` = '".$user."' AND `Password` = '".$pass."'");
ifif(mysql_num_rows($check) == 1)
{
...
}
}
?>


dit lijkt me eigenlijk niet echt efficent aangezien ik eigenlijk net zo goed alleen de 2de query hoef uit te voeren,

iemand?
  dinsdag 22 augustus 2006 @ 13:07:27 #66
75555 t-x-m
. : : T-X-M : : . .
pi_41059132
1
2
3
4
5
6
7
<?php
$user
= mysql_real_escape_string(trim($_POST['Username']));
$pass = md5(trim($_POST['Password']));
$check = mysql_query("SELECT * FROM `users` WHERE `Username` = '".$user."' AND `Password` = '".$pass."'");
if(
mysql_num_rows($check) == 1)  print "succesvol ingelogd!";
   else print
"Gebruikersnaam of wachtwoord incorrect!";
?>

Mysql_real_escape_string werkt prima tegen sql-injecties. Verder werk ik altijd even de (perongeluk) ingetypede spaties weg dmv trim
Blijf van mn UserIcon af Admins :@
pi_41060559
quote:
Op dinsdag 22 augustus 2006 13:07 schreef t-x-m het volgende:

[ code verwijderd ]

Mysql_real_escape_string werkt prima tegen sql-injecties. Verder werk ik altijd even de (perongeluk) ingetypede spaties weg dmv trim
zo ver was ik nog niet, en echt bang voor injections ben ik niet
maar jij controleert in 1x de gebruikers naam + wachtwoord, dit wil ik dus gescheiden hebben zodat ik als bijvoorbeeld de gebruikers naam verkeerd is ik dit kan aangeven op het aanmeld formulier

wat mij ook een mogelijke oplossing leek is eerst een query met een check op de username en vervolgens die resultaten nog een keer checken maar dan op wachtwoord..

[ Bericht 11% gewijzigd door mschol op 22-08-2006 14:01:19 ]
pi_41062033
quote:
Op dinsdag 22 augustus 2006 13:54 schreef mschol het volgende:

[..]

zo ver was ik nog niet, en echt bang voor injections ben ik niet
Effe on a side note, SQL injection is de term voor (vaak kwaadaardige) truukjes waarmee je query beïnvloed kan worden. Stel je hebt een veld waar je een gebruikersnaam moet invullen in een formulier, als je dit formulier submit dan wordt er door middel van een MySQL query gekeken of die gebruikersnaam voorkomt in een database. Als je deze query niet beveiligt tegen SQL injection dan kan iemand door middel van dat simpele invoerveldje je hele database beïnvloeden, of erger, deleten. En dat gebeurt op Internet hoor.

Kijk ook eens op http://nl2.php.net/manual(...)al-escape-string.php , en dan vooral bij voorbeeldje 3. Zo'n soortgelijke functie (als dat quote_smart() in het voorbeeld) gebruik ik bij elke PHP applicatie waar ook maar iets van MySQL queries in zit.

En om effe op je vraag terug te komen

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?
function quote_smart($value)
{
   // Stripslashes
   if (get_magic_quotes_gpc()) {
       $value = stripslashes($value);
   }
   // Quote if not a number or a numeric string
   if (!is_numeric($value)) {
       $value = "'" . mysql_real_escape_string($value) . "'";
   }
   return $value;
}

if($_POST['action']=='login'){

 if( mysql_result(mysql_query(" SELECT count(*) FROM gebruikers WHERE gebruikersnaam='".quote_smart($_POST['gebruikersnaam'])."' AND wachtwoord='".quote_smart($_POST['wachtwoord'])."' "),0,0) ) {
 echo 'ingelogd';
 }else{
 echo 'foutieve combinatie gebruikersnaam/wachtwoord';
 }

}
?>
  dinsdag 22 augustus 2006 @ 14:49:31 #69
85514 ralfie
!Yvan eht nioj
pi_41062290
maak gewoon een query voor de username en trek daar het wachtwoord uit. dat wachtwoord kun je dan in php controleren, en als de username fout is failed de query.


Je kunt natuurlijk ook meteen alle data eruit trekken die je wilt gebruiken, en aan de hand van het wel of niet kloppen van het wachtwoord dit gebruiken of niet (mits de hoeveelheid data niet teveel is).

[ Bericht 55% gewijzigd door ralfie op 22-08-2006 15:01:29 ]
pi_41062371
quote:
Op dinsdag 22 augustus 2006 14:49 schreef ralfie het volgende:

[..]

maak gewoon een query voor de username en trek daar het wachtwoord uit. dat wachtwoord kun je dan in php controleren, en als de username fout is failed de query.

dat ik daar niet eerder op gekomen ben

thnx in iedereval voor dit heldere licht
en ik weet wat SQL injectens zijn
en ik ben niet echt bang dat me dat overkomt simpel weg door het feit dat je maar eerst eens de url moet gaan proberen te raden (as in: Succes, lukt je nooit)
En ik trek toch niet veel volk naar me site
  dinsdag 22 augustus 2006 @ 15:01:13 #71
85514 ralfie
!Yvan eht nioj
pi_41062553
btw: weet iemand een makkelijke manier om in mysql het aantal hits in een tabel van elke rij bij te houden? zijn hier alternatieven voor behalve met elke hit-query van de geraakte rijen een kolom 'hits' met 1 op te hogen?

Ik wil namelijk een tabel met plaatjes maken, en dan van elk plaatje bijhouden hoe vaak deze opgevraagd wordt zodat ik later kan bepalen welke plaatjes ik weg kan doen omdat niemand ze aanklikt. Het lijkt me dat er toch wel standaard iets in mysql ingebouwd zit hiervoor?

[ Bericht 97% gewijzigd door ralfie op 22-08-2006 15:12:14 ]
pi_41063472
Je kunt in MySQL queries een paar ingebouwde functies gebruiken. sum() is bijvoorbeeld voor het totaal van alle kolommen op te tellen, en je hebt ook avg() voor bijvoorbeeld het gemiddelde van alle kolommen in een tabel te berekenen. Op http://www.tizag.com/mysqlTutorial/ staan deze functies vrij goed uitgelegd.

Dus in jouw voorbeeld, als je van een hele tabel van alle records het aantal hits wil optellen, doe je gewoon het volgende:

SELECT sum(hits) FROM jouwtabel
pi_41064029
quote:
Op dinsdag 22 augustus 2006 12:27 schreef mschol het volgende:
klein vraagje:
wat is een goede manier om een username + password te controleren maar op zo'n manier dat je ook nog kan aangeven waar het fout gaat
ik zat zelf aan het volgende te denken:
[ code verwijderd ]

dit lijkt me eigenlijk niet echt efficent aangezien ik eigenlijk net zo goed alleen de 2de query hoef uit te voeren,

iemand?
Heel simpel: niet doen. Hoe meer informatie je terug geeft, hoe makkelijker is om te hacken. Als je eerst een melding krijgt dat de gebruiker niet bestaat, en dan na een tijdje random usernames proberen krijg je de melding dat het wachtwoord niet bestaat, dan weet je dus dat de username klopt. Dan hoef je daarna alleen nog het wachtwoord te raden. Het is veiliger om alleen de melding te geven dat de gebruikersnaam of het wachtwoord niet correct is.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_41064679
quote:
Op dinsdag 22 augustus 2006 15:52 schreef SuperRembo het volgende:

[..]

Heel simpel: niet doen. Hoe meer informatie je terug geeft, hoe makkelijker is om te hacken. Als je eerst een melding krijgt dat de gebruiker niet bestaat, en dan na een tijdje random usernames proberen krijg je de melding dat het wachtwoord niet bestaat, dan weet je dus dat de username klopt. Dan hoef je daarna alleen nog het wachtwoord te raden. Het is veiliger om alleen de melding te geven dat de gebruikersnaam of het wachtwoord niet correct is.
dat ben ik wel met je eens (maar ja aangezien niemand er zomaar gaat komen, en de info die er staat niet echt leuk is om te bewerken mogen ze van mij best proberen..
in een publiekelijk toegangkelijk systeem zal ik idd niet username en pass apart checken
pi_41064759
quote:
Op dinsdag 22 augustus 2006 13:07 schreef t-x-m het volgende:
Verder werk ik altijd even de (perongeluk) ingetypede spaties weg dmv trim
Dus een spatie op het begin of eind van mijn wachtwoord is geen geldig teken?
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')