abonnement Unibet Coolblue Bitvavo
pi_32981884
quote:
Op zaterdag 10 december 2005 20:43 schreef SkaterSam het volgende:
Grmmbblll, op een of andere manier krijg ik nooit errors te zien, maar telkens een standaard blanke pagina, maar dat terzijde...
Heb je wel display_errors = On staan in php.ini?
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  FOK!-Schrikkelbaas zaterdag 10 december 2005 @ 22:53:01 #204
1972 Swetsenegger
Egocentrische Narcist
pi_32982064
quote:
Op zaterdag 10 december 2005 22:46 schreef SuperRembo het volgende:

[..]

Heb je wel display_errors = On staan in php.ini?
Ik heb tijdens ontwikkeling altijd error_reporting(E_ALL); aanstaan, maar als ik een curly bracket vergeet krijg ik ook een lege page te zien en geen foutmelding
  zaterdag 10 december 2005 @ 22:54:41 #205
65471 SkaterSam
Lurking Galore
pi_32982108
quote:
Op zaterdag 10 december 2005 22:53 schreef Swetsenegger het volgende:

[..]

Ik heb tijdens ontwikkeling altijd error_reporting(E_ALL); aanstaan, maar als ik een curly bracket vergeet krijg ik ook een lege page te zien en geen foutmelding
Jup, dat heb ik dus ook ja, dus moet ik altijd de fouten uit de error.log lezen, verder niet zo'n probleem, wel een beetje onhandig
Let's make life easy
Typo's are the demon spawn from hell !
pi_32982120
quote:
Op zaterdag 10 december 2005 22:46 schreef SuperRembo het volgende:

[..]

Heb je wel display_errors = On staan in php.ini?
Dank, ik niet
pi_32982556
quote:
Op zaterdag 10 december 2005 22:54 schreef SkaterSam het volgende:

[..]

Jup, dat heb ik dus ook ja, dus moet ik altijd de fouten uit de error.log lezen, verder niet zo'n probleem, wel een beetje onhandig
weet iemand een leuke windows apache log file parser?
zou ik wel handig vinden..
  zondag 11 december 2005 @ 16:21:22 #208
37634 wobbel
Da WoBBeL King
pi_32991164
Ok, komt ie dan...ik ben bezig met een Forum en het is circa 1½ jaar geleden dat ik met joins ofzo heb gewerkt in een query. Dat ik dus gegevens uit 2 tabellen haal dmv 1 query.

Wat is het doel? Ik wil informatie uit 2 tabellen ophalen. Ik heb nu de tabel ForumTopics,waarmee ik een loop maak om alle topics uit te poepen. Opzich werkt dat prima. Nu heb ik ook een tabel genaamd ForumMessages met alle berichten (ook het eerste bericht). Nu wil ik dus de datum van het laatste geplaatste bericht uit ForumMessages weergeven in de loop van ForumTopics. Dus achter elke topic wanneer er voor het laatst gereageerd is.
Ook wil ik het aantal records uit ForumMessages weten bij het bijbehorende IdTopic uit de loop.

M'n algemene vraag is dus: Kan dit met minder query's? (alleen als het sneller is)
Wat heb ik nu? Ik heb het nu dmv 3 aparte query's. Lekker brak dus.
Zie mijn code hieronder:

http://194.126.173.14/~xostnl/tccl/fokcode.phps
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<?php
php
session_start
();
/* Load main library Files */
require_once                                    ("lib/htconfig.php");
require_once(                                    
$GLOBALS['SITE']['LibPath'] . "/main.php");

if(!
$_GET['sid'])
{

    
$error-&gt;Report                                ("Er is geen (sub)forum ID meegegeven. Bewerking is afgebroken.");

}
else
{

    
$MySQL_Fora_Select                            = "SELECT IdForumSubCat, ForumCatId, Titel FROM ForumSubCat WHERE IdForumSubCat = '" . addslashes($_GET['sid']) . "' LIMIT 1";
    
$MySQL_Fora_Query                            = mysql_query($MySQL_Fora_Select) or die($error-&gt;ReportMysqlError(__FILE__, $MySQL_Fora_Select ,__LINE__));
    
$MySQL_Fora_Numrow                            = mysql_num_rows($MySQL_Fora_Query);
    
    if(
$MySQL_Fora_Numrow &gt;= 1)
    {
    
        
## Select the main forum Titel and Image
        
$MySQL_Fora_Assoc                        = mysql_fetch_assoc($MySQL_Fora_Query);

        
$MySQL_Forum_Select                        = "SELECT IdForumCat, Titel, TitelImage FROM ForumCat WHERE IdForumCat = '" . addslashes($MySQL_Fora_Assoc['ForumCatId']) . "' LIMIT 1";
        
$MySQL_Forum_Query                        = mysql_query($MySQL_Forum_Select) or die(mysql_error());
        
$MySQL_Forum_Assoc                        = mysql_fetch_assoc($MySQL_Forum_Query);
        
        
$tml-&gt;RegisterVar                        ("CONTENTTOP", $MySQL_Forum_Assoc['TitelImage']);
        
$tml-&gt;RegisterVar                        ("FORUMTITLE", $MySQL_Forum_Assoc['Titel']);
        
$tml-&gt;RegisterVar                        ("SUBFORUMTITLE", $MySQL_Fora_Assoc['Titel']);
        
##
    
        
$MySQL_Topic_Select                        = "SELECT IdTopic, UserId, Titel, Type FROM ForumTopics WHERE SubCatId = '" . addslashes($_GET['sid']) . "' ORDER BY Date DESC";
        
$MySQL_Topic_Query                        = mysql_query($MySQL_Topic_Select) or die(mysql_error());
        
$MySQL_Topic_Numrow                        = mysql_num_rows($MySQL_Topic_Query);
                
        while(
$Topic = mysql_fetch_assoc($MySQL_Topic_Query))
        {                
            
            
$MySQL_Message_Select                = "SELECT TopicId, Datum FROM ForumMessages WHERE TopicId = '" . $Topic['IdTopic'] . "' ORDER BY Datum DESC LIMIT 1";
            
$MySQL_Message_Query                = mysql_query($MySQL_Message_Select) or die(mysql_error() . " op regel: " . __LINE__ . "<br />De betreffende query:" . $MySQL_Message_Select);
            
$MySQL_Message_Assoc                = mysql_fetch_assoc($MySQL_Message_Query);            
            
$LastPostInTopic                    = $MySQL_Message_Assoc['Datum'];
            
            
$MySQL_Reacties_Select                = "SELECT COUNT(IdMessage) FROM ForumMessages WHERE TopicId = '" . $Topic['IdTopic'] . "'";
            
$MySQL_Reacties_Query                = mysql_query($MySQL_Reacties_Select);
            
$MySQL_Reacties_Result                = mysql_result($MySQL_Reacties_Query, 0);
                        
            
$LoopData         = array    (
            
                                                
"TITLE"                =&gt; $Topic['Titel'],
                                                
"IDTOPIC"            =&gt; $Topic['IdTopic'],
                                                
"USERID"            =&gt; $main-&gt;User_Name($Topic['UserId'], 1),
                                                
"REACTIES"            =&gt; $MySQL_Reacties_Result,
                                                
"LASTPOST"            =&gt; date("d-m-Y H:i:s", $LastPostInTopic),
                                                                    
                                    );
        
            
            
$i++;
            
            
/* Registreren van een Loop */
            
$tml-&gt;RegisterLoop("TOPIC",$i,$LoopData);
                
        }
    
        
/* Load Header file */
        
$tml-&gt;LoadFromFile                        ("pages/overall_header");
        
$tml-&gt;Parse();
        
        
/* Load Page Content */
        
$tml-&gt;LoadFromFile                        ("pages/forum_subcat");
        
$tml-&gt;Parse();
        
        
/* Load Footer file */
        
$tml-&gt;LoadFromFile                        ("pages/overall_footer");
        
$tml-&gt;Parse();
        
        
/* Output Pages */
        
$tml-&gt;Output();
        
    }
    else
    {
    
        
$error-&gt;Report                            ("Het (sub)forum dat je probeert op te vragen is niet gevonden.");
    
    }
    
}
?>
  FOK!-Schrikkelbaas zondag 11 december 2005 @ 20:15:58 #209
1972 Swetsenegger
Egocentrische Narcist
pi_32996630
Korte vraag,

zoals jullie weten ben ik met een webshop bezig.
Het winkelwagentje is een array, waarbij de key het produkt ID is en de value het aantal.

