abonnement Unibet Coolblue Bitvavo
  dinsdag 9 mei 2006 @ 23:14:37 #241
91039 mstx
2x1/2 = 1/2 x 1/2
pi_37699736
Ik heb een probleempje met MySQL.
Ik heb een tabel met 3 kolommen: voornaam, achternaam, emailadres.
Nu heb ik één tekstvak waar ik de naam in kan typen en daarmee moet ik dus het e-mailadres zien te selecteren. De query moet dus zoiets zijn:
1SELECT * FROM `tabel` WHERE (`voornaam`+`achternaam`)='voornaam achternaam'

Maar die "+" werkt natuurlijk niet. Is er geen functie in MySQL die 2 kolommen aan elkaar plakt ofzo?

P.S. Ik kan niet exploden op een spatie omdat de voornaam (of achternaam misschien ook) ook een spatie kan bevatten.
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_37703737
1. Kan je de voor en achternaam niet los laten invullen oid?
2.
1
2
3
4
5
6
7
8
9
10
11
12
<?php
php
$naam
= "Jantje van Jansen";

$array = explode(" ", $naam);
$voornaam = $array['0'];
$achternaam = "";

for(
$i = 1; $i &lt; count($array); $i++){
        
$achternaam .= " ".$array[$i];
}
?>


[ Bericht 5% gewijzigd door fokME2 op 10-05-2006 08:20:12 (Ik moet gaan lezen 0=)) ]
pi_37703772
quote:
Op dinsdag 9 mei 2006 23:14 schreef mstx het volgende:
Ik heb een probleempje met MySQL.
Ik heb een tabel met 3 kolommen: voornaam, achternaam, emailadres.
Nu heb ik één tekstvak waar ik de naam in kan typen en daarmee moet ik dus het e-mailadres zien te selecteren. De query moet dus zoiets zijn:
[ code verwijderd ]

Maar die "+" werkt natuurlijk niet. Is er geen functie in MySQL die 2 kolommen aan elkaar plakt ofzo?

P.S. Ik kan niet exploden op een spatie omdat de voornaam (of achternaam misschien ook) ook een spatie kan bevatten.
MySQL is eigenwijs bij het aan elkaar plakken van strings. Ze hebben daar een complete functie voor, CONCAT genaamd
  woensdag 10 mei 2006 @ 10:03:44 #244
91039 mstx
2x1/2 = 1/2 x 1/2
pi_37705680
quote:
Op woensdag 10 mei 2006 08:22 schreef Light het volgende:

[..]

MySQL is eigenwijs bij het aan elkaar plakken van strings. Ze hebben daar een complete functie voor, CONCAT genaamd
Zoiets zocht ik ja. Ik zal het vanmiddag eens uitproberen.
Bedankt!

En voornaam en achternaam apart laten invullen kan niet. Het is namelijk voor een webmail programmatje. Bij het opstellen van een nieuw bericht begin je te typen in het "Aan:"-veld en m.b.v. AJAX roep ik dus deze pagina aan om in het adresboek te zoeken naar contactpersonen die met die letters (die je typt) beginnen. (Net zoiets dus als bij google suggest en op www.ns.nl maar bij mij werkt het ook als je een komma typt en dan nog een persoon zoekt.)

[ Bericht 14% gewijzigd door mstx op 10-05-2006 10:14:51 ]
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.
👾
  woensdag 10 mei 2006 @ 10:17:23 #245
91039 mstx
2x1/2 = 1/2 x 1/2
pi_37706028
quote:
Op woensdag 10 mei 2006 08:19 schreef fokME2 het volgende:
2.
[ code verwijderd ]
Volgens mij gaat dat mis als je de naam "Karel Jan van den Broek" hebt o.i.d.
Dat zou in 99% van de gevallen wel werken maar bij mij is het dus voor in een adresboek (had ik idd. niet gemeld ) waar je bijv. ook "Opa & Oma Bakker" zou kunnen hebben.

