abonnement Unibet Coolblue
pi_94180236

cd niet bijgeleverd

Als je vragen hebt over PHP/MySQL, dan zit je hier goed met een vaste kliek guru's en een groot aantal regelmatige bezoekers. Beperk je vragen niet tot "hij doet het niet" of "hij geeft een fout" - onze glazen bol is kapot en we willen graag van je weten wát er niet lukt en wélke foutmelding je precies krijgt :)

Vorige delen:
Via de zoekfunctie

Zie ook:
PHP Dataverwerking
Officiële PHP website
PHP Documentatie
MySQL Reference Manual
Yet Another PHP Faq
PHP Cheat Sheet
PHP5 Power Programming - boek met uitleg over OOP, Pear, XML, etc

Tutorials:
W3Schools PHP
W3Schools SQL

Deze OP en instructies voor nieuw topic: http://wiki.fok.nl/index.php/OP/PHP

En ik sloot af met de volgende post:

--

Ik heb het met PDO opgelost, daar kan ik individueel peer 'tag' opgeven welke waarde ik er aan wil toekennen, bv

1"REPLACE INTO `tabel` (`een`,`twee`,`drie`) VALUES (:een,:twee,:drie)"

Vanuit een DESCRIBE TABLE heb ik alle kolommen idd al gehaald en ook als zodanig de query opgebouwd en daarna bindValue laten doen.

Stukje code waar ik uiteindelijk op gekomen ben :)

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
<?php

$db_old 
= new PDO(...);
$db_new = new PDO(...);

$res_new $db_new->query("DESCRIBE `database_nieuw`.`tabel_nieuw`");

$fields = array();
$fields_types = array();
$fields_filling = array();

while (
$row_new $res_new->fetchObject()) {
        
array_push($fields,"`".$row_new->Field."`");
        
array_push($fields_filling,":".$row_new->Field."");
        if (
preg_match("/int\(\d+\)/",$row_new->Type)) {
                
$fields_types[$row_new->Field] = PDO::PARAM_INT;
        } elseif (
preg_match("/date|text|varchar/",$row_new->Type)) {
                
$fields_types[$row_new->Field] = PDO::PARAM_STR;
        } else {
                
$fields_types[$row_new->Field] = PDO::PARAM_STR;
        }
}

$to_prepare "REPLACE INTO `database_nieuw`.`tabel_nieuw` (".implode(",",$fields).") VALUES (".implode(",",$fields_filling).")";

echo 
"To prepare: "  $to_prepare "\n";

$res $db_old->query("SELECT * FROM `database_oud`.`tabel_oud`");

while(
$row $res->fetchObject()) {
        
$this_array = array();
        
$sth $db_new->prepare($to_prepare);
        foreach (
$fields as $f) {
                
$f2 preg_replace("/`/","",$f);
                
$sth->bindValue(":".$f2,$row->$f2,$fields_types[$f2]);
                echo 
"Binding " $f2 ." : " .$row->$f2"\n";
        }
        
$sth->execute();
}
?>

Maar ik vraag me eigenlijk af waarom de features van PDO en mysqli zo verwant aan elkaar zijn, maar dan toch op zulke dingen eigenlijk weer verschillen?
pi_94180727
Leuke discussie die op mijn post volgde :@

Straatnamen kunnen idd ook een spatie kunnen bevatten

Bv Henriette Rolandstraat 15a
Plein 1945 12a is idd niet te doen, maar dat kan ik altijd later nog met de hand er uit filteren.

Maar ik zal zelf nog eens een regex opzetje maken :@ tenminste een poging doen :P
Just say hi!
pi_94181193
Als je de string waarin straat en huisnummer vermeld staat, split per spatie, het laatste element eraf popt (array_pop) en de rest weer joined. Dan heb je denk (als huisnummer altijd vermeld is!) een redelijk scheiding volgens mij.
  woensdag 16 maart 2011 @ 10:05:05 #4