Nu moet ik deze gegevens op gaan slaan in de db. Zal ik simpelweg de array opslaan in een kolom? Het lijkt me een beetje 'vreemde' oplossing eigenlijk, maar aan de andere kant lijkt het me niet handig wanneer ik elk produkt van de bestelling afzonderlijk in een kolom of rij op ga slaan en vervolgens nog iets van een koppeltable moet maken voor de aantallen.
pi_32997368
quote:
Op zondag 11 december 2005 20:15 schreef Swetsenegger het volgende:
Korte vraag,

zoals jullie weten ben ik met een webshop bezig.
Het winkelwagentje is een array, waarbij de key het produkt ID is en de value het aantal.

Nu moet ik deze gegevens op gaan slaan in de db. Zal ik simpelweg de array opslaan in een kolom? Het lijkt me een beetje 'vreemde' oplossing eigenlijk, maar aan de andere kant lijkt het me niet handig wanneer ik elk produkt van de bestelling afzonderlijk in een kolom of rij op ga slaan en vervolgens nog iets van een koppeltable moet maken voor de aantallen.
Dat laatste is dus wel de juiste manier, het gaat hier niet om "handig", want misschien gaat het opslaan zo wel sneller, maar het ophalen wel 10x zo traag!
This message is intended for the addressee shown. It contains information that is confidential and protected from disclosure. The contents of this message do not necessarily represent the views or policies of myself.
pi_32997393
quote:
Op zondag 11 december 2005 20:15 schreef Swetsenegger het volgende:
Korte vraag,

zoals jullie weten ben ik met een webshop bezig.
Het winkelwagentje is een array, waarbij de key het produkt ID is en de value het aantal.

Nu moet ik deze gegevens op gaan slaan in de db. Zal ik simpelweg de array opslaan in een kolom? Het lijkt me een beetje 'vreemde' oplossing eigenlijk, maar aan de andere kant lijkt het me niet handig wanneer ik elk produkt van de bestelling afzonderlijk in een kolom of rij op ga slaan en vervolgens nog iets van een koppeltable moet maken voor de aantallen.
Je hebt alleen een tabel nodig (inhoud van de winkelwagen) die de gebruiker koppelt aan de gekozen producten en het aantal dat daarbij hoort. Oftwel, een userid, productid en number (aantal producten).

Mocht je het toch als array willen opslaan, dan kan dat het makkelijkst via serialize()
  FOK!-Schrikkelbaas zondag 11 december 2005 @ 20:34:03 #212
1972 Swetsenegger
Egocentrische Narcist
pi_32997394
quote:
Op zondag 11 december 2005 20:33 schreef existenz het volgende:

[..]

Dat laatste is dus wel de juiste manier, het gaat hier niet om "handig", want misschien gaat het opslaan zo wel sneller, maar het ophalen wel 10x zo traag!
Hoezo?
Een array uit een kolom trekken kost geen zeeen van tijd dacht ik zo
  FOK!-Schrikkelbaas zondag 11 december 2005 @ 20:34:57 #213
1972 Swetsenegger
Egocentrische Narcist
pi_32997429
quote:
Op zondag 11 december 2005 20:34 schreef JeRa het volgende:

[..]

Je hebt alleen een tabel nodig (inhoud van de winkelwagen) die de gebruiker koppelt aan de gekozen producten en het aantal dat daarbij hoort. Oftwel, een userid, productid en number (aantal producten).

Mocht je het toch als array willen opslaan, dan kan dat het makkelijkst via serialize()
De tabel moet dan wel userid, product id, order id en number worden.
Anders weet ik nooit welke rij bij welke bestelling hoort en een klant kan meerdere bestellingen plaatsen.

Hmz, zit ik weer met het ophogen van order_id. Of ik moet me in 'unique' mbt mysql gaan verdiepen. *zucht*.
pi_32997718
quote:
Op zondag 11 december 2005 20:34 schreef Swetsenegger het volgende:

[..]

De tabel moet dan wel userid, product id, order id en number worden.
Anders weet ik nooit welke rij bij welke bestelling hoort en een klant kan meerdere bestellingen plaatsen.

Hmz, zit ik weer met het ophogen van order_id. Of ik moet me in 'unique' mbt mysql gaan verdiepen. *zucht*.
Ophogen van order_id?

Als een klant een nieuwe bestelling doet maak je (neem ik aan) een nieuwe entry in de tabel met orders. De id van die tabel is dan toch gewoon AUTO_INCREMENT? Vervolgens plaats je in de tabel met de inhoud van een bestelling de id van die bestelling
  FOK!-Schrikkelbaas zondag 11 december 2005 @ 21:06:20 #215
1972 Swetsenegger
Egocentrische Narcist
pi_32998301
quote:
Op zondag 11 december 2005 20:44 schreef JeRa het volgende:

[..]

Ophogen van order_id?

Als een klant een nieuwe bestelling doet maak je (neem ik aan) een nieuwe entry in de tabel met orders. De id van die tabel is dan toch gewoon AUTO_INCREMENT? Vervolgens plaats je in de tabel met de inhoud van een bestelling de id van die bestelling
Je geeft als voorbeeld een tabel met de volgende kolommen:

user_id (de klant welke de bestelling doet)
product_id (het bestelde product)
number (het aantal van het bestelde product)

Dit betekent dus voor ELK product een rij en een verhoogd id van deze tabel, laten we die voor het gemak order_table_id noemen

Maar een klant kan toch meerdere produkten bestellen in 1 keer. En een klant kan een maand later weer produkten bestellen, zelfs dezelfde als een maand geleden.

Dus ik moet een kolom toevoegen met order_id. En elke keer als een klant een bestelling doet, moet ik dat order_id genereren en bij elk besteld product in de order tabel schrijven toch...

1
2
3
4
5
order_table_id     user_id     order_id     product_id     number
1                  1           1            1              2
2                  1           1            4              1
3                  2           2            3              1
4                  1           3            1              1


In dit voorbeeld is 1 en 2 één bestelling van 1 klant
3 is een bestelling van een andere klant
4 is wederom een bestelling van klant 1, maar WEL een nieuwe, bv een maand later.

Bij elke klant welke een bestlling doet, moet ik dus een unieke order_id hebben welke niet gewoon auto increment kan zijn in dit voorbeeld.

-edit- Ow wacht ff, jij bedoeld dat order_id in dit geval uit een tabel orders komt en dat bovenstaande tabel order inhoud is.

[ Bericht 2% gewijzigd door Swetsenegger op 11-12-2005 21:18:47 ]
pi_32998625
Ik snap niet welk probleem je hebt

Je hebt een tabel users met daarin de klantennummers. FK = userid.
Je hebt een tabel orders met daarin de bestellingen. FK = orderid.
Je hebt een tabel products met daarin de producten. FK = productid
Je hebt een tabel winkelwagen (ofzo) met daarin de koppeling van bovenstaande drie tabellen én het aantal producten. Die ziet er dan toch als volgt uit?

id --> unieke verwijzing naar een bestelling in een winkelwagen (AUTO_INCREMENT PRIMARY KEY)
userid --> verwijzing naar klant (mag ook vaker voorkomen)
orderid --> verwijzing naar order. De 'id'-kolom van de tabel 'orders' is AUTO_INCREMENT
productid --> verwijzing naar het product
number --> aantal producten dat gewenst is

Wat is het probleem hiermee?
  FOK!-Schrikkelbaas zondag 11 december 2005 @ 21:20:43 #217
1972 Swetsenegger
Egocentrische Narcist
pi_32998696
quote:
Op zondag 11 december 2005 21:18 schreef JeRa het volgende:
Ik snap niet welk probleem je hebt

Je hebt een tabel users met daarin de klantennummers. FK = userid.
Je hebt een tabel orders met daarin de bestellingen. FK = orderid.
Je hebt een tabel products met daarin de producten. FK = productid
Je hebt een tabel winkelwagen (ofzo) met daarin de koppeling van bovenstaande drie tabellen én het aantal producten. Die ziet er dan toch als volgt uit?

id --> unieke verwijzing naar een bestelling in een winkelwagen (AUTO_INCREMENT PRIMARY KEY)
userid --> verwijzing naar klant (mag ook vaker voorkomen)
orderid --> verwijzing naar order. De 'id'-kolom van de tabel 'orders' is AUTO_INCREMENT
productid --> verwijzing naar het product
number --> aantal producten dat gewenst is

Wat is het probleem hiermee?
Zie de edit.
Het ontging me even dat je een extra tabel bedoelde:
orderid --> verwijzing naar order. De 'id'-kolom van de tabel 'orders' is AUTO_INCREMENT