[ Bericht 13% gewijzigd door mstx op 10-05-2006 10:23:05 ]
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_37707211
Dat heb je altijd... Of je moet een lijst van voornamen en een lijst van achternamen ergens vandaan halen....

Misschien wel een werkende oplossing: De achternaam is de laatste woord, of de eerst voorkomende naam welke niet met een hoofdletter begint.

Moet je natuurlijk wel tussenvoegsels zonder hoofdletter schrijven, en geen ope & oma erin gooien
  woensdag 10 mei 2006 @ 14:24:32 #247
12880 CraZaay
prettig gestoord
pi_37707968
quote:
Op woensdag 10 mei 2006 10:03 schreef mstx het volgende:

[..]

Zoiets zocht ik ja. Ik zal het vanmiddag eens uitproberen.
Bedankt!

En voornaam en achternaam apart laten invullen kan niet. Het is namelijk voor een webmail programmatje. Bij het opstellen van een nieuw bericht begin je te typen in het "Aan:"-veld en m.b.v. AJAX roep ik dus deze pagina aan om in het adresboek te zoeken naar contactpersonen die met die letters (die je typt) beginnen. (Net zoiets dus als bij google suggest en op www.ns.nl maar bij mij werkt het ook als je een komma typt en dan nog een persoon zoekt.)
Volgens mij zou het opslaan in twee verschillende velden dan juist heel erg zinnig zijn. Je kunt dan namelijk zoeken op "voornaam achternaam", maar iemand die dan ook alleen "achternaam" in kunnen typen, of "achternaam, voornaam".
  woensdag 10 mei 2006 @ 16:32:52 #248
91039 mstx
2x1/2 = 1/2 x 1/2
pi_37711303
quote:
Op woensdag 10 mei 2006 14:24 schreef CraZaay het volgende:

[..]

Volgens mij zou het opslaan in twee verschillende velden dan juist heel erg zinnig zijn. Je kunt dan namelijk zoeken op "voornaam achternaam", maar iemand die dan ook alleen "achternaam" in kunnen typen, of "achternaam, voornaam".
Ter verduidelijking, het gaat dus om dit:

En het is opgeslagen in 2 aparte kolommen.
Hij kijkt nu of de eerste letters van de voornaam OF achternaam OF emailadres met een "m" begint. Maar als je nu "voornaam achternaam" intypt kan hij niks vinden (omdat kolom "voornaam" niet "voornaam achternaam" bevat en kolom "achternaam" ook niet) dus ik ga straks even die CONCAT functie proberen.
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_37711463
Ik heb een vraagje waarvan ik niet weet of het uberhaubt wel mogelijk is.

Ik heb een database met users, met username, password, en ehh, data ofzo.
de informatie uit deze database wil ik gedeeltelijk delen met anderen. dus een vriend van mij heeft websiteA.nl ofzo, waar een login schermpje op te vinden is. hier logt een gebruiker in met een username en password. Nou wil ik dat aan de hand van die login, de data uit veld 'data' wordt verkregen. dat kan natuurlijk via een standaard query en externe database toegang, maar dan kan de query aangepast worden zodat alle data beschikbaar is voor degene met toegang, en dat wil ik dus juist beperken.

alleen de data van de rij met het ingevoerde username en password moet doorgestuurd worden.

kan dit via een bepaalde mysql beveiliging? of zou ik dit via een soort redirect van server naar server moeten doen, zodat ik de query in eigen beheer hou en via post de data doorstuur naar de client?

misschien beetje lastig verhaal
As a rule, I never touch anything more sophisticated and delicate than myself.
  woensdag 10 mei 2006 @ 16:55:28 #250
12880 CraZaay
prettig gestoord
pi_37711979
quote:
Op woensdag 10 mei 2006 16:32 schreef mstx het volgende:

[..]

