dat doet de truc niet....ff eten..dadelijk weer verder over denkenquote:Mooiste oplossing is denk ik:
sorry..heel flauwquote:Ik snap je niet? Je wilt iets updaten maar dan moet het er wel zijn?
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 UPDATEquote: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
Hee dat is cool, wist ik zelf ook niet. Weer wat geleerdquote: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 INTOquote: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
Let wel op dat REPLACE INTO eerst de rij verwijdert en daarna weer invoegt.quote:
Werkt dit ook met tabellen waar je geen primary key hebt?quote: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.
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.quote:Op vrijdag 18 februari 2011 11:57 schreef remi1986 het volgende:
[..]
Hee dat is cool, wist ik zelf ook niet. Weer wat geleerd
Het is echter wel in dit geval dat het gaat om een koppeltabel, dus geen primary key. Werkt dit dan ook ?
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.quote: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.
Dat dus, zou ik niet zo snel doen.quote: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.
http://dev.mysql.com/doc/refman/5.0/en/replace.htmlquote: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.
Je zegt niks nieuws.quote:Op vrijdag 18 februari 2011 12:16 schreef remi1986 het volgende:
[..]
http://dev.mysql.com/doc/refman/5.0/en/replace.html
G_id is niet uniekquote: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.
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.quote:
Als je vaker dezelfde user_id nodig hebt, moet je hem niet uniek maken.quote: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.
Daarom een unieke index (of primary key) op (G_id, O_id). Een index kan meerdere kolommen bevattenquote: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
jullie zijn er natuurlijk allang achter dat ik een complete n00b benquote:Daarom een unieke index (of primary key) op (G_id, O_id). Een index kan meerdere kolommen bevatten
De makkelijkste manier is via phpmyadmin.quote: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?
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.quote:Op vrijdag 18 februari 2011 13:58 schreef MrNiles het volgende:
[..]
Niet Hoe maar wat de functie ervan is
| 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])."' "); ?> |
want?quote: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.quote: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.
Jawel, daarmee kun je verder zoeken. Alsof ik hele snippets uit een boek ga overtypen.quote: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.
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.quote: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
| 1 2 3 4 5 6 | <?php for ($i=1; $i <=31; $i++) { echo $i; } ?> |
| 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> |
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...quote:Op zaterdag 19 februari 2011 19:15 schreef Tegan het volgende:
Ik ben wel erg benieuwd wat jouw code was die foutmeldingen gaf.
| 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!"; } } ?> |
Ik heb net even een pauze gehad en blij naar boven gestormd omdat ik het wist. Wat kan eten toch wonderen doenquote:Op zondag 20 februari 2011 00:43 schreef ursel het volgende:
echo je $go_ahead maar eens, dan zul je het wel zien.
| 1 2 3 | <?php $found = mysql_result(mysql_query("SELECT count(0) FROM ftpuser WHERE userid = '".$_POST['username']."' LIMIT 1"), 0, 0); ?> |
| 1 2 3 | <?php if($found > 0) ?> |
| 1 | Warning: mysql_result() expects parameter 1 to be resource, boolean given in (..) on line 3 |
| 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. } ?> |
count(*) is gebruikelijker, je limit is overbodig, en volgens mij heb je met $found == 0 geen aanwezigheid en met $found == 1 wel.quote: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?
Geen prepared statements?quote: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.
| Forum Opties | |
|---|---|
| Forumhop: | |
| Hop naar: | |