alle data zonder selectie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

E Ander

E Ander

28/04/2020 10:37:51
Quote Anchor link
Ik ben bezig om de CSV rekeningoverzicht data van ING en SNS thuis in een database te stoppen. Dan wil ik in die data kunnen zoeken op rekeningnummer, jaar, af of bij en mededeling. Stuk voor stuk lukt mij prima. Alles van zoek opdracht voorzien lukt mij maar als ik een zoekterm oversla omdat ik daar geen selectie op wil maken, krijg ik geen data te zien.
B.v. ik wil weten op welke rekening iets bijgeschreven is. Ik kies dus geen waarde in rekening, geen waarde in mededeling en ook niet in jaar maar waarde 'bij' bij 'bij/af'. Dan krijg ik niet uit de database van alle rekeningen dat er iets bij geschreven is te zien.

Ik heb geprobeerd met rekening="" of met rekening="*" maar ik blijf geen uitdraai van de database zien als ik niet voor elke selectie een keuze maak.
Ook inplaats van WHERE rekening='".$rekening."' AND bij_af etc.. geprobeerd met WHERE rekening LIKE'%".$rekening."%" hielp niet.

Kan iemand mij verder helpen?
Alvast bedankt.
Peter
Gewijzigd op 28/04/2020 10:39:45 door E Ander
 
PHP hulp

PHP hulp

22/11/2024 11:03:19
 
- Ariën  -
Beheerder

- Ariën -

28/04/2020 10:52:04
Quote Anchor link
Heb je het al droog geprobeerd in bijv. phpMyAdmin?
 
Jan R

Jan R

28/04/2020 11:55:39
Quote Anchor link
rekening="*" zal zeker niet lukken. Dat is Access sql. in mysql is het rekening="%"

Misschien beter is per zoek mogelijkheid gewoon de where aan te passen met een if-je.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$where = 'true ' . ($zoek1='' ? '' : 'and zoekveld1=' . $zoek1) . ($zoek2='' ? '' : 'and zoekveld2=' . $zoek2);


De 1° true is gewoon om geen extra controles te doen. uit luiheid :)
sqlinjectie niet vergeten natuurlijk

Jan
Gewijzigd op 28/04/2020 11:56:13 door Jan R
 
E Ander

E Ander

28/04/2020 13:15:42
Quote Anchor link
Arien en Jan, bedankt voor het meedenken. Arien, Ik begrijp de opmerking via myadmin niet. De data is te benaderen. De opmerking % ipv * had ik nog niet geprobeerd.
Jan, om de opdracht in stukjes te verdelen had ik ook gedacht maar dat wordt lastig met de wel of niet noodzakelijke 'AND'. De % werkt net als * niet bij mij.
Gewijzigd op 28/04/2020 13:23:59 door E Ander
 
Jan R

Jan R

28/04/2020 13:50:02
Quote Anchor link
E Ander op 28/04/2020 13:15:42:
maar dat wordt lastig met de wel of niet noodzakelijke 'AND'.

Als je iets wilt moet je er moeite voor doen :)

E Ander op 28/04/2020 13:15:42:
De % werkt net als * niet bij mij.

Mijn foutje. Moet via like niet via '=' dus rekening like "%"
 
E Ander

E Ander

28/04/2020 14:30:30
Quote Anchor link
Jan, dat laatste is de gouden tip. LIKE '".$rekening."'. Bij echo "<option value='%'>Kies de rekening </option>"; daar beginnen met %. Nu krijg ik altijd data te zien en door een keuze te maken valt er een deel weg.
Bedankt, nu kan ik veel dingen controleren zonder telkens bij een andere website van een bank te moeten inloggen.
 
Thomas van den Heuvel

Thomas van den Heuvel

28/04/2020 14:30:36
Quote Anchor link
Misschien is het handig om erbij te vermelden dat je in PHP en MySQL aan het werken bent?

Wat mij het meest logische lijkt is de SQL-zoekopdracht opbouwen als string.

Indien een zoekveld niet is ingevuld dan hoeft deze ook niet in de WHERE-conditie opgenomen te worden.
 
E Ander

E Ander

28/04/2020 14:39:10
Quote Anchor link
Thomas, wellicht wel handig om dat te vermelden. Ik nam dat als vanzelfsprekend aan. Eerst had ik losse verschillende zoek opdrachten en werd het geheel er onduidelijk. Nu is er 1 sql regel die door strings ingevuld wordt. Dit werkt nu echt heel makkelijk en overzichtelijk.
 
Thomas van den Heuvel

Thomas van den Heuvel

28/04/2020 14:52:54
Quote Anchor link
Constructies als rekeningnummer LIKE '%' zijn dus niet nodig. Indien er geen rekening wordt geselecteerd, laat dan deze conditie in het geheel achterwege uit de query. Dat bedoel ik met het dynamisch opbouwen van de SQL. Wat je dus niet moet doen is voor al deze condities altijd geldige waarden invullen zoals '%'. Dan schiet je je doel voorbij.
 

30/04/2020 10:17:42
Quote Anchor link
Het is logischer om de code die rijen voorwaardelijk selecteert in de database te doen:

SELECT "NL12BANK34567890" INTO @iban;
SELECT "test" INTO @mededeling;

SELECT * FROM `tabel`
WHERE (@iban IS NULL OR `rekening` = @iban)
AND (@mededeling IS NULL OR `mededeling` LIKE CONCAT("%", @mededeling, "%"));

Een alternatief voor variabelen in MySQL is het gebruik van parameters in een prepared statement, dan kan de SQL er zo uitzien:

SELECT * FROM `tabel`
WHERE ($1 IS NULL OR `rekening` = $1) -- $1 is gevuld met IBAN
AND ($2 IS NULL OR `mededeling` LIKE CONCAT("%", $2, "%")); -- $2 met een stukje van de mededeling
 
E Ander

E Ander

30/04/2020 11:59:46
Quote Anchor link
Ad, bedankt voor jouw reactie. Het gaat er mij om dat ik geregeld verschillende dingen wil vinden in een database van verschillende rekeningen.
Soms alles van 1 rekening, De andere keer wil ik b.v. weten waar de belasting op terug gestord is. Soms dus zoeken op rekening, soms op mededeling dan weer op bij/af of datum. Die zoek mogelijkheid wil ik het liefst in een form met 1 opdracht. Nu kan ik een zoekopdracht zenden en alleen dat gene invullen waar ik op wil zoeken. Als ik geen keuze maak krijg ik alle data te zien.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.