Update van producten

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Martijn nvt

Martijn nvt

09/09/2014 21:55:34
Quote Anchor link
Goedenavond allemaal

Ik heb een vraag, en hoop dat iemand mij kan helpen.
Teminste een zetje in de goeie richting.
Ik ben bezig met een php script om producten aan te passen in mijn database.
Ik wil (en als dat kan) met 2 forms werken.
De eerste form is het selecteren van de categorie, en het selecteren van de juiste table in mijn database.
En als je dan op de submit knop drukt, krijg ik de data van de producten uit mijn database.
De pagina vernieuwd zich weer, en krijg dan de tweede form te zien met de data wat ik geselecteerd hebt uit de eerste form.
Tot zo ver is het mij gelukt.

Nu is mijn vraag, in de tweede form wil ik mijn product updaten.
Maar daar heb ik de value van de eerste form nodig om de juiste table aan te spreken in mijn database.
Heeft iemand een idee hoe ik dat zou kunnen doen?

Vriendelijke groet Martijn
 
PHP hulp

PHP hulp

26/04/2024 03:40:34
 
Obelix Idefix

Obelix Idefix

10/09/2014 09:32:30
Quote Anchor link
Martijn nvt op 09/09/2014 21:55:34:
De eerste form is het selecteren van de categorie, en het selecteren van de juiste table in mijn database.
En als je dan op de submit knop drukt, krijg ik de data van de producten uit mijn database.

Heb wat vraagtekens bij het database-model.
Waarom zou een gebruiker een table moeten selecteren?

Zet de waarde van de geselecteerde table in een sessie.
 
Ward van der Put
Moderator

Ward van der Put

10/09/2014 10:43:36
Quote Anchor link
Horen alle producten niet sowieso in dezelfde tabel?
De categorie is daarin dan een integer die verwijst naar een tweede tabel met alle categorieën.
 
Martijn nvt

Martijn nvt

10/09/2014 17:55:21
Quote Anchor link
De eerste form klik je de categorie aan van welk product je wilt hebben en de tweede form daar klik je het product aan of aanpassingen doen in de database
 
Ward van der Put
Moderator

Ward van der Put

10/09/2014 19:40:31
Quote Anchor link
Dan bepaalt de eerste keuze de WHERE-clausule in een query zoals:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
SELECT ...
  FROM products
  WHERE category_id = '...'
 
Martijn nvt

Martijn nvt

10/09/2014 20:09:57
Quote Anchor link
Ja dat heb ik maar als je dan de tweede form krijgt dan moet de volgende "sql = update" en dan de valse van de vorige form om te updaten maar dat wil niet lukken

Toevoeging op 10/09/2014 20:19:21:

Ik heb dan staan SELECT product_naam, levering FROM $categorie
Categorie is dan de table in mijn database
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

10/09/2014 20:50:21
Quote Anchor link
Dat is wat Ward zegt, je database is niet goed ingericht. Je hebt nu per categorie een tabel met producten.
Wat als er in de toekomst een categorie bijkomt?

Met andere woorden 2 tabellen, producten en categorieen.
Gewijzigd op 10/09/2014 21:00:28 door Ger van Steenderen
 
Martijn nvt

Martijn nvt

10/09/2014 21:20:12
Quote Anchor link
Bijv. Ik moet Heineken bier aanpassen dat in de aanbieding is.
Dan selecteer ik bier in mijn database "categorie", en dan krijg ik in mijn andere form alle bier soorten en selecteer dan de naam Heineken "producten " en pas het aan en dan update ik het product.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

10/09/2014 21:35:28
Quote Anchor link
Je bent heel erg onduidelijk, laat eens zien hoe je database eruit ziet
 
Frank Nietbelangrijk

Frank Nietbelangrijk

10/09/2014 22:06:55
Quote Anchor link
Even terug naar je eerste post:

Je kunt in de tweede form een hidden input opnemen waarin de naam van de categorie staat.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="hidden" name="category" value="<?php echo $_POST['category']?>" />


Tevens en misschien beter of makkelijker kun je de categorie in $_SESSION opslaan.

Session opslaan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
session_start();

$_SESSION['edit-category'] = $_POST['category']; // POST waarde uit je eerste form
?>


Session ophalen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
session_start();