302853 themole
graaft totaal door.
pi_94182593
quote:
1s.gif Op woensdag 16 maart 2011 09:13 schreef Keiichi het volgende:
Als je de string waarin straat en huisnummer vermeld staat, split per spatie, het laatste element eraf popt (array_pop) en de rest weer joined. Dan heb je denk (als huisnummer altijd vermeld is!) een redelijk scheiding volgens mij.
Hij gaf in het vorige topic het volgende voorbeeld.
straatnaam 12 a1
In dit geval werkt jouw methode niet, maar het is wel een redelijk accurate methode want in alle andere gevallen werkt ie wel.
Niet altijd serieus
pi_94182832
Misschien dat je hier iets aan hebt: http://kvdb.net/projects/6pp/downloads

Alle straten (en postcodes) van heel nederland.
  woensdag 16 maart 2011 @ 10:16:29 #6
75592 GlowMouse
l'état, c'est moi
pi_94182928
Dat zijn helemaal niet alle straten van heel Nederland. Maar bij die paar straten die er wel instaan kun je het wel gebruiken.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_94183008
quote:
1s.gif Op woensdag 16 maart 2011 10:16 schreef GlowMouse het volgende:
Dat zijn helemaal niet alle straten van heel Nederland. Maar bij die paar straten die er wel instaan kun je het wel gebruiken.
Het is iets in ieder geval. Maar ik dacht dat die database redelijke compleet was.
pi_94183840
quote:
1s.gif Op woensdag 16 maart 2011 10:19 schreef Keiichi het volgende:

[..]

Het is iets in ieder geval. Maar ik dacht dat die database redelijke compleet was.
Kun je het niet jatten van goeggel maps?
  woensdag 16 maart 2011 @ 11:05:19 #9
75592 GlowMouse
l'état, c'est moi
pi_94184331
quote:
1s.gif Op woensdag 16 maart 2011 10:47 schreef shintek het volgende:

[..]

Kun je het niet jatten van goeggel maps?
Die kent ook niet alle straten.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  woensdag 16 maart 2011 @ 13:00:33 #10
113667 Keiichi
Konnichiwa!
pi_94188066
quote:
1s.gif Op woensdag 16 maart 2011 11:05 schreef GlowMouse het volgende:

[..]

Die kent ook niet alle straten.
Heb je voorbeelden? Ik kan me voorstellen dat een straat in een nieuwbouwwijk die net 1 dag geleden opgeleverd is er niet instaat.
  woensdag 16 maart 2011 @ 13:14:58 #11
75592 GlowMouse
l'état, c'est moi
pi_94188629
Ik ken een straat in de buurt die er iets meer dan een jaar geleden is aangelegd en waar sindsdien ook mensen wonen.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  woensdag 16 maart 2011 @ 13:29:14 #12
63192 ursel
"Het Is Hier Fantastisch!
pi_94189086
quote:
1s.gif Op woensdag 16 maart 2011 10:16 schreef GlowMouse het volgende:
Dat zijn helemaal niet alle straten van heel Nederland. Maar bij die paar straten die er wel instaan kun je het wel gebruiken.
Het is wel iets meer dan een paar straten hoor. :')
Hij is inderdaad niet volledig compleet, maar om het nu af te doen te doen als broddel werk is ook weer iets te negatief.

Op zakelijk niveau schiet het zeker wel te kort (met name de LAT en LNG liggen wel eens meer dan 4 km er vanaf :') ).
Maar voor meer simpelere site kan het best werken.
  woensdag 16 maart 2011 @ 13:30:48 #13
75592 GlowMouse
l'état, c'est moi
pi_94189125
Vandaar ook:
quote:
1s.gif Op woensdag 16 maart 2011 10:16 schreef GlowMouse het volgende:
bij die paar straten die er wel instaan kun je het wel gebruiken.
En als hij er niet instaat ga je zelf splitten.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_94189132
quote:
1s.gif Op dinsdag 15 maart 2011 21:15 schreef GlowMouse het volgende:

[..]

In dat geval zoek je [0-9x]*\.[0-9x]*, waarna je de x via str_replace uit het resultaat haalt.
Hmmm die x was gewoon willekeurig he...

Hij moet van 1bnj4w8.0%81 ook gewoon 148.081 maken en van 1bnj4w8.0%81.83%1 ook 148.081
  woensdag 16 maart 2011 @ 13:32:46 #15
75592 GlowMouse
l'état, c'est moi
pi_94189202
quote:
1bnj4w8.0%81.83%1 ook 148.081
Waarom geen 81.831?
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_94194457
quote:
1s.gif Op woensdag 16 maart 2011 13:32 schreef GlowMouse het volgende:

[..]

Waarom geen 81.831?
Omdat ik het dus zo wil definieren dat alleen de eerste punt geld :)
pi_94203892
LOL, ik denk dat ik de overige 18.000 adressen maar met de hand ga fixen :) bedankt iig!

