abonnement Unibet Coolblue Bitvavo
pi_92958586
quote:
Mooiste oplossing is denk ik:
dat doet de truc niet....ff eten..dadelijk weer verder over denken
pi_92958644
quote:
Ik snap je niet? Je wilt iets updaten maar dan moet het er wel zijn?
sorry..heel flauw

ik wil een rij updaten..maar als deze rij niet bestaat kan ik m ook niet updaten

ik kan de rij wel invoegen dan wordt bij elke wijziging deze rij ingevoegd terwijl hij geupdate moet worden
pi_92958701
quote:
1s.gif Op vrijdag 18 februari 2011 11:54 schreef MrNiles het volgende:

[..]

sorry..heel flauw

ik wil een rij updaten..maar als deze rij niet bestaat kan ik m ook niet updaten

ik kan de rij wel invoegen dan wordt bij elke wijziging deze rij ingevoegd terwijl hij geupdate moet worden
Je zoekt dus eigenlijk iets om een rij in te voegen, maar als die rij al bestaat moet'ie een update krijgen. Daar heeft MySQL al iets voor: INSERT ... ON DUPLICATE KEY UPDATE
pi_92958748
quote:
7s.gif Op vrijdag 18 februari 2011 11:56 schreef Light het volgende:

[..]

Je zoekt dus eigenlijk iets om een rij in te voegen, maar als die rij al bestaat moet'ie een update krijgen. Daar heeft MySQL al iets voor: INSERT ... ON DUPLICATE KEY UPDATE
Hee dat is cool, wist ik zelf ook niet. Weer wat geleerd _O_

Het is echter wel in dit geval dat het gaat om een koppeltabel, dus geen primary key. Werkt dit dan ook ?
pi_92958881
quote:
7s.gif Op vrijdag 18 februari 2011 11:56 schreef Light het volgende:

[..]

Je zoekt dus eigenlijk iets om een rij in te voegen, maar als die rij al bestaat moet'ie een update krijgen. Daar heeft MySQL al iets voor: INSERT ... ON DUPLICATE KEY UPDATE
of gewoon REPLACE INTO
  vrijdag 18 februari 2011 @ 12:03:46 #106
91039 mstx
2x1/2 = 1/2 x 1/2
pi_92958941
quote:
1s.gif Op vrijdag 18 februari 2011 12:02 schreef KomtTijd... het volgende:

[..]

of gewoon REPLACE INTO
Let wel op dat REPLACE INTO eerst de rij verwijdert en daarna weer invoegt.
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_92959057
quote:
1s.gif Op vrijdag 18 februari 2011 12:03 schreef mstx het volgende:

[..]

Let wel op dat REPLACE INTO eerst de rij verwijdert en daarna weer invoegt.
Werkt dit ook met tabellen waar je geen primary key hebt?
pi_92959178
quote:
1s.gif Op vrijdag 18 februari 2011 11:57 schreef remi1986 het volgende:

[..]

Hee dat is cool, wist ik zelf ook niet. Weer wat geleerd _O_

Het is echter wel in dit geval dat het gaat om een koppeltabel, dus geen primary key. Werkt dit dan ook ?
Die koppeltabel kun je een primary key (of unieke key) geven op (g_id, o_id). Dat werkt meteen als een index op g_id, dus daar heb je geen aparte index meer nodig. Een index op o_id is wel handig.
pi_92959262
quote:
1s.gif Op vrijdag 18 februari 2011 12:11 schreef Light het volgende:

[..]

Die koppeltabel kun je een primary key (of unieke key) geven op (g_id, o_id). Dat werkt meteen als een index op g_id, dus daar heb je geen aparte index meer nodig. Een index op o_id is wel handig.
Snel ff getest in een project waar ik zelf ook een koppeltabel heb. Maar als ik een primary key toevoeg en ik voeg een rij in, krijg ik een error dat de key al bestaat.
pi_92959273
quote:
1s.gif Op vrijdag 18 februari 2011 12:02 schreef KomtTijd... het volgende:

[..]

of gewoon REPLACE INTO
Dat is hier ook een optie :)
  vrijdag 18 februari 2011 @ 12:16:22 #111
75592 GlowMouse
l'état, c'est moi
pi_92959313
quote:
1s.gif Op vrijdag 18 februari 2011 12:03 schreef mstx het volgende:

[..]

Let wel op dat REPLACE INTO eerst de rij verwijdert en daarna weer invoegt.
Dat dus, zou ik niet zo snel doen.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92959328
quote:
Note that unless the table has a PRIMARY KEY or UNIQUE index, using a REPLACE statement makes no sense. It becomes equivalent to INSERT, because there is no index to be used to determine whether a new row duplicates another.
http://dev.mysql.com/doc/refman/5.0/en/replace.html
  vrijdag 18 februari 2011 @ 12:33:10 #113
75592 GlowMouse
l'état, c'est moi
pi_92959850
quote:
Je zegt niks nieuws.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92959876
quote:
Die koppeltabel kun je een primary key (of unieke key) geven op (g_id, o_id). Dat werkt meteen als een index op g_id, dus daar heb je geen aparte index meer nodig. Een index op o_id is wel handig.
G_id is niet uniek
O_id is ook niet uniek
maar G_id AND O_id moeten wel uniek zijn
pi_92960117
quote:
1s.gif Op vrijdag 18 februari 2011 12:33 schreef GlowMouse het volgende:

[..]

Je zegt niks nieuws.
Weet ik, maar paar berichten daarboven ging het over keys toevoegen in een koppeltabel. Maar dan kan je niet meer meerdere malen dezelfde user_id (in het geval van MrNiles) in de koppeltabel kwijt.

REPLACE is dan denk ik niet de oplossing
  vrijdag 18 februari 2011 @ 12:43:30 #116
75592 GlowMouse
l'état, c'est moi
pi_92960234
quote:
1s.gif Op vrijdag 18 februari 2011 12:40 schreef remi1986 het volgende:

[..]

Weet ik, maar paar berichten daarboven ging het over keys toevoegen in een koppeltabel. Maar dan kan je niet meer meerdere malen dezelfde user_id (in het geval van MrNiles) in de koppeltabel kwijt.
Als je vaker dezelfde user_id nodig hebt, moet je hem niet uniek maken.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92960335
geldt voor INSERT ... ON DUPLICATE KEY UPDATE
dan dat de query niet wordt uitgevoerd als er een dubbele waarde zou komen?
pi_92960340
quote:
1s.gif Op vrijdag 18 februari 2011 12:34 schreef MrNiles het volgende:

[..]

G_id is niet uniek
O_id is ook niet uniek
maar G_id AND O_id moeten wel uniek zijn
Daarom een unieke index (of primary key) op (G_id, O_id). Een index kan meerdere kolommen bevatten :)
pi_92960480
quote:
Daarom een unieke index (of primary key) op (G_id, O_id). Een index kan meerdere kolommen bevatten
jullie zijn er natuurlijk allang achter dat ik een complete n00b ben
maar wat moet een index (over meerdere kolommen) dan doen?
pi_92960537
Wat ik dan begrijp is dat de combinatie g_id en o_id uniek wordt. Waardoor je wel met REPLACE of INSERT DUPLICATE KEY kan werken, zoals eerder als oplossing is gegeven
pi_92960858
quote:
1s.gif Op vrijdag 18 februari 2011 12:50 schreef MrNiles het volgende:

[..]

jullie zijn er natuurlijk allang achter dat ik een complete n00b ben
maar wat moet een index (over meerdere kolommen) dan doen?
De makkelijkste manier is via phpmyadmin.
pi_92963053
quote:
De makkelijkste manier is via phpmyadmin.
Niet Hoe maar wat de functie ervan is
pi_92963434
quote:
1s.gif Op vrijdag 18 februari 2011 13:58 schreef MrNiles het volgende:

[..]

Niet Hoe maar wat de functie ervan is
Dat maakt de combinatie van beide velden uniek. Dus je kan een INSERT doen. als de waarden van g_id EN o_id al voorkomen dan zal hij ze updaten. Wist dit ook nog niet. Heb dit net aangepast in mijn eigen project. Kon hierdoor van 4 queries terug naar 2.

Voorbeeld met ON DUPLICATE KEY (werkt dus ook op indexen)... credits gaan naar Light :Y

