abonnement Unibet Coolblue Bitvavo
pi_61406179
Ik heb even gekeken naar trim, maar wat ik daaruit begrijp is dat het een functie is die je gebruikt bij een select-statement, dus eigelijk een oplossing "achteraf" om van de spatie af te komen.

Bij het verzenden van het formulier naar de database, wil ik dat indien er niets wordt ingevuld in de textarea, dat er in de datebase in dat valt gewoon NULL staat en geen spatie.
Aan dit bericht kunnen geen rechten worden ontleend.
  vrijdag 5 september 2008 @ 16:56:53 #242
12880 CraZaay
prettig gestoord
pi_61406343
quote:
Op vrijdag 5 september 2008 16:51 schreef poepeneesje het volgende:
Bij het verzenden van het formulier naar de database, wil ik dat indien er niets wordt ingevuld in de textarea, dat er in de datebase in dat valt gewoon NULL staat en geen spatie.
Dan kun je bij het samenstellen van de INSERT-query ervoor zorgen dat voor het veld wat je NULL wilt hebben helemaal niets wordt geschreven. Dus checken bij het bouwen van de query of de string (eventueel na trimmen; de PHP-functie) leeg is, en alleen als dat niet zo is de waarde naar de db schrijven.
  vrijdag 5 september 2008 @ 16:57:43 #243
75592 GlowMouse
l'état, c'est moi
pi_61406366
Ik had het over de PHP-functie trim, die mag je ook gebruiken wanneer je de input krijgt. Daarna kun je MySQL's TRIM ook bij een INSERT-query gebruiken, het komt alleen niet zo vaak voor

Maar om NULL te krijgen moet je ergens checken of de string leeg is (of een spatie) en in dat geval NULL ipv een string INSERTEN.

Maar waarom heb je liever NULL dan een lege string?
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  vrijdag 5 september 2008 @ 17:12:39 #244
12880 CraZaay
prettig gestoord
pi_61406781
quote:
Op vrijdag 5 september 2008 16:57 schreef GlowMouse het volgende:
en in dat geval NULL ipv een string INSERTEN.
Of gewoon niets inserten, waarbij MySQL er zelf NULL van maakt (als je in je schema NULL toestaat en als default value hebt).
pi_61406793
CraZaay & GlowMouse, ik wist niet dat het ook een PHP-functie is. Daar ga ik vanavond dan even opnieuw naar kijken.

Het wordt niet zozeer als lege string opgeslagen, maar echt als een spatie. Waarschijnlijk maakt het niet veel uit, maar het is wel netter (vind ik) als er dan gewoon niets wordt opgeslagen. Maar ik denk dat ik weet waar het misgaat, nu je begint over een lege string.

Ik ga vanavond even kijken, bedankt voor de snelle reacties jongens .
Aan dit bericht kunnen geen rechten worden ontleend.
  vrijdag 5 september 2008 @ 17:18:34 #246
12880 CraZaay
prettig gestoord
pi_61406949
Of het netter is weet ik niet; de user heeft immers bewust een lege string gesubmit is mijn gedachtegang. Dat je met trim() spaties voor/achter filtert (en dus eventueel een lege string overhoudt) is prima, maar ik zou het dan wel als lege string opslaan. Maar da's meer een kwestie van smaak
pi_61407040
1
2
3
4
5
6
7
8
<?php
$input 
" ";
$input trim($input);

if (!
strlen($input)) { $input null }

# Doorgaan alsof er niks aan de hand is
?>


Ik ga er maar even vanuit dat null van php ook in de query gewoon NULL wordt..
pi_61407097
quote:
Op vrijdag 5 september 2008 17:12 schreef poepeneesje het volgende:
CraZaay & GlowMouse, ik wist niet dat het ook een PHP-functie is. Daar ga ik vanavond dan even opnieuw naar kijken.

Het wordt niet zozeer als lege string opgeslagen, maar echt als een spatie. Waarschijnlijk maakt het niet veel uit, maar het is wel netter (vind ik) als er dan gewoon niets wordt opgeslagen. Maar ik denk dat ik weet waar het misgaat, nu je begint over een lege string.

Ik ga vanavond even kijken, bedankt voor de snelle reacties jongens .
Een lege string is in sommige gevallen beter dan NULL. Soms wil je namelijk echt een onderscheid maken tussen een lege string en NULL, bijv als je in een left join wil controleren of er geen match is, en dat kan dan niet (of is minder betrouwbaar) als er ook NULL values in bestaande rows zitten.

Ik gebruik NULL eigenlijk bijna alleen als het een meerwaarde biedt; bijvoorbeeld als ik echt in mijn applicatie onderscheid wil maken tussen true (1), false (0) of undefined (NULL). OF als je echt velden hebben die soms wel voorkomen, en soms helemaal niet. Velden die wel altijd voorkomen maar leeg kunnen zijn, gooi ik gewoon als lege string in de database, niet als NULL dus.
  vrijdag 5 september 2008 @ 17:25:51 #249
75592 GlowMouse
l'état, c'est moi
pi_61407115
quote:
Op vrijdag 5 september 2008 17:22 schreef slakkie het volgende:

[ code verwijderd ]

Ik ga er maar even vanuit dat null van php ook in de query gewoon NULL wordt..
Dat wordt het niet, het blijft gewoon leeg terwijl je NULL moet hebben in je query.

Maar ik zou me de problemen met NULL in je db niet op de hals halen als je het niet nodig hebt. Sla gewoon een lege string op.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  vrijdag 5 september 2008 @ 17:29:55 #250
12880 CraZaay
prettig gestoord
pi_61407226
quote:
Op vrijdag 5 september 2008 17:25 schreef GlowMouse het volgende:

Dat wordt het niet, het blijft gewoon leeg terwijl je NULL moet hebben in je query.
Dan maak je er in slakkies code $input = 'NULL' van. Het is dan string waarde 'NULL', maar wanneer je deze unescaped in je query zet is het gewoon "bla = NULL" in de query. Heel die query is namelijk al een samenstelling van strings.
  vrijdag 5 september 2008 @ 17:32:27 #251
75592 GlowMouse
l'état, c'est moi
pi_61407292
quote:
Op vrijdag 5 september 2008 17:29 schreef CraZaay het volgende:

[..]

Dan maak je er in slakkies code $input = 'NULL' van. Het is dan string waarde 'NULL', maar wanneer je deze unescaped in je query zet is het gewoon "bla = NULL" in de query. Heel die query is namelijk al een samenstelling van strings.
Zo makkelijk is het niet. Er zal dan de string 'NULL' in je database komen in plaats van NULL. Je zou bijvoorbeeld iets kunnen doen als then $input='NULL' else $input = "'" . $db->escape($input) . "'". Maar nogmaals: waarom moeilijk doen als je het niet nodig hebt, je geen idee hebt wat je doet, en je jezelf alleen ellende op de hals haalt?

[ Bericht 0% gewijzigd door GlowMouse op 05-09-2008 17:48:12 (verduidelijkt) ]
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  vrijdag 5 september 2008 @ 17:45:16 #252
12880 CraZaay
prettig gestoord
pi_61407633
quote:
Op vrijdag 5 september 2008 17:32 schreef GlowMouse het volgende:

Zo makkelijk is het niet. Er zal dan de string 'NULL' in je database komen in plaats van NULL.
Nee, dat is niet correct

1
2
3
4
5
<?php
$input 
'NULL';

mysql_query("INSERT INTO table (input) VALUES ($input);");
?>


Dat levert gewoon een echt NULL-waarde in de database op. Dat is ook logisch, want MySQL krijgt dit binnen:

1"INSERT INTO table (input) VALUES (NULL);".
  vrijdag 5 september 2008 @ 17:47:44 #253
75592 GlowMouse
l'état, c'est moi
pi_61407687
Maar je hebt nooit VALUES($input) staan, omdat je dan in de problemen komt als $input een echte string is. Vandaar mijn else
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  vrijdag 5 september 2008 @ 17:50:29 #254
12880 CraZaay
prettig gestoord
pi_61407744
quote:
Op vrijdag 5 september 2008 17:47 schreef GlowMouse het volgende:
Maar je hebt nooit VALUES($input) staan, omdat je dan in de problemen komt als $input een echte string is. Vandaar mijn else
Dit is een versimpelde versie uiteraard, ik ga er vanuit dat je ook geen zin hebt in injection enzo en al iets met die string gedaan hebt, bijvoorbeeld ge-escaped wanneer je er wel een string in wilt hebben Het gaat mij er uiteraard vooral om dat je op deze manier in de sfeer van slakkies suggestie NULL in je db kunt krijgen. Maar zoals gezegd, ik zou er gewoon een lege string voor gebruiken.
pi_61407775
quote:
Op vrijdag 5 september 2008 17:25 schreef GlowMouse het volgende:

[..]

Dat wordt het niet, het blijft gewoon leeg terwijl je NULL moet hebben in je query.

Maar ik zou me de problemen met NULL in je db niet op de hals halen als je het niet nodig hebt. Sla gewoon een lege string op.
Met PDO werkt het wel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$db 
"";
$host "localhost";
$dbname "test";
$user "root";
$passwd "";

try {
    
$db = new PDO(sprintf("mysql:host=%s;dbname=%s"$host$dbname), $user$passwd);
} catch (
PDOException $e) {
    
printf("DB error: %s\n"$e->getMessage());
    exit(
1);
}

$sth $db->prepare("INSERT INTO testing (val) VALUES ( ? )");

$sth->bindValue(1null);
$sth->execute();
?>


1
2
3
4
5
6
7
8
mysql> select * from testing where val IS NULL
    -> ;
+----+------+
| id | val  |
+----+------+
|  2 | NULL |
+----+------+
1 row in set (0.00 sec)
  vrijdag 5 september 2008 @ 20:19:37 #256
53731 Flipper01
Addicted Dolphin
pi_61411867
Hoe kan ik een datum in MYSQL (DATETIME) zetten mbv een phpstring?
Ik heb nu namelijk de volgende waarden: $dag, $maand en $jaar en wil hier een datetime van maken.
I don't shine if you don't shine
  vrijdag 5 september 2008 @ 20:21:54 #257
75592 GlowMouse
l'état, c'est moi
pi_61411928
http://dev.mysql.com/doc/refman/5.0/en/datetime.html

"The DATETIME type is used when you need values that contain both date and time information. MySQL retrieves and displays DATETIME values in 'YYYY-MM-DD HH:MM:SS' format."

Dus $jaar . '-' . $maand . '-' . $dag . ' 00:00:00' voldoet, mits jaar-maand-dag netjes 4-2-2 zijn.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  zaterdag 6 september 2008 @ 00:45:18 #258
12880 CraZaay
prettig gestoord
pi_61419129
Of "$jaar-$maand-$dag 00:00:00", als je minder wilt concatenaten (mocht dat problemen geven, zet dan {} rond je vars, dus {$dag}).
pi_61419356
quote:
Op zaterdag 6 september 2008 00:45 schreef CraZaay het volgende:
Of "$jaar-$maand-$dag 00:00:00", als je minder wilt concatenaten (mocht dat problemen geven, zet dan {} rond je vars, dus {$dag}).
Moet ${dag} zijn, ipv {$dag}, of ook niet, mag beide.. mkay.
  zaterdag 6 september 2008 @ 01:07:14 #260
12880 CraZaay
prettig gestoord
pi_61419395
quote:
Op zaterdag 6 september 2008 01:04 schreef slakkie het volgende:

Moet ${dag} zijn, ipv {$dag}, of ook niet, mag beide.. mkay.
Ga slapen Het kan inderdaad allebei, maar ik vind er helemaal omheen consistenter, omdat je dan bijvoorbeeld ook {'bla' . $iets} kunt doen.
pi_61419591
Ik vind ${bla} persoonlijk prettiger, aangezien ik die notatie ken van zsh/bash en perl. Zelf maak ik nooit gebruik van ${'bla' . $iets} constructies.
  zaterdag 6 september 2008 @ 07:30:56 #262
53731 Flipper01
Addicted Dolphin
pi_61420911
quote:
Op zaterdag 6 september 2008 00:45 schreef CraZaay het volgende:
Of "$jaar-$maand-$dag 00:00:00", als je minder wilt concatenaten (mocht dat problemen geven, zet dan {} rond je vars, dus {$dag}).
Thnx! Dit vind ik zelf ook wel de meest handige schrijfwijze
I don't shine if you don't shine
pi_61429000
Weet iemand hier hoe ik op mijn site de 5 laatste posts van een blog, bijvoorbeeld van www.luxist.com kan krijgen?

[ Bericht 3% gewijzigd door Cracka-ass op 06-09-2008 17:06:03 ]
  zaterdag 6 september 2008 @ 18:29:13 #264
75592 GlowMouse
l'état, c'est moi
pi_61431385
Via hun RSS-feed is het makkelijkst. Met een RSS-parser als magpie is dat niet moeilijk.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_61475001
Ik heb een vraagje m.b.t MySQL preformance en opzet.

Stel ik wil voor een site bepaalde modules gebruiken, de gebruiker kiest 1 van een select aantal modules om te gebruiken voor het geen waar de site voor bedoeld is echter is het mogelijk dat deze module bepaalde settings wil opslaan, dit is per module verschillend. En aangezien ik simpel en snel modules wil kunnen toevoegen en of verwijderen is mijn vraag als volgt.

Is het handiger om voor deze opzet per module een apparte tabel aan te maken, of 1 tabel gebruiken waarin ik deze data vermeld? per regel een 'setting'

ik zal wel weer wazig zijn, als je het niet begrijpt wat ik bedoel probeer ik het nog duideljker te vermelden!
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_61475173
Je maakt een koppeltabel met een module-id, een setting-id en de waarde aan.

Zo kan je namelijk ook heel makkelijk generieke settings aanmaken.

[ Bericht 34% gewijzigd door #ANONIEM op 08-09-2008 15:48:07 ]
pi_61475299
Klopt maar wat raad je aan, zit namelijk zelf te denken aan 1 global tabel voor alle plugins ipv per plugin een tabel.
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_61475749
quote:
Op maandag 8 september 2008 15:52 schreef Chandler het volgende:
Klopt maar wat raad je aan, zit namelijk zelf te denken aan 1 global tabel voor alle plugins ipv per plugin een tabel.
1 global tabel
pi_61482058
Ik heb even gekeken naar het NULL-probleem, maar ik kan het niet oplossen... Op het internet heb ik gezien dat een aantal mensen er ook problemen mee hadden, maar de oplossingen die er gegeven zijn lossen het probleem niet op... Ook de oplossingen die jullie aandragen bieden geen oplossing.

Daarnaast heb ik nog het volgende, de tijd op MySQL-server van PCextreme loopt twee uur achter. Hoe zorg ik ervoor dat ik de juiste tijd opsla in de database, ik gebruik nu now() om de huidige (datebase)tijd op te slaan. Optellen van twee uur bij de tijd geeft waarschijnlijk problemen bij het voor- en achteruit zetten van de tijd.

En is het daarnaast mogelijk om het volgende op een goede manier voor elkaar te krijgen?

1
2
3
4
5
6
7
<?php
echo    "<select name='print' style='width: 387px'>
            <option>-</option>     
            <option  if(isset($print) && ($print==1)){echo selected='selected';} value='1'>Ja</option>
            <option  if(isset($print) && ($print==0)){echo selected='selected';} value='0'>Nee</option>
        </select>;"
?>

Met een variable lukt het me wel, maar ik zou graag dus een stuk PHP hebben die xHTML print waarin weer een stuk PHP voorkomt, hoe krijg ik dit (netjes) voor elkaar?
Aan dit bericht kunnen geen rechten worden ontleend.
  maandag 8 september 2008 @ 21:23:57 #270
12880 CraZaay
prettig gestoord
pi_61484096
quote:
Op maandag 8 september 2008 20:17 schreef poepeneesje het volgende:
Daarnaast heb ik nog het volgende, de tijd op MySQL-server van PCextreme loopt twee uur achter. Hoe zorg ik ervoor dat ik de juiste tijd opsla in de database, ik gebruik nu now() om de huidige (datebase)tijd op te slaan. Optellen van twee uur bij de tijd geeft waarschijnlijk problemen bij het voor- en achteruit zetten van de tijd.
Niet gaan klooien, zorgt alleen maar voor meer problemen. Vraag ze de tijd gewoon goed in te stellen. Of krijg je gewoon de GMT tijd terug? Daar kun je wel mee rekenen uiteraard, als je die altijd krijgt.
quote:
Met een variable lukt het me wel, maar ik zou graag dus een stuk PHP hebben die xHTML print waarin weer een stuk PHP voorkomt, hoe krijg ik dit (netjes) voor elkaar?
Dit zou ik doen (met code-tag, syntax highlighter hier kan het niet aan anders):

1
2
3
4
5
6
7
8
9
<?php
echo("
    <select name='print' style='width: 387px'>
        <option>-</option>     
        <option <?= (isset($print) && ($print == 1)) ? 'selected=\'selected\'' : '' ?> value='1'>Ja</option>
        <option <?= (isset($print) && ($print == 0)) ? 'selected=\'selected\'' : '' ?> value='0'>Nee</option>
    </select>
");
?>


edit: Je hoeft dit overigens niet allemaal met PHP te echo'en; je kunt prima in een PHP bestand alleen HTML hebben staan en slechts op enkele plaatsen PHP-tags (bijv <?= time() ?> om de tijd te laten zien).

[ Bericht 5% gewijzigd door CraZaay op 08-09-2008 21:57:24 ]
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')