Andere vraag; hoe is het mogelijk om zonder al te veel poespas te ontdekken of een plaatje grayscaled/zwart-wit is. (tekening).

Heb gegoogled maar kon er weinig over vinden :P

-edit-

welke type gebruik je als je true/false wilt opslaan oftewel 0/1 (geen enum neem ik aan)

[ Bericht 11% gewijzigd door Chandler op 16-03-2011 19:12:49 ]
Just say hi!
  woensdag 16 maart 2011 @ 19:27:39 #18
75592 GlowMouse
l'état, c'est moi
pi_94205441
0/1 voor true false, of ENUM('Y','N'), net wat je voorkeur is.

greyscale/zw kun je volgens mij niet zo makkelijk zien; je zou wat pixels kunnen checken met imagecolorat.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_94206151
quote:
1s.gif Op woensdag 16 maart 2011 19:27 schreef GlowMouse het volgende:
0/1 voor true false, of ENUM('Y','N'), net wat je voorkeur is.
Ik zou 0 voor false en 1 voor true gebruiken. Maakt de code wel zo logisch :)
  woensdag 16 maart 2011 @ 19:40:58 #20
75592 GlowMouse
l'état, c'est moi
pi_94206305
Er stond geen 'respectievelijk' bij.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_94210720
maar ik vraag me af wat sneller is een tinyint (voor boolean) of een enum met y/n of 0/1

Verder lijkt het mij niet echt handig om alle plaatjes te control\leren of de waarden wel tussen de grijs tinten in zit. Kost volgens mij best veel resources zo :@ (gaat om ruim 250K aan plaatjes :P)
Just say hi!
pi_94211516
quote:
1s.gif Op woensdag 16 maart 2011 20:48 schreef Chandler het volgende:
maar ik vraag me af wat sneller is een tinyint (voor boolean) of een enum met y/n of 0/1
Geen idee, maar ik zou denken dat 0/1 sneller is omdat je in de code dan geen stringvergelijking hoeft te doen.
pi_94211645
quote:
1s.gif Op woensdag 16 maart 2011 13:30 schreef Dale. het volgende:

[..]

Hmmm die x was gewoon willekeurig he...

Hij moet van 1bnj4w8.0%81 ook gewoon 148.081 maken en van 1bnj4w8.0%81.83%1 ook 148.081
Dan heb je volgens mij twee regexen nodig, en twee keer preg_replace. Eerst gooi je alles weg wat geen cijfer en/of punt is, daarna moet alles vanaf de tweede punt weg.
  woensdag 16 maart 2011 @ 21:05:27 #24
113667 Keiichi
Konnichiwa!
pi_94211683
quote:
1s.gif Op woensdag 16 maart 2011 21:02 schreef Light het volgende:

[..]

Geen idee, maar ik zou denken dat 0/1 sneller is omdat je in de code dan geen stringvergelijking hoeft te doen.
Er worden in database voor een enum veld wel eea aan trucje gebruikt lijkt me zo. Als je een vastgesteld aantaal waarden heb, dan kun je eigenlijk het daadwerkelijke type INT maken waarbij een onzichtbare tabel gebruikt voor de daadwerkelijke waardes. Zeg maar een soort snelkoppeling naar een foreign key.
  woensdag 16 maart 2011 @ 21:11:13 #25
75592 GlowMouse
l'état, c'est moi
pi_94211975
Het snelheidsverschil is verwaarloosbaar.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')