Ok, even pragmatisch. Klant pleurt van alles in zijn winkelwagen
Gaat naar bestellen.
Vult zijn klantgegevens in, die gaan in de user tabel.
Ik zet zijn user_id in de order tabel.
Ik zet user_id, order_id, product_id en number voor elk besteld product in de cart tabel.

Als ik de history van een klant wil laten bekijken door de beheerder, toon ik de order tabel WHERE user_id == de gekozen user.

Vervolgens kan ik op de order_id klikken om de specifieke bestelling in zijn geheel uit de cart tabel te trekken.
pi_32999071
Mja, dat gaat toch werken? sorry dat ik even niet duidelijk aangaf dat ik het over een nieuwe koppeltabel had
  FOK!-Schrikkelbaas zondag 11 december 2005 @ 21:43:09 #219
1972 Swetsenegger
Egocentrische Narcist
pi_32999418
quote:
Op zondag 11 december 2005 21:32 schreef JeRa het volgende:
Mja, dat gaat toch werken? sorry dat ik even niet duidelijk aangaf dat ik het over een nieuwe koppeltabel had
Ja dat gaat perfect werken
Ik moet nog wel even goed nadenken, want orders moeten nogwel via mail bevestigt worden dus in de order tabel komt nog een activation kolom.

Indien niet geactiveerd moet ik dus wel de order EN de inhoud wissen.
pi_32999600
quote:
Op zondag 11 december 2005 21:43 schreef Swetsenegger het volgende:

[..]

Ja dat gaat perfect werken
Ik moet nog wel even goed nadenken, want orders moeten nogwel via mail bevestigt worden dus in de order tabel komt nog een activation kolom.
Er komt natuurlijk nog veel meer bij kijken; ik noem even het tijdstip van aanmaken of het IP-adres van de klant. Maar dat is aan jou
quote:
Indien niet geactiveerd moet ik dus wel de order EN de inhoud wissen.
Dat kan met één DELETE door te joinen of meerdere DELETEs die je binnen een LOCK TABLES / UNLOCK TABLES zet.
  FOK!-Schrikkelbaas zondag 11 december 2005 @ 21:56:57 #221
1972 Swetsenegger
Egocentrische Narcist
pi_32999852
quote:
Op zondag 11 december 2005 21:49 schreef JeRa het volgende:

[..]

Er komt natuurlijk nog veel meer bij kijken; ik noem even het tijdstip van aanmaken of het IP-adres van de klant. Maar dat is aan jou
Ja, dat heb ik allemaal op een rijtje ivm tweedehandsboek, waarbij gebruikers ook hun aanmelding moeten bevestigen. Er moet dus ook een datum/tijd in de order tabel
quote:
Dat kan met één DELETE door te joinen of meerdere DELETEs die je binnen een LOCK TABLES / UNLOCK TABLES zet.
Bedankt voor de tip, daar ga ik mee stoeien.

Andere vraag.
Klanten stoppen het een en ander in de winkelwagen en gaan bestellen. Indien ze al eerder besteld hebben kunnen ze vervolgens inloggen zodat de voorgaande gegevens direkt bekend zijn. Indien het een nieuwe klant is, moet deze z'n NAW gegevens invullen.

Nu wil ik op deze NAW gegevens pagina nadat een en ander succesvol is ingevuld en naar db is geschreven de klant direkt automatisch inloggen. Maar vanuit PHP Kan ik volgens mij niet automatisch de juiste gegevens (inlognaam en wachtwoord welke bij aanmelden is opgegeven) POSTen naar inlog.php. Uiteraard kan het wel met GET, maar dat lijkt me niet zo veilig
pi_32999982
quote:
Op zondag 11 december 2005 21:56 schreef Swetsenegger het volgende:
Nu wil ik op deze NAW gegevens pagina nadat een en ander succesvol is ingevuld en naar db is geschreven de klant direkt automatisch inloggen. Maar vanuit PHP Kan ik volgens mij niet automatisch de juiste gegevens (inlognaam en wachtwoord welke bij aanmelden is opgegeven) POSTen naar inlog.php. Uiteraard kan het wel met GET, maar dat lijkt me niet zo veilig
Dat ligt aan je inlogsysteem. Stel, je hebt een sessie-variabele genaamd 'userid' waarvoor geldt dat als userid groter is dan 0 de user is ingelogd als klant nummer #userid. Dan kun je na het toevoegen van de NAW-gegevens in de usertabel de primary key ophalen (mysql_insertid) en die in je sessie-variabele zetten. Voila, user ingelogd
  FOK!-Schrikkelbaas zondag 11 december 2005 @ 22:04:18 #223
1972 Swetsenegger
Egocentrische Narcist
pi_33000161
quote:
Op zondag 11 december 2005 22:00 schreef JeRa het volgende:

[..]

Dat ligt aan je inlogsysteem. Stel, je hebt een sessie-variabele genaamd 'userid' waarvoor geldt dat als userid groter is dan 0 de user is ingelogd als klant nummer #userid. Dan kun je na het toevoegen van de NAW-gegevens in de usertabel de primary key ophalen (mysql_insertid) en die in je sessie-variabele zetten. Voila, user ingelogd
Maar dat is een klein risico als er meerdere gebruikers min of meer teglijk aanmelden. mysql_insertid kan dan hoger zijn dan degene welke ik voor deze klant bedoel toch?
Of ik moet met lock table gaan werken natuurlijk.
pi_33000208
quote:
Op zondag 11 december 2005 22:04 schreef Swetsenegger het volgende:

[..]

Maar dat is een klein risico als er meerdere gebruikers min of meer teglijk aanmelden. mysql_insertid kan dan hoger zijn dan degene welke ik voor deze klant bedoel toch?
Of ik moet met lock table gaan werken natuurlijk.
Nope, mysql_insert_id() geeft de waarde terug van de laatste INSERT-operatie van de huidige thread. Zolang je users niet weten hoe ze op de webserver threads moeten overnemen is dat vrij veilig

Nu lees ik op die pagina ook dat je LAST_INSERT_ID kunt gebruiken dat is eigenlijk wel heel handig, gegeven dat dat ook de laatste insert id van de huidige thread is.

edit: nee dus.
quote:
Note: The value of the MySQL SQL function LAST_INSERT_ID() always contains the most recently generated AUTO_INCREMENT value, and is not reset between queries.
mysql_insert_id() it is dus
  FOK!-Schrikkelbaas zondag 11 december 2005 @ 22:11:27 #225
1972 Swetsenegger
Egocentrische Narcist
pi_33000412
quote:
Op zondag 11 december 2005 22:05 schreef JeRa het volgende:

[..]

Nope, mysql_insert_id() geeft de waarde terug van de laatste INSERT-operatie van de huidige thread. Zolang je users niet weten hoe ze op de webserver threads moeten overnemen is dat vrij veilig

Nu lees ik op die pagina ook dat je LAST_INSERT_ID kunt gebruiken dat is eigenlijk wel heel handig, gegeven dat dat ook de laatste insert id van de huidige thread is.

edit: nee dus.
[..]

mysql_insert_id() it is dus
Het verschil tussen beide ontging me even, maar ik lees dat last_insert_id niet gereset wordt tussen queries en dus niet thread gerelateerd is. Begrijp ik het zo goed?

Maar ik kan dus save mysql_insert_id gebruiken direkt na de query welke de klantgegevens in de DB zet.
pi_33000592
quote:
Op zondag 11 december 2005 22:11 schreef Swetsenegger het volgende:

[..]

Het verschil tussen beide ontging me even, maar ik lees dat last_insert_id niet gereset wordt tussen queries en dus niet thread gerelateerd is. Begrijp ik het zo goed?
Klopt.
quote:
Maar ik kan dus save mysql_insert_id gebruiken direkt na de query welke de klantgegevens in de DB zet.
Klopt ook.
pi_33001025
quote:
Op zondag 11 december 2005 21:18 schreef JeRa het volgende:
id --> unieke verwijzing naar een bestelling in een winkelwagen (AUTO_INCREMENT PRIMARY KEY)
userid --> verwijzing naar klant (mag ook vaker voorkomen)
orderid --> verwijzing naar order. De 'id'-kolom van de tabel 'orders' is AUTO_INCREMENT
productid --> verwijzing naar het product
number --> aantal producten dat gewenst is
De combinatie orderid, productid is uniek, dus die kan je als PK gebruiken.
Ik neem aan dat in de tabel met bestellingen bij een order een userid staat. Dan is de kolom userid in deze tabel overbodig.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  FOK!-Schrikkelbaas zondag 11 december 2005 @ 22:33:47 #228
1972 Swetsenegger
Egocentrische Narcist
pi_33001141
quote:
Op zondag 11 december 2005 22:30 schreef SuperRembo het volgende:

[..]

De combinatie orderid, productid is uniek, dus die kan je als PK gebruiken.
Ik neem aan dat in de tabel met bestellingen bij een order een userid staat. Dan is de kolom userid in deze tabel overbodig.
PK?

Ja ik had me inderdaad al bedacht dat user_id ook nog een keer in de inhoud tabel toevoegen ietwat overdreven is die moet bestaan uit inhoud_id, order_id, product_id en number
pi_33001369
quote:
Op zondag 11 december 2005 22:30 schreef SuperRembo het volgende:

[..]

De combinatie orderid, productid is uniek, dus die kan je als PK gebruiken.
Ik neem aan dat in de tabel met bestellingen bij een order een userid staat. Dan is de kolom userid in deze tabel overbodig.
Klopt helemaal. Over die primary key, ikzelf vind het altijd handig om in elke tabel een unieke waarde te hebben die ik kan toekennen aan elke entry, vandaar ook als je nog een koppeling wilt leggen tussen een product uit een bestelling en iets anders is het handig als je niet met twee variabelen hoeft te klooien.
pi_33001434
quote:
Op zondag 11 december 2005 22:33 schreef Swetsenegger het volgende:

[..]

PK?
Primary Key.

FK is Foreign Key.
  FOK!-Schrikkelbaas zondag 11 december 2005 @ 23:20:24 #231
1972 Swetsenegger
Egocentrische Narcist
pi_33002649
quote:
Op zondag 11 december 2005 22:42 schreef Light het volgende:

[..]

Primary Key.

FK is Foreign Key.
Nav JeRa begreep ik 'm

Simpele vraag,
Wanneer ik een UPDATE query uitvoer met data welke gelijk is aan de huidige data, krijg je een sql error.

Is die error eenvoudig op te vangen en te vervangen door een specifieke string?
pi_33002718
Huh? Wat voor query doe je dan?
  FOK!-Schrikkelbaas zondag 11 december 2005 @ 23:26:31 #233
1972 Swetsenegger
Egocentrische Narcist
pi_33002845
quote:
Op zondag 11 december 2005 23:22 schreef Light het volgende:
Huh? Wat voor query doe je dan?
Ik niets , maar ik heb klantgegevens. En als klanten op edit drukken, vul ik de gegevens al voor ze in in het formulier. Maar als ze vervolgens op submit rammen zonder iets te veranderen, ga ik dus een UPDATE query draaien met dezelfde gegevens als de huidige. Dat geeft een sql error/notice.
pi_33002939
MySQL (phpmyadmin) geeft bij mij gewoon een melding dat er 0 rijen zijn aangepast. Geen foutmeldingen ofzo.
pi_33003167
Hier doet ie dat ook niet. Wat is de exacte error die je van MySQL krijgt?
pi_33003304
quote:
Op zondag 11 december 2005 23:30 schreef Light het volgende:
MySQL (phpmyadmin) geeft bij mij gewoon een melding dat er 0 rijen zijn aangepast. Geen foutmeldingen ofzo.
Hmmmz. Dat is weer zo'n vaag iets van MySQL
Als je dus 2x het statement "UPDATE MyTable SET name = 'Foo' WHERE id = 1" uitvoert, dat krijg je de eerste keer affected rows = 1, maar daarna affected rows = 0
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_33003395
quote:
Op zondag 11 december 2005 23:43 schreef SuperRembo het volgende:

[..]

Hmmmz. Dat is weer zo'n vaag iets van MySQL
Als je dus 2x het statement "UPDATE MyTable SET name = 'Foo' WHERE id = 1" uitvoert, dat krijg je de eerste keer affected rows = 1, maar daarna affected rows = 0
MySQL redeneert dat als er geen velden worden aangepast, dat er dan ook geen rijen worden aangepast. En het schijnt sneller te zijn om niet opnieuw te schrijven als de waarde voor en na de update gelijk is. Klinkt op zich ook nog wel logisch, ergens
pi_33003442
quote:
Op zondag 11 december 2005 23:43 schreef SuperRembo het volgende:

[..]

Hmmmz. Dat is weer zo'n vaag iets van MySQL
Als je dus 2x het statement "UPDATE MyTable SET name = 'Foo' WHERE id = 1" uitvoert, dat krijg je de eerste keer affected rows = 1, maar daarna affected rows = 0
Het kost veel minder tijd om zo'n waarde niet weg te schrijven (indices hoeven dan ook niet bijgewerkt te worden, query/block cache kan blijven bestaan, etc). Echter zou het wel wat netter zijn als affected rows 1 teruggaf ja
pi_33003628
quote:
Op zondag 11 december 2005 23:46 schreef Light het volgende:

[..]

MySQL redeneert dat als er geen velden worden aangepast, dat er dan ook geen rijen worden aangepast. En het schijnt sneller te zijn om niet opnieuw te schrijven als de waarde voor en na de update gelijk is. Klinkt op zich ook nog wel logisch, ergens
Je moet dan wel eerst de oude en de nieuwe gegevens vergelijken, dat kost ook tijd.

Het lijkt me geen standaard gedrag. Is dat is MySQL 5 ook zo?
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_33003863
quote:
Op zondag 11 december 2005 23:54 schreef SuperRembo het volgende:

[..]

Je moet dan wel eerst de oude en de nieuwe gegevens vergelijken, dat kost ook tijd.

Het lijkt me geen standaard gedrag. Is dat is MySQL 5 ook zo?
Ja (heb het hier draaien). Weliswaar niet in de strict-modus, misschien dat dat wat uitmaakt?
pi_33003897
Wie gebruikt er eik weleens bij sql "replace" ?
pi_33003979
quote:
Op maandag 12 december 2005 00:05 schreef Ro�a� het volgende:
Wie gebruikt er eik weleens bij sql "replace" ?
Ik. En eigenlijk moeten die herschreven worden, ze kunnen best zwaar worden voor de server (die het toch al niet makkelijk heeft). En nee, die queries gooi ik hier niet neer
pi_33004157
quote:
Op maandag 12 december 2005 00:05 schreef Ro�a� het volgende:
Wie gebruikt er eik weleens bij sql "replace" ?
Ik niet. Maar even gelezen in de documentation, dan worden alle dubbele rijen gedelete en opnieuw geinsert met een nieuwe primary key. Dat moet je niet te vaak doen op een grote tabel
pi_33004505
quote:
Op maandag 12 december 2005 00:15 schreef JeRa het volgende:

[..]

Ik niet. Maar even gelezen in de documentation, dan worden alle dubbele rijen gedelete en opnieuw geinsert met een nieuwe primary key. Dat moet je niet te vaak doen op een grote tabel
replace into mytable (id, name) values (1, "test")
Dat levert een 1 affected row op als je nog geen rij hebt met id=1, en anders 2. Ik ga er dan dus wel even vanuit dat id de PK is.
pi_33012020
af en toe laat ik het een en ander uit een database echoen in een tabel. komt ook best vaak voor dat ik die tabel maar 3 td's breed wil, en de volgende 3 in een rij daaronder komen, de drie daarna weer daaronder etc.

dit vang ik momenteel op door php te laten tellen. per while doet hij $nr + 1;, waardoor er bij de 3e een waarde van 3 komt en de rij wordt afgebroken door een ander te laten echoen en een nieuwe wordt begonnen. daarna wordt $nr weer teruggezet op 0 zodat de riedel weer van voor af aan begint.

is dit niet wat makkelijker en netter af te vangen?
As a rule, I never touch anything more sophisticated and delicate than myself.
pi_33012286
Zijn de cellen allemaal even hoog?
pi_33012364
mja zijn wel even hoog.

ik zit net te denken aan een float.. als ik ze allemaal een float left meegeef, en ze per stuk in een div zet ofzo met aangegeven waardes, heb ik waarschijnlijk de hele tabel niet nodig. misschien een omringende tabel of div om de totale breedte aan te geven. eensch?
As a rule, I never touch anything more sophisticated and delicate than myself.
pi_33012388
Jups, daar zat ik ook aan te denken idd.
pi_33016261
Vraagje:

ik heb een site waarop mensen dingen kunnen kopen (soort webwinkel) en mensen kunnen betalen via CreditCard of eenmalige incasso. De betalingen worden geregeld via een Payment Service Provider, dus daar heb ik geen zorgen om.

Maar ik moet de gegevens van de bestelling naar de PSP toe sturen. Als voorbeeld geven zij een HTML pagina met daarin een FORM waarin bedrag, ordernummer, enzovoorts staan. Alles wordt vervolgens gepostnaar een HTTPS geval.