1
2
3
4
5
6
7
8
9
10
<?php
$query 
mysql_query("INSERT INTO langpack (link_id,type,language,data)
                                            VALUES ('"
.mysql_real_escape_string($unit_id)."',
                                                    'unit',
                                                    '"
.mysql_real_escape_string($code)."',
                                                    '"
.mysql_real_escape_string($_POST["unit_name_".$code])."')
                                            ON DUPLICATE KEY    
                                        UPDATE data = '"
.mysql_real_escape_string($_POST["unit_name_".$code])."'            
                                       "
);
?>


[ Bericht 38% gewijzigd door remi1986 op 18-02-2011 14:13:37 ]
  vrijdag 18 februari 2011 @ 14:18:42 #124
75592 GlowMouse
l'état, c'est moi
pi_92963878
Je zou een klein MySQL-quizje moeten doen elke keer voordat je zo'n LAMP-pakket kunt downloaden.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92963902
quote:
9s.gif Op vrijdag 18 februari 2011 14:18 schreef GlowMouse het volgende:
Je zou een klein MySQL-quizje moeten doen elke keer voordat je zo'n LAMP-pakket kunt downloaden.
want?
  vrijdag 18 februari 2011 @ 14:26:18 #126
75592 GlowMouse
l'état, c'est moi
pi_92964174
Spaart een hoop ellende. Gewoon simpele vraagjes:

Je wilt een datum opslaan die door de user is ingevoerd als '18-02-2011'. Welk veld gebruik je hiervoor?
- varchar(255)
- anders

Je wilt dat bij elk persoon maar één adres opgeslagen kan worden. Dit doe je met:
- een UNIQUE index op adres
- een PRIMARY KEY op adres
- anders

Je hebt een grote site en wilt dat gebruikers willen zoeken. Dit doe je met:
- een index op de kolom waarin je wilt zoeken
- een fulltext index op de kolom waarin je wilt zoeken
- anders
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_92964187
quote:
9s.gif Op vrijdag 18 februari 2011 14:18 schreef GlowMouse het volgende:
Je zou een klein MySQL-quizje moeten doen elke keer voordat je zo'n LAMP-pakket kunt downloaden.
Beter een google-cursus. Ik wist twee weken geleden ook nog niet van het bestaan van REPLACE of ON DUPLICATE KEY UPDATE af. Maar zo moeilijk is het allemaal niet als je gewoon even de documentatie doorneemt.
pi_92964431
Ik ben er zelf niet zo voor om mensen af te kraken op een forum. Probeer het altijd zo netjes mogelijk te houden (zie dit dan ook niet als aanval), maar dit is een "voor dummies" topic.

Daarnaast kunnen wij er niks aan doen dat we niet zo'n goede developer zijn als jij GlowMouse, dan hadden we niet op dit forum hoeven zitten.

En in plaats alleen maar negatieve feedback te geven, kan je ook zeggen hoe het dan wel moet (ik kan me van gisteren een reactie herinneren van "altijd leuk, queries tussen je html output"). Daar kan iemand niks mee.

Ben het wel met KomtTijd eens dat veel dingen op Google zijn te vinden. Maar ik zie het nu zo dat ik door een vraag van iemand anders, ik zelf nu iets heb geleerd.

Nogmaals dit is geen aanval..
pi_92965022
Moeilijkheid bij google is vaak de omschrijving van je probleem
en vaak staat php/sql codes/oplossingen zo algemeen omschreven dat je nog hard moet nadenken hoe het toe te passen in je eigen script

Ik weet niet hoe ik die ON DUPLICATE had moeten vinden..
daarbij..ben er wel achter gekomen dat er een hoop shit en tegenstrijdigheden op het internet staan
  vrijdag 18 februari 2011 @ 15:22:18 #130
75592 GlowMouse
l'état, c'est moi
pi_92966415
quote:
1s.gif Op vrijdag 18 februari 2011 14:33 schreef remi1986 het volgende:
En in plaats alleen maar negatieve feedback te geven, kan je ook zeggen hoe het dan wel moet (ik kan me van gisteren een reactie herinneren van "altijd leuk, queries tussen je html output"). Daar kan iemand niks mee.
Jawel, daarmee kun je verder zoeken. Alsof ik hele snippets uit een boek ga overtypen.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  zaterdag 19 februari 2011 @ 14:39:08 #131
302853 themole
graaft totaal door.
pi_93012275
quote:
1s.gif Op vrijdag 18 februari 2011 14:45 schreef MrNiles het volgende:
Moeilijkheid bij google is vaak de omschrijving van je probleem
en vaak staat php/sql codes/oplossingen zo algemeen omschreven dat je nog hard moet nadenken hoe het toe te passen in je eigen script


Ik weet niet hoe ik die ON DUPLICATE had moeten vinden..
daarbij..ben er wel achter gekomen dat er een hoop shit en tegenstrijdigheden op het internet staan
Dat is dus de moeilijkheid van programmeren, je moet creatief zijn. Meestal zijn er geen uitgebreide omschrijvingen van een probleem te vinden. Uiteindelijk moet je zelf leren denken, dat is ervaring.
Niet altijd serieus
  zaterdag 19 februari 2011 @ 19:02:47 #132
218617 YazooW
bel de wouten!
pi_93020951
Ubernoob in problemen...
Ik wil een simpele dropdownlist in een formulier gaan vullen met de cijfers 1 tot 31.
Nu kan ik simpelweg 1 tot en met 31 gaan invullen in m'n code, maar ik wil het dus automatisch doen d.m.v een stukje code, ook omdat ik straks nog de jaartallen 1920 tot en met 2011 in een dropdownlist moet gaan toveren.
Met de volgende code laat ik de cijfers 1 tot 31 zien:
1
2
3
4
5
6
        <?php
        for ($i=1; $i <=31;  $i++)
        {
            echo $i;
            }
        ?>

Maar nu komt dus de vraag, hoe krijg ik die 1 tot 31 nu in mijn dropdownlist? Heb al van alles geprobeerd maar blijf heel de tijd maar foutmeldingen krijgen ;(
pi_93021098
1
2
3
4
5
6
7
8
9
10
<select name="nummer">
<option value="" selected>Kies een nummer.</option>
<?php
        
for ($i=1$i <=31;  $i++)
        {
            echo 
"<option value='$i' >$i</option>";
            }
?>
</select>

  zaterdag 19 februari 2011 @ 19:11:13 #134
218617 YazooW
bel de wouten!
pi_93021242
quote:
5s.gif Op zaterdag 19 februari 2011 19:07 schreef Tegan het volgende:

[ code verwijderd ]

Aight, relaxt.
Hij werkt perfect, bedankt voor je snelle hulp! O+
pi_93021410
Ik ben wel erg benieuwd wat jouw code was die foutmeldingen gaf :) .
  zaterdag 19 februari 2011 @ 19:19:37 #136
218617 YazooW
bel de wouten!
pi_93021598
quote:
1s.gif Op zaterdag 19 februari 2011 19:15 schreef Tegan het volgende:
Ik ben wel erg benieuwd wat jouw code was die foutmeldingen gaf :) .
Fout zat m meer in de HTML zeg maar bij het maken van de dropdownlist. De phpcode die ik heel de tijd had was gewoon goed. Fout was dus simpelweg dat ik een aanhalingsteken of < > miste...
Ik ben ook maar een noob he :@
Dmv jou code heb ik nu ook meteen de jaartallen 1920 tot 2011 ingevuld in een andere dropdownlist. ^O^
Ik kan voorlopig wel weer vooruit denk ik. Nogmaals bedankt.