Ter verduidelijking, het gaat dus om dit:
[afbeelding]
En het is opgeslagen in 2 aparte kolommen.
Hij kijkt nu of de eerste letters van de voornaam OF achternaam OF emailadres met een "m" begint. Maar als je nu "voornaam achternaam" intypt kan hij niks vinden (omdat kolom "voornaam" niet "voornaam achternaam" bevat en kolom "achternaam" ook niet) dus ik ga straks even die CONCAT functie proberen.
Ik snap je probleem, maar met wat creativiteit zou je een eind moeten kunnen komen, ook als concat niet mocht werken op de manier die je voor ogen hebt. Als je de voornaam bijvoorbeeld hebt zou je verder kunnen zoeken op de achternamen van de personen waarvan de voornamen al matchen.
pi_37712802
quote:
Op woensdag 10 mei 2006 16:32 schreef mstx het volgende:

[..]

Ter verduidelijking, het gaat dus om dit:
[afbeelding]
En het is opgeslagen in 2 aparte kolommen.
Hij kijkt nu of de eerste letters van de voornaam OF achternaam OF emailadres met een "m" begint. Maar als je nu "voornaam achternaam" intypt kan hij niks vinden (omdat kolom "voornaam" niet "voornaam achternaam" bevat en kolom "achternaam" ook niet) dus ik ga straks even die CONCAT functie proberen.
Dit is iets wat je denk ik beter met javascript kunt oplossen dan met SQL je kunt bijvoorbeeld, op het moment dat iemand "voornaam achternaam" intypt, met javascript het opsplitsen en d.m.v. AJAX apart doorgeven. Op die manier kun je verder in PHP bepalen hoe je de query samenstelt aan de hand van de ingetypte woorden

Dit zeg ik omdat een CONCAT() op een grote tabel nogal langzaam is vergeleken met twee kolommen 'voornaam' en 'achternaam' waarop een INDEX ligt.
pi_37712858
quote:
Op woensdag 10 mei 2006 16:38 schreef Desdinova het volgende:
Ik heb een database met users, met username, password, en ehh, data ofzo.
de informatie uit deze database wil ik gedeeltelijk delen met anderen. dus een vriend van mij heeft websiteA.nl ofzo, waar een login schermpje op te vinden is. hier logt een gebruiker in met een username en password.
Hier stop ik even. Je weet wat 'inloggen' inhoudt op websiteA.nl? Waarschijnlijk krijgt de gebruiker hier een session ID toegestuurd en wordt deze in een cookie voor het domein websiteA.nl opgeslagen.
quote:
Nou wil ik dat aan de hand van die login, de data uit veld 'data' wordt verkregen. dat kan natuurlijk via een standaard query en externe database toegang, maar dan kan de query aangepast worden zodat alle data beschikbaar is voor degene met toegang, en dat wil ik dus juist beperken.
Zoals eerder gezegd zul je dan de inloggegevens moeten hebben via de session, wat voor de meeste browsers inhoudt dat je een subdomein of subdirectory van websiteA.nl moet zijn. Een ingelogde gebruiker zal op websiteB.nl nu eenmaal niet zomaar zijn session ID afstaan.
pi_37713001
quote:
Op woensdag 10 mei 2006 17:25 schreef JeRa het volgende:

[..]

Hier stop ik even. Je weet wat 'inloggen' inhoudt op websiteA.nl? Waarschijnlijk krijgt de gebruiker hier een session ID toegestuurd en wordt deze in een cookie voor het domein websiteA.nl opgeslagen.
[..]

Zoals eerder gezegd zul je dan de inloggegevens moeten hebben via de session, wat voor de meeste browsers inhoudt dat je een subdomein of subdirectory van websiteA.nl moet zijn. Een ingelogde gebruiker zal op websiteB.nl nu eenmaal niet zomaar zijn session ID afstaan.
sessie is idd niet te behouden want zijn andere servers. het gaat meer om verifiering van username+wachtwoord en het zoeken van de daarbij horende data. maar pin me niet vast op mn woorden want ik roep ook maar iets ik wil gewoon mn data van die gebruiker naar de andere server hebben zonder dat andere data toegankelijk is (tenzij username+password valid is)
As a rule, I never touch anything more sophisticated and delicate than myself.
pi_37713061
quote:
Op woensdag 10 mei 2006 17:30 schreef Desdinova het volgende:

