lolwut?quote:
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; } } |
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.quote: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.
Ah, inderdaad. Hij doet iets meer cycles dan 1 per seconde natuurlijkquote:Op dinsdag 25 oktober 2011 18:42 schreef GlowMouse het volgende:
[..]
dat werkt niet, draai maar met echo 'hoi'; op regel 3.
Cronjobs werken op hele minuten.quote: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.
Je hebt gelijk, hij werkt gewoon. Denk dat ik een klein foutje heb gemaakt met jou code kopiëren.quote: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.
Ach, inderdaad. Ik faal weer lekkerquote:Op dinsdag 25 oktober 2011 19:57 schreef GlowMouse het volgende:
[..]
Cronjobs werken op hele minuten.
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).quote:
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>"); } ?> |
ik zou gewoon de prijzen in een array douwen en in PHP oplossen.quote: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.
bestelling_detailquote: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.
Hmm, frapant. Ik vond mijn post overzichtelijk en duidelijk:quote: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.
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.quote: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.
Ok, ik ben een beetje mysql noob, dus verbeter mij waar het fout gaat:quote: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?
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?quote: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'
Hier leer ik juist sql van.quote: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?
werken die ook allemaal op een oracle database? Ik ga eens googlenquote:Op woensdag 26 oktober 2011 13:39 schreef GI het volgende:
http://dev.mysql.com/doc/(...)-time-functions.html
Jij wilt dus de volgende database opstelling, dit is even het stuk waar het omgaat:quote: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
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 |
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 |
voor oracle zal de syntax best eens anders kunnen zijn: http://psoug.org/reference/date_func.htmlquote:Op woensdag 26 oktober 2011 13:43 schreef Cue_ het volgende:
[..]
werken die ook allemaal op een oracle database? Ik ga eens googlen
Tnx!
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |