abonnement Unibet Coolblue Bitvavo
  FOK!-Schrikkelbaas zondag 30 oktober 2005 @ 23:14:48 #151
1972 Swetsenegger
Egocentrische Narcist
pi_31825642
Waarom geeft mijn mysql column, welke NULL enabled is, en NULL als default waarde heeft
0
terug wanneer ik geen waarde invul?
pi_31825669
quote:
Op zondag 30 oktober 2005 22:52 schreef Roonaan het volgende:
Is het niet nuttiger om eerst de mensen te sorteren op het kleinst aantal mensen die ze mogen trekken, om te voorkomen dat ze op een gegeven moment niemand kunnen trekken, omdat die reeds getrokken zijn door andere, die in eerste instantie meer opties hadden?

-r-
Klinkt logisch, maar is geen garantie voor succes. Bij de laatste melding van Chandler liep het fout bij de laatste trekking, en dat is iemand met de ruimste keuze. En ik zie hier nog wel wat mogelijkheden voor functies als array_keys en in_array.
pi_31825796
quote:
Op zondag 30 oktober 2005 23:14 schreef Swetsenegger het volgende:
Waarom geeft mijn mysql column, welke NULL enabled is, en NULL als default waarde heeft
0
terug wanneer ik geen waarde invul?
Geen idee. Als ik het hier probeer gaat het wel goed. Weet je zeker dat die column NULL als default waarde heeft?
  FOK!-Schrikkelbaas zondag 30 oktober 2005 @ 23:28:11 #154
1972 Swetsenegger
Egocentrische Narcist
pi_31826068
quote:
Op zondag 30 oktober 2005 23:19 schreef Light het volgende:

[..]

Geen idee. Als ik het hier probeer gaat het wel goed. Weet je zeker dat die column NULL als default waarde heeft?


Op welke versie heb jij het geprobeerd?

-edit- opgelost. in plaats van niets invullen gewoon NULL invullen

[ Bericht 10% gewijzigd door Swetsenegger op 30-10-2005 23:35:22 ]
pi_31826273
quote:
Op zondag 30 oktober 2005 23:14 schreef Swetsenegger het volgende:
Waarom geeft mijn mysql column, welke NULL enabled is, en NULL als default waarde heeft
0
terug wanneer ik geen waarde invul?
Omdat MySQL vol met bugs, inconsequenties en andere vreemde dingen zit. ACM had er een lijst van online staan.
quote:
Weird behaviour
1. You can define a varchar/char field 'auto_increment'.
2. SELECT 'A' = 'a' gets you true.
3. Int(10) is the same as int(1) eventhough the manual says differently.
4. Tablenames are treated case-sensitive on *n?x systems, not on windows.
5. Change a piece of a table definition and mysql creates a temporary copy of the table, very nice if you have a 6GB table occupying a 10GB tablespace... (yes, the change will fail)
6. Adding indices result in a similar temporary copy.
7. What does zerofill do to a integer field? A database is meant to store data, not to format it while storing.
8. When I define a char(32) (md5-strings anyone) field, I really don't mean varchar(32) (MySQL automatically changes all char(X >4) to varchar(X)).
9. This is correct according to mysql: SELECT a, b, count(c) FROM d GROUP BY a; what will MySQL do with the b?
10. If you update a record and set it to the same value, mysql'll define that as unaffected. Even if it does change a timestamp field.

Bugs
1. Insert a NULL value in a NOT NULL field and the query gets executed. In short, you can't force NOT NULL...
2. Under high loads MySQL will restart itself occasionally. When a child doesn't die fast enough "socket already in use"-error occurs.
3. Replication doesn't work that well.
4. MySQL will always try to insert a date into a date field, even if you supply an empty or bogus string (it'll insert 0000-00-00 then).
5. When underflowing or overflowing a integer field, mysql will insert the largest or smallest possible value instead.
6. Long texts are chopped to the correct size, not denied.
7. MySQL will also insert 0 into a numeric field if you supply an empty or bogus string.
8. Close a connection and a long query still runs on... The only way to kill it is via the (mysql)admin
9. Connections with a timeout? Very nice when you need to do a lot of calculations on your data or a query lasts very long. "Lost connection to MySQL server during query"
10. You can insert the same value twice in a ENUM-field
Deze punten gaan vooral over versie 3.23.x, dat zal ook wel de reden zijn dat ie offline is.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  FOK!-Schrikkelbaas zondag 30 oktober 2005 @ 23:42:06 #156
1972 Swetsenegger
Egocentrische Narcist
pi_31826452
quote:
Op zondag 30 oktober 2005 23:35 schreef SuperRembo het volgende:

[..]

Omdat MySQL vol met bugs, inconsequenties en andere vreemde dingen zit. ACM had er een lijst van online staan.
[..]

Deze punten gaan vooral over versie 3.23.x, dat zal ook wel de reden zijn dat ie offline is.
Ja die ken ik al van www.yapf.net
Maar er staat alleen wat over NULL invoeren in een NOT NULL kolom.
In mijn geval vul ik een lege string in, dus niets en daar maakt mysql 0 van.

Indien het veld in mijn form nu leeg is, vul ik dus maar NULL in. dat gaat wel goed
pi_31826505
quote:
Op zondag 30 oktober 2005 23:28 schreef Swetsenegger het volgende:

[..]

[afbeelding]

Op welke versie heb jij het geprobeerd?

-edit- opgelost. in plaats van niets invullen gewoon NULL invullen
Ik heb het geprobeerd op mysql 4.0.25 die ik hier lokaal had draaien. (Had, ik ben bezig met een upgrade nu.)

En ik deed een insert into tabel (kolom1) values (1); waarbij kolom2 (die dus niet wordt genoemd) als default null was gedefinieerd. Dan komt er ook een waarde null in te staan.
pi_31826537
quote:
Op zondag 30 oktober 2005 23:42 schreef Swetsenegger het volgende:

[..]

Ja die ken ik al van www.yapf.net
Maar er staat alleen wat over NULL invoeren in een NOT NULL kolom.
In mijn geval vul ik een lege string in, dus niets en daar maakt mysql 0 van.

Indien het veld in mijn form nu leeg is, vul ik dus maar NULL in. dat gaat wel goed
Een lege string is niet gelijk aan NULL.
pi_31826648
Een lege string is zeker ook geen decimal.

(Er zit een typo in articelcode)
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  FOK!-Schrikkelbaas zondag 30 oktober 2005 @ 23:51:50 #160
1972 Swetsenegger
Egocentrische Narcist
pi_31826694
quote:
Op zondag 30 oktober 2005 23:45 schreef Light het volgende:

[..]

Een lege string is niet gelijk aan NULL.
Daar was ik achter nu
Dit geeft immers geen NULL maar 0 als $_POST['second_price'] leeg is.

INSERT INTO table
(id,second_price)
VALUES(0,'".$_POST['second_price']."')
pi_31826971
quote:
Op zondag 30 oktober 2005 23:50 schreef SuperRembo het volgende:
Een lege string is zeker ook geen decimal.

(Er zit een typo in articelcode)
Bij MySQL is een hoop mogelijk, gezien wat ik zo lees.
pi_31828109
Hmm.. Men neme een simpele tabel "tabel" met twee kolommen "col1" en "col2". Col2 is gedefinieerd als INT en mag NULL bevatten. Col1 is gewoon een ID. (Het gaat nergens over, maar ter illustratie.)
Dan doen we "Insert into tabel (col1, col2) values (1, '')" waarbij dus een lege string naar col2 gezet wordt. Maar dat was een int. Voor MySQL een reden om er dan maar 0 van te maken.

Overigens gebeurt hetzelfde als ik een niet-lege string gebruik. De conversie lijkt hetzelfde te zijn als de (int) van php.
pi_31829745
quote:
Op zondag 30 oktober 2005 17:32 schreef Darkomen het volgende:
Wat krijg je als je

$code = $userChoose[array_rand($userChoose)];

$userSelected[$id] = $code;

IN
$userSelected[$id] = $userChoose[array_rand($userChoose)];

veranderd?
Een verdwijnende variabel, die ik idd niet bij het echo statement kan gebruiken
quote:
Op zondag 30 oktober 2005 17:47 schreef Light het volgende:
Dan krijg je dat de variabele $code niet te gebruiken is bij het echo-statement even verderop
Yep, dit is ff makkelijk en voor mij overzichtelijk...
quote:
Op zondag 30 oktober 2005 22:52 schreef Ro�a� het volgende:
Is het niet nuttiger om eerst de mensen te sorteren op het kleinst aantal mensen die ze mogen trekken, om te voorkomen dat ze op een gegeven moment niemand kunnen trekken, omdat die reeds getrokken zijn door andere, die in eerste instantie meer opties hadden?

-r-
Ok, ik vond dit al een uitdaging, en nu dus helemaal... hoe in vredus naam kan ik dit snel doen? als het MySQL was dan was dit simpel, en kon ik de query aanpassen maar werken met array's is niet mijn sterkste vak..

Heb je tips? hoef geen code! zolang je me maar in de goede richting wijst!
quote:
Op zondag 30 oktober 2005 23:15 schreef Light het volgende:
Klinkt logisch, maar is geen garantie voor succes. Bij de laatste melding van Chandler liep het fout bij de laatste trekking, en dat is iemand met de ruimste keuze. En ik zie hier nog wel wat mogelijkheden voor functies als array_keys en in_array.
hoe bedoel je dat? en waar denk jij dat mijn probleem zit? want ik kan dit helaas niet zo even 1234567890 uitvinden heb gisteren (tijdens het ziek zijn) de hele dag niets anders in me hoofd gehad dan de niet werkende code...

Tips, verwijzingen etc zijn van harte welkom!.
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31829785
Wat wil je nou eigenlijk met dat script? Als het gewoon lootjes trekken was, dan zou iedereen kunnen kiezen uit iedereen behalve zichzelf. Als input zou je dan alleen een lijst namen hebben.
Maar bij jou begin je met een array waarbij sommige mensen veel meer keus hebben dan anderen
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_31829872
SuperRembo; dat zou inderdaad een 'gewoon' lootjes trekken script zijn maar dat is hier niet het geval. In mijn script kun je ook kiezen dat mensen hun vriend/vriendin/vader/moeder en de keuze van vorig jaar niet mag kiezen (alleeen vorig jaar!).. dus dan wordt de sub array iets groter .

Het laatste script is dus een niet wat jij denkt het is net andersom, deze mensen mogen dus pertinent NIET gekozen worden

vb
1
2
3
$arr = array("eric" => array("eric", "marc"),
             "marc" => array("marc", "eric"),
             "tess" => array("tess", "joop", "kees"),


eric mag dus geen marc of eric trekken ennuh marc mag ook geen marc of eric trekken en als laatste voorbeeld mag tess geen tess/joop of kees trekken.
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31829968
quote:
Op maandag 31 oktober 2005 07:42 schreef Chandler het volgende:

hoe bedoel je dat? en waar denk jij dat mijn probleem zit? want ik kan dit helaas niet zo even 1234567890 uitvinden heb gisteren (tijdens het ziek zijn) de hele dag niets anders in me hoofd gehad dan de niet werkende code...
Bij lootjes trekken heb je altijd het risico dat de laatste geen keuze meer heeft (of alleen zichzelf kan kiezen). Eigenlijk heb je die keuze altijd, maar je houdt er bij het programmeren al rekening mee dat iemand niet zichzelf mag kunnen kiezen. In je laatste voorbeeld was joke, die als laatste mag kiezen, nog niet gekozen. Enige overgebleven keuze is dus joke, maar die mag zichzelf niet kiezen, dus geen keuze. Oplossing is simpel de hele trekking nogmaals doen.
pi_31830090
klopt dat ben ik met je eens, maar deze code genereerd nogal vaak veel errors.. test het maar eens
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  FOK!-Schrikkelbaas maandag 31 oktober 2005 @ 08:39:13 #168
1972 Swetsenegger
Egocentrische Narcist
pi_31830143
quote:
Op maandag 31 oktober 2005 01:04 schreef Light het volgende:
Hmm.. Men neme een simpele tabel "tabel" met twee kolommen "col1" en "col2". Col2 is gedefinieerd als INT en mag NULL bevatten. Col1 is gewoon een ID. (Het gaat nergens over, maar ter illustratie.)
Dan doen we "Insert into tabel (col1, col2) values (1, '')" waarbij dus een lege string naar col2 gezet wordt. Maar dat was een int. Voor MySQL een reden om er dan maar 0 van te maken.

Overigens gebeurt hetzelfde als ik een niet-lege string gebruik. De conversie lijkt hetzelfde te zijn als de (int) van php.
Mjah,

Laten we zeggen dat ik verwacht dat wanneer ik een lege string naar een decimal stuur met als default value NULL dat ik dan ook NULL terug krijg

Het was weer een wijze les
pi_31831233
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
<?

  $vorigeTrekking = array(
               "eric" => array("eric", "marc"),
               "marc" => array("marc", "eric"),
               "tess" => array("tess", "joop", "kees"),
               "joop" => array("joop", "tess", "kees", "loes"),
               "kees" => array("kees", "tess", "joop"),
               "loes" => array("loes"),
               "joke" => array("joke")
               );
             
  $alleDeelnemers = array_keys($vorigeTrekking);
  
  // Wie mag wie wél loten
  $magLoten = array();
  foreach($alleDeelnemers as $naam) {
    $magLoten[$naam] = array_diff($alleDeelnemers, $vorigeTrekking[$naam]);
  }
  
  // Wie mag door wie geloot worden
  $magGelootWordenDoor = array();
  foreach($magLoten as $naam => $loten) {
    foreach($loten as $lot)
      $magGelootWordenDoor[$lot][] = $naam;
  }

  // Trekking doen. ob_start etc is om de data van
  // mislukte trekkingen te verbergen
  $i = 1;
  ob_start();
  $loting = loting($alleDeelnemers, $magLoten, $magGelootWordenDoor);
  while(!is_array($loting) && $i < 10) {
    ob_end_clean();
    echo '<br/>Trekking '.$i++.' mislukt: '.$loting; flush();
    ob_start();
    $loting = loting($alleDeelnemers, $magLoten, $magGelootWordenDoor);
  }
  ob_end_flush();  
  
  // Loting functie
  function loting($alleDeelnemers, $magLoten, $magGelootWordenDoor) {
    // Alle loten zijn getrokken
    if(count($alleDeelnemers) < 1) {
      return array();
    }
    // Kies een van de deelnemers die als volgende een lootje mag trekken
    shuffle($alleDeelnemers); 
    $deelnemer = array_pop($alleDeelnemers);
    
    // Geef de naam weer
    echo '<br/><b>'.$deelnemer.'</b>';
    
    // Tijdelijke arrays construeren om de intersectie te kunnen maken tussen
    // de loten die iemand mag trekken en de nog beschikbare loten
    $dnMagLoten = $magLoten[$deelnemer];
    $dnKanLoten = array_keys($magGelootWordenDoor);
    $dnLoten    = array_intersect($dnMagLoten, $dnKanLoten);
    
    if(count($dnLoten) < 1) {
      return '<br/>Loting mislukt.';
    } else {
      // Volgende drie regels zijn debug informatie
      echo '<br/>Mag: '.implode(',',$dnMagLoten);
      echo '<br/>Kan: '.implode(',',$dnKanLoten);
      echo '<br/>Som: '.implode(',',$dnLoten);
      // Trek een van de loten
      $getrokken = $dnLoten[array_rand($dnLoten)];
      // Geef een echo welk lot is getrokken
      echo '<br/><b>'.$deelnemer.' trekt '.$getrokken.'</b><br/>';
    }
    
    // De deelnemer kan niet nog een keer loten
    unset($magLoten[$deelnemer]);
    // Het lot kan ook niet meer getrokken worden
    unset($magGelootWordenDoor[$getrokken]);
    
    // Recursief andere mensen laten trekken
    $loting = loting($alleDeelnemers,$magLoten, $magGelootWordenDoor);
    
    // Kijken of de recursieve loting goed verlopen is
    if(is_array($loting)) {
      $resultaat = array_merge(array($deelnemer => $getrokken),$loting);
      return $resultaat;
    } else {
      return $loting;
    }
  }
  

?>
pi_31832338
quote:
Op maandag 31 oktober 2005 08:39 schreef Swetsenegger het volgende:

[..]

Mjah,

Laten we zeggen dat ik verwacht dat wanneer ik een lege string naar een decimal stuur met als default value NULL dat ik dan ook NULL terug krijg

Het was weer een wijze les
Afgezien van dit belachelijke gedrag van MySQL ( ); waarom probeerde je een string naar een decimal te sturen?
pi_31833293
Aangezien fok en phpfreakz toch aan het crossbreeden is. Mag ik jullie commentaar vragen op http://www.phpfreakz.nl/library.php?sid=20709 ?

-r-
pi_31834936
quote:
Op maandag 31 oktober 2005 09:54 schreef Ro�a� het volgende:
@Ro�a�

ik ga je code inspecteren, zal wel heel veel dingen niet begrijpen maar er mee stoeien zorgt voor kennis
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  FOK!-Schrikkelbaas maandag 31 oktober 2005 @ 12:56:08 #173
1972 Swetsenegger
Egocentrische Narcist
pi_31835236
quote:
Op maandag 31 oktober 2005 10:50 schreef JeRa het volgende:

[..]

Afgezien van dit belachelijke gedrag van MySQL ( ); waarom probeerde je een string naar een decimal te sturen?
Nou, ik was in de veronderstelling dat je bij een INSERT statement alle kolommen moest benoemen
dus stuurde ik VALUES(0,'".$_POST['second_price']."') naar de database.

Nu stuur ik gewoon NULL, en vanavond haal ik 'm gewoon helemaal uit de INSERT statement
pi_31836566
@Roonaan: ik ben nu al een tijd bezig je functie te ontleden maar heb een vraag en kan daar niet een begrijpelijk antwoord op vinden op www.php.net

waar staan de volgende functie voor!

array_intersect ? want uit de uitleg en voorbeeld kom ik niet

-edit-

en hoe is het mogelijk om het data uit een array te verwijderen middels een andere array..

ik probeer het nu zo te doen maar dat werkt niet echt

1
2
3
4
foreach ($excludeUsers as $id => $value)
        {
            unSet($includeUsers[$id]);
        }



[ Bericht 49% gewijzigd door Chandler op 31-10-2005 14:02:12 ]
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31836913
Ik heb een probleem met cookies die moeten worden geplaatst en uitgelezen aan de hand van de GET waarde die aan een de pagina wordt meegegeven.

1
2
3
4
5
6
7
8
9
<?php
PHP
if (!isset($_COOKIE[$_GET['link']]))  
{
echo
"blabla";
setcookie("$_GET[link]", "true", strtotime("tomorrow 0"), "/");
}

?>


Het cookie wordt wel geplaatst (met de juiste waarde)
Als ik nu nog een keer dezelfde GET waarde aan de pagina mee geef dan zou er geen "blabla" op mijn scherm mogen verschijnen.
Dit gebeurt wel, dus het cookie wordt toch niet goed uitgelezen.

Heeft iemand een idee waarom dit fout gaat?
Ja lekker!
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')