[..]

ik wil gewoon mn data van die gebruiker naar de andere server hebben zonder dat andere data toegankelijk is (tenzij username+password valid is)
WebsiteA.nl maakt gebruik van een MySQL-server, en als websiteB.nl hier ook toegang tot heeft kun je toch gewoon SQL-queries uitvoeren waarmee je de data ophaalt? Het is niet zo alsof je gebruikers zomaar je queries kunnen aanpassen, of je doet iets gruwelijks fout.
pi_37713479
Website A stuurt een query naar website B. Selecteer user_iduit tabel WHERE username is $username en password=$password.
Als strtlen($query[' user_id'] >0) session instellen.
Dat instellen van die sessie gebeurt dan op server A.

het enige dat je dus doet is controleren of een query op de usertabel met username en password succesvol kan worden uitgevoerd. Kan dit, dan is de login gelukt.
pi_37713705
Ik bekijk dingen veel te moeilijk geloof ik.
  woensdag 10 mei 2006 @ 19:45:39 #257
91039 mstx
2x1/2 = 1/2 x 1/2
pi_37716172
Het werkt! Bedankt voor de hulp en suggesties.
Voor de geïnteresseerden, dit is nu mijn query:
($e is de string die de gebruiker intypt)
1
2
3
4
5
6
7
8
9
SELECT * FROM `abook` WHERE (

                     LEFT(`email`, ".$e_length.") = '".$e."'
                  OR   
                     LEFT(`firstname`, ".$e_length.") = '".$e."'
                  OR   
                     LEFT(`lastname`, ".$e_length.") = '".$e."'
                  OR 
                     LEFT(CONCAT(`firstname`, ' ', `lastname`), ".$e_length.") = '".$e."')  

Als het nog beter zou kunnen hoor ik het graag.
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_37722597
Ik wil mijn zoekfunctie verbeteren door de FULL TEXT zoekfunctie..

Maar ik loop tegen een aantal vreemde resultaten aan:
Ik heb een tabel Documents waarvan de titel en inhoud FULL TEXT zijn.

Als ik de volgende query doe krijg ik niets:
1
2
3
SELECT document_name, document
FROM documents 
WHERE MATCH (document_name) AGAINST ('script' IN BOOLEAN MODE) 

Maar als ik deze query heb krijg ik wel resultaten:

1
2
3
SELECT document_name, document
FROM documents 
WHERE MATCH (document_name) AGAINST ('javascript' IN BOOLEAN MODE) 


Dus als ik zoek op 'script' krijg ik niet en met 'javascript' wel.. Hoe kan ik dit aanpassen?

En deze query loopt ook niet zoals verwacht:
1
2
3
SELECT document_name, document, MATCH (document) AGAINST ('+php+script' IN BOOLEAN MODE) as percent
FROM documents 
WHERE MATCH (document) AGAINST ('+php+script' IN BOOLEAN MODE) 

Ik krijg bij de resultaten documenten waarin het woord PHP helemaal niet staat (??) en de kolom PERCENT is overal 1.

Hoe kan dit? Of wat doe ik fout?
pi_37722997
@mooya

De FULLTEXT index baseert zich afaik alleen op gehele woorden en niet op gedeeltes daarvan. 'script' matcht dus niet met 'javascript'. Je tweede probleem heb ik even geen antwoord op, ligt miss aan de manier waarop de modifiers werken je MySQL-versie is wel hoog genoeg voor BOOLEAN MODE?
  FOK!-Schrikkelbaas woensdag 10 mei 2006 @ 23:39:57 #260
1972 Swetsenegger
Egocentrische Narcist
pi_37723999
Wat zie ik over het hoofd