Ik wil nu vanuit een PHP bestand ook die POST kunnen uitvoeren. Dus dat ik de headers naar mijn PSP stuur. Ik had zelf het volgende gemaakt gejat:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$url
= "https://[psp]/[psp].php";
$host = substr($url, 0, strpos($url, "/"));
$uri = strstr($url, "/");
$reqbody = "";
      foreach(
$data as $key=&gt;$val) {
          if (!empty(
$reqbody)) $reqbody.= "&";
      
$reqbody.= $key."=".urlencode($val);
      }
$contentlength = strlen($reqbody);
$reqheader =  "Location: $url\r\n".
    
"POST $uri HTTPS/1.1\r\n".
    
"Host: ssl://$host\n". "User-Agent: PostIt\r\n".
    
"Content-Type: application/x-www-form-urlencoded\r\n".
    
"Content-Length: $contentlength\r\n\r\n".
    
"$reqbody\r\n";
header($reqheader);
?>


Maar dit werkt niet helemaal goed, want de data is niet SSL versleuteld enzo. Dus m'n PSP accepteerd het niet. Nu las ik ergens dat je ook gebruik kon maken van cURL, maar ik heb geen flauw idee hoe ik dat kan doen. Kan iemand daarmee helpen?

[ Bericht 11% gewijzigd door HuHu op 12-12-2005 15:54:23 ]
  FOK!-Schrikkelbaas maandag 12 december 2005 @ 18:46:37 #250
1972 Swetsenegger
Egocentrische Narcist
pi_33021760
Heeft je PSP geen kant en klaar php script dan?
pi_33022129
quote:
Op maandag 12 december 2005 18:46 schreef Swetsenegger het volgende:
Heeft je PSP geen kant en klaar php script dan?
Helaas niet en de support afdeling was vandaag niet aanwezig. Maar ik ga zeker contact met ze opnemen om dit te overleggen. Het enige kant-en-klare 'script' wat ze aanboden was een HTML pagina. En dat is niet echt zo netjes, als je gebruikers eerst op een lege pagina komen alwaar ze een knop moeten indrukken. Ik wil ze gewoon direct doorverwijzen naar de PSP. Het is dan ook niet mogelijk voor de wat slimmere mensen om bijvoorbeeld het bedrag aan te passen.
  FOK!-Schrikkelbaas maandag 12 december 2005 @ 19:02:12 #252
1972 Swetsenegger
Egocentrische Narcist
pi_33022327
Maar je hebt die HTML page toch? Wat staat daar in dan?
  FOK!-Schrikkelbaas maandag 12 december 2005 @ 19:10:59 #253
1972 Swetsenegger
Egocentrische Narcist
pi_33022654
quote:
Op zondag 11 december 2005 23:30 schreef Light het volgende:
MySQL (phpmyadmin) geeft bij mij gewoon een melding dat er 0 rijen zijn aangepast. Geen foutmeldingen ofzo.

Als je checked op effected_rows==1 krijg je een melding terug...

Mijn fout.
pi_33022781
In die HTML page staan alle benodigde variabelen (ordernummer, bedrag, enzovoorts) als hidden FORM fields. En die worden, zodra je op de knop drukt, gepost naar een https server waar vervolgens de betaling wordt afgehandeld en de gebruiker z'n creditcard gegevens invuld.

Het gaat nu dus zo:
Gebruiker kiest product en vult ons bestelformulier in.
Mijn PHP script met database handelingen en bevestigingmailtjes
Scherm met: druk op de knop om te betalen
Betalen bij de PSP

Maar ik wil dat nutteloze tussenscherm eruit hebben door de variabelen die daarin staan direct vanuit mijn PHP script naar de server van de PSP te posten. Maar dat moet via SSL, en ik weet niet hoe dat moet.
  FOK!-Schrikkelbaas maandag 12 december 2005 @ 19:28:12 #255
1972 Swetsenegger
Egocentrische Narcist
pi_33023332
quote:
Op maandag 12 december 2005 19:14 schreef HuHu het volgende:
In die HTML page staan alle benodigde variabelen (ordernummer, bedrag, enzovoorts) als hidden FORM fields. En die worden, zodra je op de knop drukt, gepost naar een https server waar vervolgens de betaling wordt afgehandeld en de gebruiker z'n creditcard gegevens invuld.

Het gaat nu dus zo:
Gebruiker kiest product en vult ons bestelformulier in.
Mijn PHP script met database handelingen en bevestigingmailtjes
Scherm met: druk op de knop om te betalen
Betalen bij de PSP

Maar ik wil dat nutteloze tussenscherm eruit hebben door de variabelen die daarin staan direct vanuit mijn PHP script naar de server van de PSP te posten. Maar dat moet via SSL, en ik weet niet hoe dat moet.
Nu post dat HTML scherm toch naar de PSP? Dan moet er in die HTML file toch aan de submit knop een CGI of ander soortig script hangen welke die verbinding opzet.
Je kan in je PHP form toch gewoon dezelfde action gebruiken als nu in dat HTML form?
pi_33023656
quote:
Op maandag 12 december 2005 19:28 schreef Swetsenegger het volgende:

[..]

Nu post dat HTML scherm toch naar de PSP? Dan moet er in die HTML file toch aan de submit knop een CGI of ander soortig script hangen welke die verbinding opzet.
Je kan in je PHP form toch gewoon dezelfde action gebruiken als nu in dat HTML form?
Dit is de FORM actie:

1<form method="post" action="https://multipay.net/transaction/mpmain.php">


Hij post dus naar een beveiligde server. Nu wil ik met PHP naar die beveiligde server posten. Maar hoe versleutel ik mijn variabelen en dergelijke, zodat de server ze accepteerd.
  FOK!-Schrikkelbaas maandag 12 december 2005 @ 20:08:49 #257
1972 Swetsenegger
Egocentrische Narcist
pi_33024607
quote:
Op maandag 12 december 2005 19:38 schreef HuHu het volgende:

[..]

Dit is de FORM actie:
[ code verwijderd ]

Hij post dus naar een beveiligde server. Nu wil ik met PHP naar die beveiligde server posten. Maar hoe versleutel ik mijn variabelen en dergelijke, zodat de server ze accepteerd.
Hoe versleutelt die HTML ze?
Ik bedoel er veranderd toch niets? Die html POST toch dezelfde data als wanneer je php script het POST?
pi_33024740
Op php.net staat een voorbeeld van een post request naar een https server met behulp van een socket.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_33027037
quote:
Op maandag 12 december 2005 19:38 schreef HuHu het volgende:

[..]

Dit is de FORM actie:
[ code verwijderd ]

Hij post dus naar een beveiligde server. Nu wil ik met PHP naar die beveiligde server posten. Maar hoe versleutel ik mijn variabelen en dergelijke, zodat de server ze accepteerd.
Wil je het per se via php doen dan? Dus niet via een html form aan de client zijde waarin je die variabele echo't?
  dinsdag 13 december 2005 @ 19:37:22 #260
65471 SkaterSam
Lurking Galore
pi_33050994
Hmmm, wat is de beste manier om meerdere DELETES uit te voeren op de DB, ik heb nu het volgende:
1
2
3
4
5
6
7
<?php
foreach($_POST['cat'] as $a) {
        
$db-&gt;query("DELETE FROM nieuws_categorie WHERE nieuws_categorie_id='$a'");
        }
        
        
$db-&gt;closedb();
?>

De rijen die moeten worden verwijderd worden geselecteerd met een checkbox, die er zo uit ziet:
1<input type="checkbox" name="cat[]" value="<?php echo $table['nieuws_categorie_id'] ?>" />

Maar volgens mij is mijn code niet erg efficient, aangezien die 3 queries zal uitvoeren, is er een makkelijkere manier?
Let's make life easy
Typo's are the demon spawn from hell !
pi_33051292
Je kan meerdere records tegelijk verwijderen in 1 sql statement met:

1DELETE FROM myTable WHERE id IN (1, 2, 3)

Hoe je die string samenstelt mag je zelf uitzoeken
Vergeet niet om de invoer van de gebruiker te controleren.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_33052623
idd zo doe ik het ook altijd, trouwens het combineren van een array kan dmv implode (heb ik van roonaan geleerd ofzo )
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  dinsdag 13 december 2005 @ 20:32:25 #263
65471 SkaterSam
Lurking Galore
pi_33052828
Ik zal eens kijken naar implode(), ondertussen heb ik weer van alles verzonnen , zoals het volgende, alleen werkt dat natuurlijk niet