$category = $_SESSION['edit-category'];
?>
Gewijzigd op 10/09/2014 22:13:49 door Frank Nietbelangrijk
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

10/09/2014 22:14:06
Quote Anchor link
En dan blijft het database model nog steeds een zooitje ongeregeld ... !!
 
Frank Nietbelangrijk

Frank Nietbelangrijk

10/09/2014 22:16:10
Quote Anchor link
Ger van Steenderen op 10/09/2014 22:14:06:
En dan blijft het database model nog steeds een zooitje ongeregeld ... !!


Mee eens Ger. Het is beter zoals Ward ook schrijft om alle producten in de één tabel te houden.

Toevoeging op 10/09/2014 22:21:31:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
categories
==============
id | omschrijving
-----------------
1  | Bier
2  | Snacks

products
==============
id | cat_id | omschrijving  | prijs
-----------------------------------
3  |   1    | Heineken 33cl | 0.85
4  |   2    | Paprika chips | 1.95
 
Martijn nvt

Martijn nvt

10/09/2014 23:43:09
Quote Anchor link
Ger zooitje is het niet, heb een webwinkel met meer dat 50 verschillende categorieën en meer dat 1500 verschillende producten.
Als ik alles onder 1 tabel moet weg schrijven dan vind ik dat juist een zooitje en niet overzichtelijk


Toevoeging op 10/09/2014 23:46:19:

Dank je wel frank voor je tip en advies, deze ga ik zeker even proberen :)
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

10/09/2014 23:56:19
Quote Anchor link
Ter verduidelijking, ik maak uit jouw reacties op dat je voor elke categorie een tabel hebt voor de producten die bij die categorie horen.
Dan ben ik benieuwd hoe je bv de verkoopcijfers van de afgelopen maand ophaalt.
 
Willem vp

Willem vp

11/09/2014 13:31:09
Quote Anchor link
> Dan ben ik benieuwd hoe je bv de verkoopcijfers van de afgelopen maand ophaalt.

Dat kun je toch zelf wel bedenken? Gewoon een query over 50 tabellen. ;-)
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

11/09/2014 17:09:49
Quote Anchor link
>> Dat kun je toch zelf wel bedenken? Gewoon een query over 50 tabellen. ;-)

Ik wel, maar ik hoef het (gelukkig) niet te bedenken ;-)
 
Ward van der Put
Moderator

Ward van der Put

11/09/2014 17:25:10
Quote Anchor link
Is ook héél logisch, nietwaar: gewoon een CREATE TABLE doen als je een categorie wilt toevoegen. En een DROP TABLE als je een categorie wilt verwijderen.

Beauty is in the eye of the beholder.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

11/09/2014 21:53:47
Quote Anchor link
Het kan met PostGresql veel makkelijker:
Quote:
Het klassieke voorbeeld van data sie in een HSTORE thuishoort zijn producteigenschappen. Elke fabrikant levert zijn eigen lijst van gegevens over een product. Sommige gegevens worden door alle fabrikanten meegegeven, anderen alleen door bepaalde fabrikanten. Het is niet realistisch om een lijst op te stellen van alle mogelijke attributen die een fabrikant mee zou kunnen gaan willen geven, dus als je deze data wilt kunnen opslaan dan kom je uit op een Entity-Attribute-Value tabel, een tabel met het id van het product, de naam van de eigenschap en de waarde die de fabrikant voor die eigenschap meegeeft.

Voordeel van een EAV tabel is dat je er alles in kwijt kunt als een key/value pair, nadeel is dat je de values niet relationeel kunt verbinden aan een tabel van toegestane waarden, omdat je niet weet onder welke key de fabrikant een eigenschap gaat aanleveren en al helemaal niet in welk formaat de fabrikant de value aan gaat leveren, noemt hij de kleur van een broek "Blauw", "Azuur Blauw", of "Tricky Blue"?

Wat dat betreft is het dus exact hetzelfde als een HSTORE; een key/value pair waarin je niets kunt afdwingen zonder kunstgrepen. De HSTORE is alleen ogelooflijk veel sneller om uit te lezen dan een EAV. Er komt geen subquery, JOIN of GROUP BY aan te pas.

Bron
Gewijzigd op 11/09/2014 21:59:34 door Ger van Steenderen
 



Overzicht Reageren

 
 

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