1
2
3
4
5
6
7
8
9
10
11
12
13
$parts=explode('~', $order[1]);
   if(count($parts) > 1){
     $user_id=$parts[0];
     $order_id=$parts[1];
     $queryUser="UPDATE users SET activated='1' WHERE user_id=".$user_id;
      mysql_query($queryUser);
     $queryOrders="UPDATE test_orders SET activated='1' WHERE order_id=".$order_id;
      mysql_query($queryOrders);      
    }else{
      $order_id=$parts[0];
     $queryOrders="UPDATE test_orders SET activated='1' WHERE order_id=".$order_id;
      mysql_query($queryOrders); 
   }


als ik de query's echo:

1
2
UPDATE users SET activated='1' WHERE user_id=1 
UPDATE test_orders SET activated='1' WHERE order_id=13


Toch is in de tabellen activated niet geset nadat dit script is uitgevoerd.


-edit-

Ach fuck, ik heb heel de db toegang niet geinclude in het script
pi_37724113
quote:
Op woensdag 10 mei 2006 23:39 schreef Swetsenegger het volgende:
Ach fuck, ik heb heel de db toegang niet geinclude in het script


Geeft ie normaal dan geen foutmelding op mysql_query()?
  FOK!-Schrikkelbaas woensdag 10 mei 2006 @ 23:50:59 #262
1972 Swetsenegger
Egocentrische Narcist
pi_37724301
quote:
Op woensdag 10 mei 2006 23:43 schreef JeRa het volgende:

[..]



Geeft ie normaal dan geen foutmelding op mysql_query()?
Het is een script welke een xml catcht en vervolgens verwerkt. Het script draait dus niet in de browser. En ik weet niet hoe ik een fake xml kan aanbieden.

Dus heb ik allerlei debug fwrites toegevoegd . Zo kon ik zien dat alles eigenlijk goed ging, maar mijn tabellen updaten ho maar. Al uren aan het kutten met quote-tje hier en kommaatje daar enzo. Ik post hier, lees mijn eigen post nog eens terug en denk.... ow fuck
pi_37724478
quote:
Op woensdag 10 mei 2006 23:50 schreef Swetsenegger het volgende:

[..]

Het is een script welke een xml catcht en vervolgens verwerkt. Het script draait dus niet in de browser. En ik weet niet hoe ik een fake xml kan aanbieden.
Als dat om zo'n overschrijvings-XML gaat (van de bank) lijkt het me verstandig om een manier te vinden om héél veel te testen met fake XML's ze worden neem ik aan via een HTTP-POST gestuurd? Kun je die niet nabootsen door een tweede scriptje te schrijven dat via een socket stream wat data stuurt (en eventueel wil ik hier nog wel een voorbeeldje plaatsen)?
pi_37730362
Ik wil graag een FAQ-tool lokaal draaien. Ik heb hiervoor een php script http://www.phpmyfaq.de/ en heb wamp geinstalleerd (standaard). De database bij dit script zou die zelf moeten genereren. Maar als ik het script wil installeren krijg ik de volgende foutmelding:

“The connection to the sqlite server could not be established”

Mis ik nou instellingen die gedaan moeten worden in wamp, phpadmin, sqlitemanager of in een script zelf nog?

Btw ik ben een complete n00b met een webserver opzetten.

Alvast bedankt.
pi_37732182
quote:
Op woensdag 10 mei 2006 17:33 schreef JeRa het volgende:

[..]

WebsiteA.nl maakt gebruik van een MySQL-server, en als websiteB.nl hier ook toegang tot heeft kun je toch gewoon SQL-queries uitvoeren waarmee je de data ophaalt? Het is niet zo alsof je gebruikers zomaar je queries kunnen aanpassen, of je doet iets gruwelijks fout.
hehe ja ik snap wat je bedoelt
maar het punt is dus, die toegang tot de database vanaf websiteB.nl moet beperkt zijn tot alleen het verkrijgen van de gegevens die horen bij de opgegeven gegevens. 1 rij dus.

maar ik heb al n ideetje, even kijken of dat lukt.
As a rule, I never touch anything more sophisticated and delicate than myself.
  FOK!-Schrikkelbaas donderdag 11 mei 2006 @ 12:30:00 #266