1
2
3
4
5
6
7
8
9
10
11
<?php
$remove
= $_POST['cat'];
    
$db_query = "DELETE FROM nieuws_categorie WHERE nieuws_categorie_id IN (";
    
for(
$i = 0; $i &lt; count($remove); $i++) {
    
$db_query .=  substr("'" . $remove[$i] . "',", 0, -1) . ")";
}
        
$db-&gt;query($db_query);
?>
Let's make life easy
Typo's are the demon spawn from hell !
  dinsdag 13 december 2005 @ 20:41:26 #264
32768 DionysuZ
Respect my authority!
pi_33053139
werkt IN (bla,bla,ba) ook bij MySQL dan? heb er veel problemen mee gehad.
□ Reality is merely an illusion,albeit a very persistent one-A.Einstein
■ Of ik ben gek of de rest van de wereld.Ik denk zelf de rest van de wereld-Rudeonline
□ The war is not meant to be won.It is meant to be continuous-G.Orwell
pi_33053476
quote:
Op dinsdag 13 december 2005 20:41 schreef DionysuZ het volgende:
werkt IN (bla,bla,ba) ook bij MySQL dan? heb er veel problemen mee gehad.
Heb die constructie al een behoorlijke tijd gebruikt zonder enige problemen lijkt me van wel dus. Weet iemand of die operatie atomic is?
  dinsdag 13 december 2005 @ 20:50:45 #266
65471 SkaterSam
Lurking Galore
pi_33053501
Dit werkt voor mij nu

1
2
3
4
5
6
<?php
$remove
= $_POST['cat'];
$remove = implode(',',$remove);
        
$db-&gt;query("DELETE FROM nieuws_categorie WHERE nieuws_categorie_id IN (" . $remove . ")");
?>

Dank voor de hints
Let's make life easy
Typo's are the demon spawn from hell !
pi_33053717
quote:
Op dinsdag 13 december 2005 19:47 schreef SuperRembo het volgende:
Vergeet niet om de invoer van de gebruiker te controleren.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  dinsdag 13 december 2005 @ 21:16:04 #268
65471 SkaterSam
Lurking Galore
pi_33054419
quote:
Op dinsdag 13 december 2005 19:47 schreef SuperRembo het volgende:
Vergeet niet om de invoer van de gebruiker te controleren.
Ik zal het niet vergeten

Er wordt al gekeken of de waarden in de array nummers zijn via is_numeric(), en straks nog even een mysql_real_escape_string() er over heen.

Zo goed ?
Let's make life easy
Typo's are the demon spawn from hell !
pi_33054682
quote:
Op dinsdag 13 december 2005 21:16 schreef SkaterSam het volgende:

[..]

Ik zal het niet vergeten

Er wordt al gekeken of de waarden in de array nummers zijn via is_numeric(), en straks nog even een mysql_real_escape_string() er over heen.

Zo goed ?
Een mysql_real_escape_string() heb je nodig als je een waarde in een string gaat zetten in de query. Nu werk je met integers, en is het minste wat je moet doen checken of het daadwerkelijk een getal is (en dat eventueel zo maken met intval() of strval()) en of het in de gewenste range ligt.
  dinsdag 13 december 2005 @ 21:37:03 #270
65471 SkaterSam
Lurking Galore
pi_33055163
quote:
Op dinsdag 13 december 2005 21:22 schreef JeRa het volgende:

[..]

Een mysql_real_escape_string() heb je nodig als je een waarde in een string gaat zetten in de query. Nu werk je met integers, en is het minste wat je moet doen checken of het daadwerkelijk een getal is (en dat eventueel zo maken met intval() of strval()) en of het in de gewenste range ligt.
Haha, weer wat geleerd in ieder geval, dan heb ik dus nu met mijn

1
2
3
4
5
6
7
<?php
if (is_numeric(array_sum($_POST['cat']))) {
// voer code uit
} else {
// stout!!!
}
?>


genoeg gecontroleerd? En wat is dan een range? Het zijn gewoon allemaal ID's die ik bij elkaar optel. Ik Google wel even wat een "range" inhoudt.
Let's make life easy
Typo's are the demon spawn from hell !
pi_33055954
quote:
Op dinsdag 13 december 2005 21:37 schreef SkaterSam het volgende:

[..]

Haha, weer wat geleerd in ieder geval, dan heb ik dus nu met mijn
[ code verwijderd ]

genoeg gecontroleerd? En wat is dan een range? Het zijn gewoon allemaal ID's die ik bij elkaar optel. Ik Google wel even wat een "range" inhoudt.
Nee. Het feit dat array_sum een getal oplevert zegt niets over de afzonderlijke elementen van de array. Het kunnen nog steeds allemaal strings zijn, die worden bij rekenkundige bewerkingen naar de waarde nul omgezet.

1
2
3
<?php
echo array_sum(array(2,5,'a','zes'));
?>

Dit levert 7 op.

Nog leuker, de uitkomst van array_sum is per definitie numeriek.
  dinsdag 13 december 2005 @ 22:54:50 #272
65471 SkaterSam
Lurking Galore
pi_33057815
Ik heb het zo opgelost, maar na de eerste twee posts zal ik niet meer beweren dat dit de juiste code is

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$remove
= $_POST['cat'];
$b = array();
    
foreach(
$remove as $a) {
    if(!
is_numeric($a)) {
        
$a = '';
    } else {
        
$b[] = $a;
    }
}
    
//Maak een verbinding met DB
        
$b = implode(',',$b);
        
$db-&gt;query("DELETE FROM nieuws_categorie WHERE nieuws_categorie_id IN (" . $b . ")");
?>

Ik heb nog even gekeken naar in_array(), maar ik begreep niet hoe je de needle kon definieren als een niet-nummer... Zo werkt het ook in ieder geval

-edit: dit is mijn uiteindelijke code (23.46)

[ Bericht 13% gewijzigd door SkaterSam op 13-12-2005 23:46:27 ]
Let's make life easy
Typo's are the demon spawn from hell !
pi_33057998
quote:
Op dinsdag 13 december 2005 20:50 schreef JeRa het volgende:

[..]

Heb die constructie al een behoorlijke tijd gebruikt zonder enige problemen lijkt me van wel dus. Weet iemand of die operatie atomic is?
wat bedoel je daar mee als ik vragen mag?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_33058469
quote:
Op dinsdag 13 december 2005 23:00 schreef Chandler het volgende:

[..]

wat bedoel je daar mee als ik vragen mag?
Atomic komt van het idee van het 'kleinste deeltje', in dit geval het idee dat een operatie in één geheel kan worden uitgevoerd. Een INSERT is atomic, dit betekent dat men geen SELECT kan uitvoeren terwijl de INSERT halverwege is bijvoorbeeld. Ik vroeg me af of dit ook het geval is bij een DELETE waarbij je meerdere items verwijderd, aangezien een DELETE op één item normaal wel atomic is
pi_33059279
Dit statement update de kolom vieworder. 10 wordt 5, 5 t/m 9 worden 1 verhoogd.

1
2
3
UPDATE menu
SET vieworder = CASE vieworder WHEN 10 THEN 5 ELSE vieworder + 1 END
WHERE vieworder BETWEEN 5 AND 10

Voor en na de update zijn de waarden in vieworder uniek. Als deze operatie atomic is, dan werkt deze update ook als er een unieke index op vieworder staat. Dat tijdens het updaten van de regels de vieworder niet uniek is maakt niet uit.

Met MySQL 4 krijg je iets van een duplicate index foutmelding.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  woensdag 14 december 2005 @ 19:46:52 #276
98700 cygnusx
Manisch Positief
pi_33079501
Hoi,
Ik ben een forum aan het bouwen. en ik wil nu het zo hebben dat je 10 posts per pagina ziet.
Oftewel, als er meer dan 10 posts zijn moeten onderaan klikbare nummers verschijnen met het aantal pagina's. Ik zou hier vast wel een oplossing voor kunnen vinden, maar hoogstwaarschijnlijk is dat een heel omslachtige manier om dit te doen. Wie heeft er een efficientere manier voor me?

