abonnement Unibet Coolblue
pi_103552080
quote:
0s.gif Op dinsdag 25 oktober 2011 16:04 schreef Crutch het volgende:
en je table rows tussen ``?
lolwut?

dat is de phpmyadmin methode die slecht is. De reden dat mensen dat gebruiken is omdat ze ongeldige rownamen gebruiken. Bijvoorbeeld als order, bij een menu ofzo. Dat zijn gereserveerde woorden die je niet moet gebruiken iin je DB.

`` weglaten dus bij dat.
'' zijn wel weer belangrijk bij het invoeren van data.
Het probleem met jre script is dat je dingen moet gaan escapen. Mijn vriendin haar achternaam is d'Anjou als je dat invoert crasht je script op het moment.
Variabelen kun je escapen doormiddel van mysql_real_escape_string() of met PDO(wat een goede tip was trouwens).

hier even een VB hoe het met een implode zou kunnen die hierboven nog niet werkt:

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

$query = 'INSERT INTO table (row1, row2,row3,row4,etc) VALUES ("'. implode('",""', $infoarray).'")';

echo $query;

// dit zou dus een goede query terug moeten geven als je zeker weet dat de data geldig is.


// mijn functie (lichtelijk aangepast aangezien deze in mijn script is geintegreerd)
// $data moet er als volgt uit zien
// array('naam' => 'naamhier', 'achternaam' => 'blabla', 'etc' => 'jesnaptmijnpunt')  
function insert($table, $data = array()) {
             if(count($data) > 0) {
                $sql = 'INSERT INTO '.$table.' ';
                foreach($data as $key => $value) {
                    $keys .= ' '.$key.',';
                    $values .= ' "'.mysql_real_escape_string($value).'",';    
                }
                $keys = substr($keys, 0, -1);
                $values = substr($values, 0, -1);
                
                $sql .= '('.$keys.') VALUES ('.$values.')';
                
                $result = mysql_query($sql);
                if(mysql_affected_rows($result) > 0) {
                    return true;
                } else {
                    echo mysql_error();
                    return false;
                }
                
            }


[ Bericht 43% gewijzigd door #ANONIEM op 25-10-2011 19:19:59 ]
  dinsdag 25 oktober 2011 @ 19:10:07 #52
75592 GlowMouse
l'état, c'est moi
pi_103552114
Als je de keuze hebt, gebruik PDO.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  dinsdag 25 oktober 2011 @ 19:23:11 #53
75592 GlowMouse
l'état, c'est moi
pi_103552703
Je moet nu nog opletten waar de keys vandaan komen.
Een oplossing met array_map, implode, array_keys en array_values kan de leesbaarheid vergroten, evenals verplaatsen van regel 15 naar regel 22.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_103552845
quote:
0s.gif Op dinsdag 25 oktober 2011 19:23 schreef GlowMouse het volgende:
Je moet nu nog opletten waar de keys vandaan komen.
Een oplossing met array_map, implode, array_keys en array_values kan de leesbaarheid vergroten, evenals verplaatsen van regel 15 naar regel 22.
dat zeker ja. Dit is ook mijn functie en ik weet 100% zeker dat mijn input goed is. Dit omdat ik een model heb van elke tabel met daarin aangegeven wat de primary key is en welke rows aagepast mogen worden door het script.

Het was ook als voorbeeld aangezien ik geen PDO gebruik (eigen database class). Hoe je het ook wendt of keert hij zal toch iets moeten doen qua beveiliging.
  dinsdag 25 oktober 2011 @ 19:57:16 #55
12221 Tijn
Powered by MS Paint
pi_103554409
quote:
7s.gif Op dinsdag 25 oktober 2011 18:42 schreef GlowMouse het volgende:

[..]

dat werkt niet, draai maar met echo 'hoi'; op regel 3.
Ah, inderdaad. Hij doet iets meer cycles dan 1 per seconde natuurlijk :')

Even 3 seconden sleepen lijkt me dan idd ook de beste oplossing. Of anders helemaal geen loop in je script en het gewoon elke 3 seconden aanroepen via een cronjob ofzo.
  dinsdag 25 oktober 2011 @ 19:57:51 #56
75592 GlowMouse
l'état, c'est moi
pi_103554430
quote:
14s.gif Op dinsdag 25 oktober 2011 19:57 schreef Tijn het volgende:

[..]

Ah, inderdaad. Hij doet iets meer cycles dan 1 per seconde natuurlijk :')

Even 3 seconden sleepen lijkt me dan idd ook de beste oplossing. Of anders helemaal geen loop in je script en het gewoon elke 3 seconden aanroepen via een cronjob ofzo.
Cronjobs werken op hele minuten.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  dinsdag 25 oktober 2011 @ 20:53:58 #57
218617 YazooW
bel de wouten!
pi_103556871
quote:
0s.gif Op dinsdag 25 oktober 2011 16:21 schreef baaart het volgende:

[..]

Huh? M'n laatste werkt gewoon. Print je query nog eens inclusief de error en error nummer.
Je hebt gelijk, hij werkt gewoon. Denk dat ik een klein foutje heb gemaakt met jou code kopiëren.
Bedankt voor de moeite!
  dinsdag 25 oktober 2011 @ 21:39:07 #58
12221 Tijn
Powered by MS Paint
pi_103559119
quote:
0s.gif Op dinsdag 25 oktober 2011 19:57 schreef GlowMouse het volgende:

[..]

Cronjobs werken op hele minuten.
Ach, inderdaad. Ik faal weer lekker :')
  dinsdag 25 oktober 2011 @ 21:42:33 #59
75592 GlowMouse
l'état, c'est moi
pi_103559332
quote:
10s.gif Op dinsdag 25 oktober 2011 21:39 schreef Tijn het volgende:

[..]

Ach, inderdaad. Ik faal weer lekker :')
Het is ook niet logisch, komt denk ik nog uit de tijd dat het bekijken wélke cronjob nou precies gedraaid moet worden nog niet was geoptimaliseerd, en het zo tijdrovend was dat het niet elke seconde gedraaid kon worden (van elke user werd de cronfile elke keer ingelezen; tegenwoordig - overigens al tientallen jaren - houdt cron bij wat de volgende job zal zijn).
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  woensdag 26 oktober 2011 @ 10:59:36 #60
281927 mcf
The end is the beginning.
pi_103573991
Hallo,

ik loop tegen een probleem met mysql.
Ik heb dus een reservering systeem gebouwd. En alles goed en wel, maar nu wil ik de prijs van

de bestelling berekenen.

De prijs is gedefinieerd in de tabel 'menus':

id (auto increment)
Naam (varchar)
prijs (INT)
opmerking (Varchar)

De bestelling wordt opgeslagen in 'bestelling'
id
bestelling
datum
begintijd
eindtijd
klantid (relatie aan naw (klantid))

De details worden opgeslagen in 'bestelling_detail'
bestellingid (relatie aan bestelling (id))

prijs (!Hier moet de prijs in komen te staan!!)

bij menu1t/m4 komen de id's van de bestelde menu's per persoonMax 4 personen voor 1 bestellingen
menu1 (relatie aan menus(id)) (dus bijv. 1)
menu2( '' )
menu3
menu4

Dus stel 2 mensen hebben menu 1 besteld, 1 persoon heeft menu 3 besteld en menu4 blijft leeg.
Hoe krijg ik dan de prijzen bij elkaar opgeteld en in bestelling_detail opgeslagen?
Ik vraag hier niet om een script o.i.d. maar een suggestie voor een oplossing

Bij voorbaat dank.
  woensdag 26 oktober 2011 @ 11:31:07 #61
25889 Sitethief
Fulltime Flapdrol
pi_103575046
Tip: gebruik zoiets ipv print_r, zorgt voor een beter overzicht:

1
2
3
4
5
6
7
8
<?php

function echo2($data){
  echo(
'<pre style="border:1px solid black; padding:5px;width:50%;background-color:lightgrey;">');
  
print_r($data);
  echo(
"</pre>");
}
?>
Stroek: Sitethief, die is heel groot en sterk :Y.
Faat: *zucht* zoals gewoonlijk hoor Sitethief weer in de bocht &gt;:)
pi_103575615
quote:
0s.gif Op woensdag 26 oktober 2011 10:59 schreef mcf het volgende:

Dus stel 2 mensen hebben menu 1 besteld, 1 persoon heeft menu 3 besteld en menu4 blijft leeg.
Hoe krijg ik dan de prijzen bij elkaar opgeteld en in bestelling_detail opgeslagen?
Ik vraag hier niet om een script o.i.d. maar een suggestie voor een oplossing

Bij voorbaat dank.
ik zou gewoon de prijzen in een array douwen en in PHP oplossen.

Oh en kudo's voor de onduidelijkste post van het topic.
pi_103575973
quote:
0s.gif Op woensdag 26 oktober 2011 10:59 schreef mcf het volgende:
Hallo,

ik loop tegen een probleem met mysql.
Ik heb dus een reservering systeem gebouwd. En alles goed en wel, maar nu wil ik de prijs van

de bestelling berekenen.

De prijs is gedefinieerd in de tabel 'menus':

id (auto increment)
Naam (varchar)
prijs (INT)
opmerking (Varchar)

De bestelling wordt opgeslagen in 'bestelling'
id
bestelling
datum
begintijd
eindtijd
klantid (relatie aan naw (klantid))

De details worden opgeslagen in 'bestelling_detail'
bestellingid (relatie aan bestelling (id))

prijs (!Hier moet de prijs in komen te staan!!)

bij menu1t/m4 komen de id's van de bestelde menu's per persoonMax 4 personen voor 1 bestellingen
menu1 (relatie aan menus(id)) (dus bijv. 1)
menu2( '' )
menu3
menu4

Dus stel 2 mensen hebben menu 1 besteld, 1 persoon heeft menu 3 besteld en menu4 blijft leeg.
Hoe krijg ik dan de prijzen bij elkaar opgeteld en in bestelling_detail opgeslagen?
Ik vraag hier niet om een script o.i.d. maar een suggestie voor een oplossing

Bij voorbaat dank.
bestelling_detail
- ID (auto increment, aangezien bestellingID en menuID combinaties vaker kunnen voorkomen)
-bestellingID
-menuID
-Prijs (handig als je datawarehouse gaat opzetten)

SELECT SUM(bestelling_detail) FROM bestelling_detail WHERE bestellingID = {degene die je zoekt}

Deze query kun je combineren met ophalen van de gehele bestelling.
  woensdag 26 oktober 2011 @ 12:38:37 #64
281927 mcf
The end is the beginning.
pi_103577288
quote:
0s.gif Op woensdag 26 oktober 2011 11:48 schreef KomtTijd... het volgende:

[..]

ik zou gewoon de prijzen in een array douwen en in PHP oplossen.

Oh en kudo's voor de onduidelijkste post van het topic.
Hmm, frapant. Ik vond mijn post overzichtelijk en duidelijk:
-Groet
-Inleiding
-Database samenvatting
-Probleem

Natuurlijk was het probleem een beetje raar omschreven maar dat komt omdat ik al een hele poos met die code bezig ben en voor mij lijkt het een redelijk normale zaak.
pi_103577368
quote:
0s.gif Op woensdag 26 oktober 2011 12:38 schreef mcf het volgende:

[..]

Hmm, frapant. Ik vond mijn post overzichtelijk en duidelijk:
-Groet
-Inleiding
-Database samenvatting
-Probleem

Natuurlijk was het probleem een beetje raar omschreven maar dat komt omdat ik al een hele poos met die code bezig ben en voor mij lijkt het een redelijk normale zaak.
Groet hoeft niet, inleiding is altijd fijn, maar minimaal, database samenstelling is goed anders wordt het voor ons een groot gok proces, probleem mist geprobeerde oplossingen en je verkeerd bepaalde relaties aan te geven wat mij idee geeft dat je wat in elkaar hebt gebouwd, maar nog niet precies weet wat je doet.

Maar heb je wat aan mijn oplossing? :P
pi_103577570
Ik zou graag reacties willen op mijn tabellen opzet voor 'vangsten' (van visjes).

vangsten (id, gebruiker_id, maakdatum, bewerkdatum, vangstdatum)
vangsten_specs (id, soort, gegeven)

nu wil ik in specs alle andere gegevens toevoegen, bv
soort, lengte, gewicht, aas soort, lokatie, foto id's, vangst details (water temp, diepte, wind, etc)

echter zit ik dan met het probleem van zoeken.

Bv ik wil alle vissen uitlezen die gevangen zijn in bv groningen.
Of alle vissen van een bepaalde soort

Hoe doe ik dat? is mijn opzet goed? of kan ik beter meer gegeens in het 1e tabel zetten? zoals lokatie, etc, deze gegevens zijn welliswaar optioneel maar komen toch wel vaak voor.

Just my thoughts.... :D
Just say hi!
pi_103577765
Heb je een duidelijke definitie van lokatie? Is dit visvijver, stad, omgeving, gemeente of provincie?

Als dit visvijver dan is de parent een stad, dan gemeente, provincie etc.

Alle parents zou ik in verschillende tabellen opnemen en dan is het een eitje met relaties.
  woensdag 26 oktober 2011 @ 12:56:04 #68
281927 mcf
The end is the beginning.
pi_103577919
quote:
0s.gif Op woensdag 26 oktober 2011 12:40 schreef Pakspul het volgende:

[..]

Groet hoeft niet, inleiding is altijd fijn, maar minimaal, database samenstelling is goed anders wordt het voor ons een groot gok proces, probleem mist geprobeerde oplossingen en je verkeerd bepaalde relaties aan te geven wat mij idee geeft dat je wat in elkaar hebt gebouwd, maar nog niet precies weet wat je doet.

Maar heb je wat aan mijn oplossing? :P
Ok, ik ben een beetje mysql noob, dus verbeter mij waar het fout gaat:

SELECT SUM(bestelling_detail)
FROM bestelling_detail WHERE bestellingID = 3
Ik doe dit, in deze bestelling zitten 1x menuid(1) 2x menuid(3) 1xniks
Dus daar wil ik de prijs van berekenen, maar ik krijg de volgende error
#1054 - Unknown column 'bestelling_detail' in 'field list'
pi_103577980
quote:
0s.gif Op woensdag 26 oktober 2011 12:56 schreef mcf het volgende:

[..]

Ok, ik ben een beetje mysql noob, dus verbeter mij waar het fout gaat:

SELECT SUM(bestelling_detail)
FROM bestelling_detail WHERE bestellingID = 3
Ik doe dit, in deze bestelling zitten 1x menuid(1) 2x menuid(3) 1xniks
Dus daar wil ik de prijs van berekenen, maar ik krijg de volgende error
#1054 - Unknown column 'bestelling_detail' in 'field list'
Die foutmelding moet voldoende zeggen lijkt mij? Maar deze moet gaan naar de kolom prijs in de bestelling_detail kolom. Ik weet niet hoe die tabel er nu uitziet?

Tevens als je al problemen hebt met SQL hoe gaat je het dan toepassing in een applicatie?
  woensdag 26 oktober 2011 @ 13:20:42 #70
281927 mcf
The end is the beginning.
pi_103578957
quote:
0s.gif Op woensdag 26 oktober 2011 12:57 schreef Pakspul het volgende:

[..]

Die foutmelding moet voldoende zeggen lijkt mij? Maar deze moet gaan naar de kolom prijs in de bestelling_detail kolom. Ik weet niet hoe die tabel er nu uitziet?

Tevens als je al problemen hebt met SQL hoe gaat je het dan toepassing in een applicatie?
Hier leer ik juist sql van.

Bij bestelling_detail is prijs leeg die wil ik dan veranderen met alter table en de prijs van de menu's in zetten zodat ik later op een pagina met een query de bestelling tonen voor elke klant. Dit gaat allemaal goed maar nu wil ik de prijs ook nog via query uit de db halen maar ik weet niet hoe ik in sql de prijs kan optellen van de menu's.
Menu1
1 relatie aan menus(id(bijvoorbeeld 1)) menus(id, naam, prijs)(1, pasta, 10)
Menu2 .............. ......................................................................................................., 15
Menu3 x
Menu4 x

Ik vermoed dat ik misschien iets met left join zou kunnen doen maar weet niet hoe ik dit moet aanpakken.
Ik hoop dat dit een beetje duidelijk is
  woensdag 26 oktober 2011 @ 13:33:34 #71
267443 Cue_
Cuecumbergirl
pi_103579509
Even een relatief simpele gok ik.

Ik heb een datum veld die ik ophaal uit de database
Hier wil ik 1 jaar bij optellen.
Dit mag ook gelijk met de qry gedaan worden of dat ik hem bewerk in php

(vervolgens dien ik hem weg te schrijven in een andere tabel).

30-09-2010 00:00:00 Dit dient dus 30-09-2011 te worden.
  woensdag 26 oktober 2011 @ 13:39:31 #72
4159 GI
Nee ik heet geen JOE
  woensdag 26 oktober 2011 @ 13:43:42 #73
267443 Cue_
Cuecumbergirl
pi_103579966
quote:
werken die ook allemaal op een oracle database? Ik ga eens googlen :)
Tnx!
pi_103580146
quote:
0s.gif Op woensdag 26 oktober 2011 13:20 schreef mcf het volgende:

[..]

Hier leer ik juist sql van.

Bij bestelling_detail is prijs leeg die wil ik dan veranderen met alter table en de prijs van de menu's in zetten zodat ik later op een pagina met een query de bestelling tonen voor elke klant. Dit gaat allemaal goed maar nu wil ik de prijs ook nog via query uit de db halen maar ik weet niet hoe ik in sql de prijs kan optellen van de menu's.
Menu1
1 relatie aan menus(id(bijvoorbeeld 1)) menus(id, naam, prijs)(1, pasta, 10)
Menu2 .............. ......................................................................................................., 15
Menu3 x
Menu4 x

Ik vermoed dat ik misschien iets met left join zou kunnen doen maar weet niet hoe ik dit moet aanpakken.
Ik hoop dat dit een beetje duidelijk is
Jij wilt dus de volgende database opstelling, dit is even het stuk waar het omgaat:


FK1 gaat van Bestelling_detail.MenuID naar Menu.ID
FK2 gaat van Bestelling_detail.BestellingID naar Bestelling.ID

Zo heb je in ieder record van bestelling_detail een relatie naar de bestelling en het bijhorende menu dat is besteld

Je zult twee queries nodig hebben, eentje om de bestelling overall op te halen (datum, klant, totale prijs etc) en de andere om de productregels op te halen.