edit. Om even preciezer te zijn, wist net zelf ook niet precies wat ik fout deed 8)7:
Ik had dus bij de echo output tussen de option tags maar 1x $i, terwijl het dus blijkbaar 2x moet, 1x achter de value en 1x tussen de haakjes.

[ Bericht 13% gewijzigd door YazooW op 19-02-2011 19:25:23 ]
pi_93022076
Nouja, dat hoeft niet echt. Maar de ene is welke je meegeeft aan de pagina, en de andere is welke je ziet/kan kiezen. Handig voor als je dus wil dat die verschillen :P .
  zaterdag 19 februari 2011 @ 19:45:52 #138
75592 GlowMouse
l'état, c'est moi
pi_93022981
Als ze identiek zijn, kun je value weglaten.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_93037918
Zou iemand mij kunnen vertellen waarom ik hier niet WERK! te zien krijg?
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
<?php
if(isset($_POST['submit'])){
        
        
//Check of passwords match met Gebruikersnaam
        
if($match['passwd'] != $_POST['old_password']){
            echo 
"<div class='error_box'><ul><li>Het oude wachtwoord komt niet overeen met de gebruikersnaam</li></ul></div>";
        }
        else{
            
$go_ahead .= 1;
        }
        
        
//Check of nieuwe passwords matchen
        
if($_POST['new_password'] != $_POST['new_password_2']){
            echo 
"<div class='error_box'><ul><li>De nieuwe wachtwoorden matchen niet</li></ul></div>";
        }
        else{
            
$go_ahead .= 1;
        }
        
        
//Checken op go_ahead
        
if($go_ahead == 2){
            echo 
"WERK!"
        }
        else{
            echo 
"KAK!";
        }
    }
?>
  zondag 20 februari 2011 @ 00:43:25 #140
63192 ursel
"Het Is Hier Fantastisch!
pi_93038064
echo je $go_ahead maar eens, dan zul je het wel zien. ;)
pi_93038122
quote:
1s.gif Op zondag 20 februari 2011 00:43 schreef ursel het volgende:
echo je $go_ahead maar eens, dan zul je het wel zien. ;)
Ik heb net even een pauze gehad en blij naar boven gestormd omdat ik het wist. Wat kan eten toch wonderen doen :D

Toch bedankt ;)

[ Bericht 0% gewijzigd door dirkjo op 20-02-2011 00:55:14 ]
pi_93038229
Nu heb ik alleen nog wel een vraagje. Ik wil checken of de username aanwezig is in de databse. ik heb het checken op NIET aanwezigheid gedaan via deze manier:
1
2
3
<?php
$found 
mysql_result(mysql_query("SELECT count(0) FROM ftpuser WHERE userid = '".$_POST['username']."' LIMIT 1"), 00);
?>

1
2
3
<?php
if($found 0)
?>

Maar hoe check ik of die er WEL is? :)
pi_93038818
Waarom count(0)?
pi_93040454
Omdat hij anders de volgende warning geeft:

1Warning: mysql_result() expects parameter 1 to be resource, boolean given in (..) on line 3
pi_93040829
Ik vind je manier een beetje omslachtig.

En, userid is een string :? ?

Ik zou het zo doen.

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$result 
mysql_query("SELECT userid FROM ftpuser WHERE userid = '".mysql_real_escape_string($_POST['username'])."' ");

if (
mysql_num_rows($result) == 0) {
//Userid bestaat niet.
}
else if (
mysql_num_rows($result) == 1) {
//Userid bestaat wel.
}
else {
//Error, tenzij userid enkel unieke waarden mag hebben.
}
?>


[ Bericht 0% gewijzigd door Tegan op 20-02-2011 01:58:56 ]
  zondag 20 februari 2011 @ 02:02:01 #146
75592 GlowMouse
l'état, c'est moi
pi_93041370
quote:
1s.gif Op zondag 20 februari 2011 00:46 schreef dirkjo het volgende:
Nu heb ik alleen nog wel een vraagje. Ik wil checken of de username aanwezig is in de databse. ik heb het checken op NIET aanwezigheid gedaan via deze manier:

[ code verwijderd ]

[ code verwijderd ]

Maar hoe check ik of die er WEL is? :)
count(*) is gebruikelijker, je limit is overbodig, en volgens mij heb je met $found == 0 geen aanwezigheid en met $found == 1 wel.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  zondag 20 februari 2011 @ 10:36:03 #147
58834 Catbert
The evil HR Director.
pi_93046910
quote:
1s.gif Op zondag 20 februari 2011 01:41 schreef Tegan het volgende:
Ik vind je manier een beetje omslachtig.

En, userid is een string :? ?

Ik zou het zo doen.
Geen prepared statements?
"[...] a large number of the teenagers claiming Asperger's are, in fact, merely dicks."
pi_93069632
Ok thanks, het werkt nu :)
pi_93117611
Iemand linkjes/ervarignen naar hoe om te gaan / op te zetten een mysql cluster?

Ik kan me zo voorstellen dat als je 100 mysql servers aan elkaar hebt geknoopt een effectievere manier bestaat om te tellen hoeveel mensen 18 jaar zijn dan:

SELECT age FROM users WHERE age='18'
En vervolgens mysql_num_rows
(Theoretisch idee & voorbeeld)
"Op Fok! val je pas op als je normaal bent." -mazaru
pi_93117992
count(*) dan.

Verder weet ik niets van clusters :) .
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')