(een ingekorte versie van mijn script)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$posts = @mysql_query("SELECT * FROM ".$forum_prefix."posts WHERE tid=".$id);
if(!@mysql_num_rows($posts)>0){
   home();
   return;
}
$titel = mysql_fetch_assoc($titel);
?>
<h4><?php echo $titel['titel']; ?></h4>
<?php while($data = mysql_fetch_assoc($posts)){?>

<?php
$smilies = array(':)', ':(', ':+', '_O_', '(Y)', ';)', ':{', ':P', ':p','(A)');
$images = array('<img src="smilies/smile.gif">', '<img src="smilies/frown.gif">', '<img src="smilies/clown.gif">', '<img src="smilies/worshippy.gif">', '<img src="smilies/thumbsup.gif">', '<img src="smilies/wink.gif">', '<img src="smilies/nosmile.gif">', '<img src="smilies/puh2.gif">', '<img src="smilies/puh2.gif">', '<img src="smilies/hypocrite.gif">');
$content = str_replace($smilies, $images, $data['content']);
echo $content; ?><br><br>
<?php }
?>
Jesus loves you, the rest of us think you`re an idiot.
  woensdag 14 december 2005 @ 19:53:19 #277
32768 DionysuZ
Respect my authority!
pi_33079740
een COUNT(id) voor het aantal posts (zodat je het aantal pagina's kunt berekenen) en een LIMIT x,10 voor je 10 posts (x staat dan voor pagina*10)
□ Reality is merely an illusion,albeit a very persistent one-A.Einstein
■ Of ik ben gek of de rest van de wereld.Ik denk zelf de rest van de wereld-Rudeonline
□ The war is not meant to be won.It is meant to be continuous-G.Orwell
  woensdag 14 december 2005 @ 20:03:29 #278
65471 SkaterSam
Lurking Galore
pi_33080077
1. bereken het totaal aantal resultaten (bijv. mysql_num_rows() )
2. definieer het maximum aantal resultaten per pagina (bijv. $pp = 10 )
3. bereken het aantal pagina's dat je krijgt door het aantal resultaten te delen door het maximum en het op hele naar boven af te ronden
4. creëer een offset (van welk nummer moeten de resultaten verder gaan op de volgende pagina (bijv. door de link show.php?page=3 en dan de offset berekenen door ($page - 1) * 10 te doen.)
5. Deze offset in de query zetten bij LIMIT $offset, 10

En die linkjes er onder kan je dan met allerlei if/else statements maken, bijvoorbeeld als er maar een pagina is zijn vorige en volgende geen links... Dit doe ik altijd in ieder geval
Let's make life easy
Typo's are the demon spawn from hell !
  woensdag 14 december 2005 @ 20:16:32 #279
32768 DionysuZ
Respect my authority!
pi_33080536
quote:
Op woensdag 14 december 2005 20:03 schreef SkaterSam het volgende:
1. bereken het totaal aantal resultaten (bijv. mysql_num_rows() )
2. definieer het maximum aantal resultaten per pagina (bijv. $pp = 10 )
3. bereken het aantal pagina's dat je krijgt door het aantal resultaten te delen door het maximum en het op hele naar boven af te ronden
4. creëer een offset (van welk nummer moeten de resultaten verder gaan op de volgende pagina (bijv. door de link show.php?page=3 en dan de offset berekenen door ($page - 1) * 10 te doen.)
5. Deze offset in de query zetten bij LIMIT $offset, 10

En die linkjes er onder kan je dan met allerlei if/else statements maken, bijvoorbeeld als er maar een pagina is zijn vorige en volgende geen links... Dit doe ik altijd in ieder geval
Dit is een leuke. Bij een topic met 10.000 posts haal je ze dus allemaal op om het totaal te berekenen terwijl je er maar 10 wilt laten zien? Niet erg efficient.
□ Reality is merely an illusion,albeit a very persistent one-A.Einstein
■ Of ik ben gek of de rest van de wereld.Ik denk zelf de rest van de wereld-Rudeonline
□ The war is not meant to be won.It is meant to be continuous-G.Orwell
  woensdag 14 december 2005 @ 20:25:09 #280
65471 SkaterSam
Lurking Galore
pi_33080866
quote:
Op woensdag 14 december 2005 20:16 schreef DionysuZ het volgende:
Dit is een leuke. Bij een topic met 10.000 posts haal je ze dus allemaal op om het totaal te berekenen terwijl je er maar 10 wilt laten zien? Niet erg efficient.
Doe je SELECT count(*) as TOTAL FROM table LIMIT $offset,10 of zoiets? Zo bedoel je? Maar berekent die dan niet alleen maar degene die hij ophaalt (TOTAL zou dan 10 zijn) ? Enlighten me
Let's make life easy
Typo's are the demon spawn from hell !
pi_33080957
quote:
Op woensdag 14 december 2005 20:25 schreef SkaterSam het volgende:

[..]

Doe je SELECT count(*) as TOTAL FROM table LIMIT $offset,10 of zoiets? Zo bedoel je? Maar berekent die dan niet alleen maar degene die hij ophaalt (TOTAL zou dan 10 zijn) ? Enlighten me
Nee, je doet een aparte COUNT(*)-query zodat MySQL snel het aantal rows kan teruggeven en je het totaal aantal posts weet. Dit is snel omdat de MyISAM-tables een rowcounter bijhouden, bij InnoDB gaat dit niet zo gemakkelijk. Vervolgens kun je door een nieuwe query te LIMIT'en bepalen welke posts je precies ziet
  woensdag 14 december 2005 @ 20:28:31 #282
32768 DionysuZ
Respect my authority!
pi_33081040
quote:
Op woensdag 14 december 2005 20:25 schreef SkaterSam het volgende:

[..]

Doe je SELECT count(*) as TOTAL FROM table LIMIT $offset,10 of zoiets? Zo bedoel je? Maar berekent die dan niet alleen maar degene die hij ophaalt (TOTAL zou dan 10 zijn) ? Enlighten me
Gewoon een SELECT count(*) as TOTAL FROM table.
En daarna een SELECT * FROM table ORDER BY bla LIMIT bla,10. Of een combinatie van beiden op een of andere manier.
□ Reality is merely an illusion,albeit a very persistent one-A.Einstein
■ Of ik ben gek of de rest van de wereld.Ik denk zelf de rest van de wereld-Rudeonline
□ The war is not meant to be won.It is meant to be continuous-G.Orwell
  woensdag 14 december 2005 @ 20:28:52 #283
32768 DionysuZ
Respect my authority!
pi_33081055
quote:
Op woensdag 14 december 2005 20:26 schreef JeRa het volgende:

[..]

Nee, je doet een aparte COUNT(*)-query zodat MySQL snel het aantal rows kan teruggeven en je het totaal aantal posts weet. Dit is snel omdat de MyISAM-tables een rowcounter bijhouden, bij InnoDB gaat dit niet zo gemakkelijk. Vervolgens kun je door een nieuwe query te LIMIT'en bepalen welke posts je precies ziet
□ Reality is merely an illusion,albeit a very persistent one-A.Einstein
■ Of ik ben gek of de rest van de wereld.Ik denk zelf de rest van de wereld-Rudeonline
□ The war is not meant to be won.It is meant to be continuous-G.Orwell
  woensdag 14 december 2005 @ 20:31:09 #284
65471 SkaterSam
Lurking Galore
pi_33081150
COUNT(*) telt dus alle rijen in een DB, terwijl mysql_num_rows() alleen de rijen die uit een query komen telt. Ik snap het denk ik. De rest van de 5 stappen was echter wel 'logisch'?
Let's make life easy
Typo's are the demon spawn from hell !
pi_33082873
quote:
Op woensdag 14 december 2005 20:31 schreef SkaterSam het volgende:
COUNT(*) telt dus alle rijen in een DB, terwijl mysql_num_rows() alleen de rijen die uit een query komen telt. Ik snap het denk ik. De rest van de 5 stappen was echter wel 'logisch'?
Voor zover ik zie wel
pi_33096089
Ik ben op zoek naar een soort image-editor. er zijn n aantal pietlutjes hier die 5mb digitale camera foto's uploaden op een website, en aangezien ik hen werk wil besparen door met paint ( bij gebrek aan beter) te resizen (wat ze vaak niet eens kunnen schrijven), lijkt het me gaaf als ik die afbeeldingen kan standaardiseren naar een breedte van zeg 300 pixels. de hoogte mag daarbij varieren (wel in verhouding tot natuurlijk).

wat misschien nog gaver is, is dat de foto wordt omgezet naar een vierkantje (dus er wordt gecropped zeg maar) maar misschien is dat nog wat te ver gegrepen.

Weet iemand naar welke termen ik moet kijken? of zijn hier toevallig voor t gemak al complete scripts van (zo simpel mogelijk, t liefst automatisch, zonder fratsen enzo).

tx
As a rule, I never touch anything more sophisticated and delicate than myself.
  donderdag 15 december 2005 @ 10:20:43 #287
32768 DionysuZ
Respect my authority!
pi_33096145
□ Reality is merely an illusion,albeit a very persistent one-A.Einstein
■ Of ik ben gek of de rest van de wereld.Ik denk zelf de rest van de wereld-Rudeonline
□ The war is not meant to be won.It is meant to be continuous-G.Orwell
  donderdag 15 december 2005 @ 10:21:57 #288
32768 DionysuZ
Respect my authority!
pi_33096175
overigens kun je met imagejpeg() ook de kwaliteit opgeven van de output
□ Reality is merely an illusion,albeit a very persistent one-A.Einstein
■ Of ik ben gek of de rest van de wereld.Ik denk zelf de rest van de wereld-Rudeonline
□ The war is not meant to be won.It is meant to be continuous-G.Orwell
pi_33096248
Croppen kan wel, maar daarbij heb je wel de kans dat je dingen verliest die je toch had willen bewaren. Dus daarmee zou ik uitkijken.
  FOK!-Schrikkelbaas donderdag 15 december 2005 @ 10:35:05 #290
1972 Swetsenegger
Egocentrische Narcist
pi_33096467
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
<?php
function resize_photo($new_name,$new_width,$new_height,$filename){

// Content type
header('Content-type: image/jpeg');

// nieuwe resolutie bepalen
list($width_orig, $height_orig) = getimagesize($filename);
if(empty(
$new_height)){
                        
$new_height = round(($new_width / $width_orig) * $height_orig);

}elseif(empty(
$new_width)){
            
$new_width = round(($new_height / $height_orig) * $width_orig);

}elseif (
$new_width && ($width_orig &lt; $height_orig)) {
            
$new_width = ($new_height / $height_orig) * $width_orig;

}else{
                        
$new_height = ($new_width / $width_orig) * $height_orig;
}

// Resample
$image_p = imagecreatetruecolor($new_width, $new_height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width_orig, $height_orig);

// Output
imagejpeg($image_p, $new_name, 80);
Imagedestroy($image);
}
?>


Aanroepen met:

1
2
3
4
5
6
7
8
<?php
$filename
= $_FILES['photo']['tmp_name'];
list(
$width_orig, $height_orig) = getimagesize($filename);
$new_name="../pathnaarfotomap/".$watdanook;
$new_width=300; //mag ook leeg izjn
$new_height=200; //mag ook leeg zijn
resize_photo($new_name,$new_width,$new_height,$filename);
?>


Alleen voor jpg, maar dat is redelijk eenvoudig aan te passen in de functie.

Je moet wel GD2 op de server hebben staan.
pi_33098145
quote:
Op donderdag 15 december 2005 10:35 schreef Swetsenegger het volgende:

[ code verwijderd ]

Aanroepen met:
[ code verwijderd ]

Alleen voor jpg, maar dat is redelijk eenvoudig aan te passen in de functie.

Je moet wel GD2 op de server hebben staan.
tx allen

daar ga ik vast uitkomen
As a rule, I never touch anything more sophisticated and delicate than myself.
  donderdag 15 december 2005 @ 14:22:58 #292
32768 DionysuZ
Respect my authority!
pi_33101807
1
2
// Content type
header('Content-type: image/jpeg');

dit is dan toch niet nodig Swetsenegger?
□ Reality is merely an illusion,albeit a very persistent one-A.Einstein
■ Of ik ben gek of de rest van de wereld.Ik denk zelf de rest van de wereld-Rudeonline
□ The war is not meant to be won.It is meant to be continuous-G.Orwell
  FOK!-Schrikkelbaas donderdag 15 december 2005 @ 15:13:02 #293
1972 Swetsenegger
Egocentrische Narcist
pi_33103049
quote:
Op donderdag 15 december 2005 14:22 schreef DionysuZ het volgende:

[ code verwijderd ]

dit is dan toch niet nodig Swetsenegger?
Komt rechtstreeks van php.net: http://nl3.php.net/manual/en/function.imagecopyresampled.php. Ik heb gewoon die functie gepakt en wat aangepast toen ik 'm nodig had
  donderdag 15 december 2005 @ 15:23:55 #294
32768 DionysuZ
Respect my authority!
pi_33103366
quote:
Op donderdag 15 december 2005 15:13 schreef Swetsenegger het volgende:

[..]

Komt rechtstreeks van php.net: http://nl3.php.net/manual/en/function.imagecopyresampled.php. Ik heb gewoon die functie gepakt en wat aangepast toen ik 'm nodig had
Het is nodig als je rechtstreeks een jpeg als output wil hebben, niet als je een jpg file maakt.
□ Reality is merely an illusion,albeit a very persistent one-A.Einstein
■ Of ik ben gek of de rest van de wereld.Ik denk zelf de rest van de wereld-Rudeonline
□ The war is not meant to be won.It is meant to be continuous-G.Orwell
pi_33105940
Hallo,

Voor school moet ik een opdracht over SQL maken (ik studeer economie en dan SQL ). Magoed, ik kom er dus niet helemaal uit. Een aantal vragen blijven open en zijn volgens mij niet echt moeilijk ofzo...voor de gevorderde gebruiker dan

Ik begin maar met de meest kneuzige vraag,
Wat is het gemiddelde aantal factuurregels in 2004?

Ik heb (onder andere) de tabel Factuurregel dus daar zal het antwoord wel vandaan moeten komen.
Factuurregel
Factuurnummer
Artikelcode
verkoopaantal
verkoopprijs

Volgens mij moet ik dus gewoon de factuurnummer optellen en dan delen door het aantal "gecounte" factuurnummers.
Zelf kwam ik tot

SELECT factuurnummer/COUNT(factuurnummer)
FROM factuurnummer;

Maar dat is dus niet helemaal goed. Wie kan me helpen?

Groeten
IbeBen
  donderdag 15 december 2005 @ 16:55:36 #296
37634 wobbel
Da WoBBeL King
pi_33106314
$MySQL_Factuurregels_Select = "SELECT COUNT(*) FROM Factuurregel";
$MySQL_Factuurregels_Query = mysql_query($MySQL_Factuurregels_Select);
$MySQL_Factuurregels_Result = mysql_result($MySQL_Factuurregels_Query, 0);
  donderdag 15 december 2005 @ 16:56:26 #297
37634 wobbel
Da WoBBeL King
pi_33106348
Hoe moet mijn statement worden? met OR, AND of ||?

Als $aap = 1 mag je door, als $blaat = 1 is mag je door, maar als ze allebei 1 zijn mag je ook door.
Als ze allebei 0 zijn, mag je niet door....welke statement moet ik dan hebben?
pi_33106420
Wobbel,

Thanks voor je reactie..Maar ik gebruik volgens mij een ander programma ofoz
Het wordt uit tabellen van access gehaald en vervolgens in het programma S(impel)QL ingetypt.

Zou je je post ook kunnen neerzetten in
Select:
From:
Where:

?

Thanx
  donderdag 15 december 2005 @ 17:02:27 #299
37634 wobbel
Da WoBBeL King
pi_33106537
?? ik begrijp ff niet wat je bedoeld
pi_33106808
Euhmm oke Zal proberen wat duidelijker te zijn

Ik heb dus die access database met gegevens enzo. Daar moet ik dus als opdracht uitkrijgen Wat het gemiddelde aantal factuurregels in 2004 is. Daarvoor gebruk ik (verplicht) het programma-tje S(imple)QL Download

De uitvoer (oftewel de invoer in het programma S(impel)QL) moet in de volgende lay-out
SELECT
FROM
WHERE
GROUP BY
HAVING

ed.

Hopelijk is het nu wat duidelijker
pi_33107134
quote:
Op donderdag 15 december 2005 16:43 schreef IbeBen het volgende:


Ik begin maar met de meest kneuzige vraag,
Wat is het gemiddelde aantal factuurregels in 2004?

Ik heb (onder andere) de tabel Factuurregel dus daar zal het antwoord wel vandaan moeten komen.
Factuurregel
Factuurnummer
Artikelcode
verkoopaantal
verkoopprijs

Volgens mij moet ik dus gewoon de factuurnummer optellen en dan delen door het aantal "gecounte" factuurnummers.
Zelf kwam ik tot

SELECT factuurnummer/COUNT(factuurnummer)
FROM factuurnummer;

IbeBen
moet je voor het gemiddelde aantal factuur regels niet eerst alle factuurregels bij elkeer optellen (de aantallen wat in de tabel staan) en dan delen door het aantal factuurnummers.

hoe dat in sql precies moet weet k niet zo 123 (moet het in 1 query trouwens of mag je er ook meerdere achter elkaar uitvoeren?)
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')