De eerste query zal er iets alsvolgt uit zien:
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT 
    Bestelling.ID,
    Bestelling.KlantID,
    Klant.Naam,
    SUM(Bestelling_detail.Prijs * Bestelling_detail.Aantal) As Totaalprijs
FROM 
    Bestelling
INNER JOIN Klant
ON     Bestelling.KlantID = Klant.ID
LEFT JOIN Bestelling_detail
    Bestelling.ID = Bestelling_detail.BestellingID
WHERE
    Bestelling.ID = X
(Waar X is de bestelling is waar je op wilt zoeken)

En dan de tweede query:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT
    Bestelling_detail.ID,
    Bestelling_detail.MenuID,
    Menu.Naam,
    Menu.Opmerking,
    Bestelling_detail.Prijs,
    Bestelling_detail.Aantal
    Bestelling_detail.Prijs * Bestelling_detail.Aantal As TotaalPrijs
FROM
    Bestelling_detail
INNER JOIN Menu
ON
    Bestelling_detail.MenuID = Menu.ID
WHERE
    Bestelling_detail.BestellingID = X
(Waar X is de bestelling is waar je op wilt zoeken)

En zo haal je dan een bestelling op :)

Vooral het visualiseren van je database werkt er goed met overdragen van informatie als je een probleem probeert te tackelen, anders wel als je het op een Forum zet zodat de rest je ontwerp eenvoudig kan zien.
  woensdag 26 oktober 2011 @ 14:09:47 #75
4159 GI
Nee ik heet geen JOE
pi_103581027
quote:
0s.gif Op woensdag 26 oktober 2011 13:43 schreef Cue_ het volgende:

[..]

werken die ook allemaal op een oracle database? Ik ga eens googlen :)
Tnx!
voor oracle zal de syntax best eens anders kunnen zijn: http://psoug.org/reference/date_func.html
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')