1972 Swetsenegger
Egocentrische Narcist
pi_37733057
quote:
Op woensdag 10 mei 2006 23:56 schreef JeRa het volgende:

[..]

Als dat om zo'n overschrijvings-XML gaat (van de bank) lijkt het me verstandig om een manier te vinden om héél veel te testen met fake XML's ze worden neem ik aan via een HTTP-POST gestuurd? Kun je die niet nabootsen door een tweede scriptje te schrijven dat via een socket stream wat data stuurt (en eventueel wil ik hier nog wel een voorbeeldje plaatsen)?
Ik gewoon testen tegen de test-omgeving van de bank.
Nadat de eerste integratietesten geslaagd zijn, mag je WEL het test systeem misbruiken voor je eigen tests en dat werkt goed.

Dus inderdaad ga ik nu zeer uitgebreid met daadwerkelijke bestelling controleren hoe het met die XML loopt.
  donderdag 11 mei 2006 @ 15:16:15 #267
12880 CraZaay
prettig gestoord
pi_37737544
quote:
Op donderdag 11 mei 2006 11:53 schreef Desdinova het volgende:

[..]

hehe ja ik snap wat je bedoelt
maar het punt is dus, die toegang tot de database vanaf websiteB.nl moet beperkt zijn tot alleen het verkrijgen van de gegevens die horen bij de opgegeven gegevens. 1 rij dus.

maar ik heb al n ideetje, even kijken of dat lukt.
Je hoeft natuurlijk siteB geen toegang te geven tot een remote databaseserver. Je kunt op siteA prima een API draaien waar je gebruik van maakt. En tadaa, je eigen Identity Management / Single Sign-On is geboren
pi_37738247
quote:
Op donderdag 11 mei 2006 12:30 schreef Swetsenegger het volgende:

[..]

Ik gewoon testen tegen de test-omgeving van de bank.
Nadat de eerste integratietesten geslaagd zijn, mag je WEL het test systeem misbruiken voor je eigen tests en dat werkt goed.
Dat is wel heel tof, dat ze een testomgeving aanbieden. Welke bank / betalingssysteem was dat ook alweer?
pi_37738285
quote:
Op donderdag 11 mei 2006 15:16 schreef CraZaay het volgende:

[..]

Je hoeft natuurlijk siteB geen toegang te geven tot een remote databaseserver. Je kunt op siteA prima een API draaien waar je gebruik van maakt. En tadaa, je eigen Identity Management / Single Sign-On is geboren
En hoe moet siteB gebruik maken van die API? Lijkt me dat dat alsnog via authenticatie of een secure socket layer moet gebeuren
  FOK!-Schrikkelbaas donderdag 11 mei 2006 @ 15:50:59 #270
1972 Swetsenegger
Egocentrische Narcist
pi_37738583
quote:
Op donderdag 11 mei 2006 15:38 schreef JeRa het volgende:

[..]

Dat is wel heel tof, dat ze een testomgeving aanbieden. Welke bank / betalingssysteem was dat ook alweer?
iDEAL een samenwerking van Rabo, ABN, ING, Postbank en Fortis. Je betaalt gewoon met je internet bankier omgeving.

De documentatie is niet echt duidelijk, dus je moet veel uit proberen. Ze hebben een testomgeving welke je moet gebruiken voor integratietests. Daarvoor moet je 7 bestelling met bepaalde bedragen naar iDEAL sturen. Vervolgens zijn die tests dan geslaagd. Wat echter niet vermeld wordt in de documentatie is dat je die testomgeving gewoon kan blijven misbruiken voor verdere testen.

Je kan je voorstellen dat de vaste bedragen fixed in het order form werden gezet. Maar ik wil ook graag kunnen testen met dynamische bestellingen, proidukten en verzendkosten en dergelijke. Dat lukt nu dus.

Op zich een zeer laagdrempelig betaal systeem voor de consumten. Voor een webshop redelijk eenvoudig te implementeren, alleen de documentatie zou beter kunnen.
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')