Database rij kopieren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Kenzo

kenzo

06/02/2008 13:34:00
Quote Anchor link
Hallo,

Ik wil graag (via m'n site) een rij in een database kunnen kopieren. De hele rij.

Niet in phpmyadmin exporteren ofzo, maar gewoon een rij kopieren.

Kan dat en zoja hoe


Bedankt -- Kijk ook hieronder de foto voor meer informatie!


http://img263.imageshack.us/my.php?image=fotoqb6.jpg
Gewijzigd op 01/01/1970 01:00:00 door Kenzo
 
PHP hulp

PHP hulp

25/04/2024 07:04:29
 
Jacco Engel

Jacco Engel

06/02/2008 13:39:00
 
Kenzo

kenzo

06/02/2008 13:44:00
Quote Anchor link
Daar kan ik wel wat mee, alleen moet dit in een externe table.


Kan ik dat ook aanpassen dat het in de zelfde tabel als nieuw id wordt toegevoegd?


en hier kopieer je de colom en niet de rij...


Kan daar ook iets aan gedaan worden...

Ik wil bijvoorbeeld de rij van id=323 kopieren.

Ik wil dan dezelfde advertentie als id=323 hebben, met een nieuw id.

(een waarde invoeren dus van een bestaande advertentie!
Gewijzigd op 01/01/1970 01:00:00 door kenzo
 
Joren de Wit

Joren de Wit

06/02/2008 13:46:00
Quote Anchor link
Wat houdt je tegen om het te proberen? Het zal niet bijten...

Dus iets als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
SELECT * INTO tabel
FROM tabel
WHERE id = 1


ps. Maar waarom zou je in hemelsnaam records willen kopieren in een tabel? Je krijgt op die manier dubbele records in je database en dat is juist niet wat je wilt!
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Kenzo

kenzo

06/02/2008 13:54:00
Quote Anchor link
Jawel,

Ik heb een modelbouwsite.

Nu kan het voorkomen dat precies hetzelfde artikel al bestaat met alleen een andere kleur.

Daarom wil ik hem kunnen kopieren en meteen wijzigen in de goede kleur.

Ik heb hem wel dubbel, maar wel anders dan.



PS: SELECT * FROM tabel = alles selecteren van de rij waar id=1 en dat kopieert hij naar nieuw id in dezelfde tabel?
 
Joren de Wit

Joren de Wit

06/02/2008 13:58:00
Quote Anchor link
Quote:
Daarom wil ik hem kunnen kopieren en meteen wijzigen in de goede kleur.
En dat is niet de juiste aanpak. Wat je doet is een tabel met kleuren aanmaken en vervolgens dmv een koppeltabel de kleur aan een artikel koppelen. Je gaat dus geen dubbele records van hetzelfde artikel opslaan...

Die query interpreteer je overigens wel juist. ;-)
 
Frank -

Frank -

06/02/2008 14:00:00
Quote Anchor link
Ga normaliseren, dat heb je zo te zien nog niet gedaan. Dat is echter wel de basis van een goede database, dit kun je dus niet ongestraft overslaan. Doe je dat wel, bereid je dan maar vast voor op een hoop bugs en veel extra werk.
 
Kenzo

kenzo

06/02/2008 14:45:00
Quote Anchor link
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'cms_producten FROM cms_producten WHERE id = '884'' at line 1





Deze fout krijg ik?
 
Frank -

Frank -

06/02/2008 14:50:00
Quote Anchor link
Dat is mooi, maar heb je al genormaliseerd en jouw database aangepast? Voor jouw huidige probleem wil je namelijk helemaal geen oplossing hebben, je wilt namelijk geen dubbele data in je database hebben staan!

er gaat overigens iets fout vóór de naam cms_producten. Zonder de complete query kunnen we daar alleen naar raden. Desondanks wil ik het helemaal niet weten, dit soort lapmiddelen wil je niet in je systeem hebben.

Er zit een grote fout in je systeem: Het datamodel is fout.
 
Kenzo

kenzo

06/02/2008 14:56:00
Quote Anchor link
Wat kan ik normaliseren dan?

Ik voeg in een categorie producten in.

Er zijn enkele met meer dan 1 kleuren.

Er komen dus hooguit 10 waardes bij.

Dat is toch geen probleem. Als ik meer advertenties zou toevoegen zou het hetzelfde zijn?
 
Frank -

Frank -

06/02/2008 15:27:00
Quote Anchor link
kenzo schreef op 06.02.2008 14:56:
Wat kan ik normaliseren dan
Deze vraag zegt al genoeg!

Wat dacht je van het normaliseren van jouw data? Heb je de tutorial wel gelezen? Heb je m.b.v. de tutorial wel het e.e.a. uitgewerkt? Snap je uberhaubt wel wat normaliseren is?

Wanneer je een database opzet zonder te normaliseren, ben je fout bezig. Wanneer je meer ervaring hebt, is het niet altijd nodig om het model op papier uit te werken, maar je zult altijd moeten normaliseren. Begin daar dan ook mee.
 
Kenzo

kenzo

06/02/2008 15:49:00
Quote Anchor link
Nee, ik denk dat ik de tabellen wel goed gemaakt heb, maar jullie niet weten hoe ik het gemaakt heb. (logisch, want jullie hebben nog niet eens gezien hoe ik het gemaakt heb).

Is er een verschil tussen 2 databases aanmaken en steeds het id invullen van een kleur, of ipv de kleurcode gewoon de kleur in voegen?

Iedere advertentie staat er maar 1 keer in. (dat moet zowieso, anders heb je de advertentie niet).

Dan kun je ook kiezen welke kleur (gewoon invullen), en als het is (Komt zeer zelfde voor) wil ik de tabel kunnen kopieren voor nog een andere kleur of andere eigenschap in te vullen.


Ik heb zo'n 43 keuzes in de database omdat er gigantisch veel verschillende soorten producten in kunnen komen te staan.

Alles werkt, en alleen mijn vraag is of ik iets kan kopieren.

Verder weet ik waar ik mee bezig ben en loopt alles goed.

Ik heb geen fout op de pagina gezien, en als ik een fout merk weet ik hem tot nu toe altijd op te lossen.
 
Joren de Wit

Joren de Wit

06/02/2008 15:57:00
Quote Anchor link
Quote:
logisch, want jullie hebben nog niet eens gezien hoe ik het gemaakt heb
Laat dan eens zien hoe je datamodel eruit ziet, mij heb je nog steeds niet overtuigd namelijk...

Verder klopt die query die ik gaf inderdaad niet, dat moet natuurlijk wel een INSERT query zijn:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
INSERT INTO tabel
(
    kolom1,
    kolom2,
    ...
)
SELECT
    kolom1,
    kolom2,
    ...
FROM
    tabel
WHERE
    id = 1

Let erop dat je de kolom 'id' niet meeneemt in de INSERT of SELECT aangezien het dan fout gaat vanwege de auto_increment.

Maar nogmaals: het kan bijna niet kloppen dat je zo'n query nodig zou hebben. Je bent dan namelijk, hoe je het ook wendt of keert, data dubbel in je database aan het opslaan, en dat is per definitie niet juist! Dit zal in de toekomst dan ook zeker tot problemen leiden!
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Frank -

Frank -

06/02/2008 16:02:00
Quote Anchor link
Quote:
omdat er gigantisch veel verschillende soorten producten in kunnen komen te staan.
Wow! Over hoeveel miljoen producten hebben we het dan? Of moet ik zelfs in miljarden denken? Ook dat is geen enkel probleem voor de database...

Het feit dat jij denkt dat je records moet kopieeren, is wel een probleem. Dat is namelijk zo'n beetje de grootste fout die je kunt maken in een database. Data sla je niet dubbel op, er wordt dus nooit iets gekopieerd. Wanneer 1 product meerdere kleuren kan hebben en meerdere producten een kleur kunnen hebben, krijg je de volgende opzet:

tabel producten:
- id
- naam

tabel kleuren:
- id
- kleur

koppeltabel product_kleur:
id_product (met foreign key op de tabel producten op de kolom id)
id_kleur (met foreign key op de tabel kleuren op de kolom id)

En het lijkt mij sterk dat jij deze opzet hebt, jij hebt namelijk nog steeds niet (goed) genormaliseerd.

En waarom zou je 2 databases aanmaken? Daarmee raak je nog verder van huis! Of bedoel je soms 2 tabellen?

Ps. Je kunt dus geen MyISAM gebruiken in MySQL, je bent verplicht om innoDB te gebruiken.
 
Kenzo

kenzo

06/02/2008 16:17:00
Quote Anchor link
Ik denk dat jullie het niet goed snappen..

Ik ga helemaal geen database kopieren, en ik bedoel ook geen miljoenen verschillende invoeren, maar rond de 50. (dat is niet veel, maar daarom zou het ook geen probleem moeten zijn om een rij te kopieren).


1 id.


Bijvoorbeeld waar nu in de tabel de waardes staan bij ID=1, moet dat gekopieerd worden naar id=4 (als er maar 3 in de database zouden staan.

Ik heb ook een foto erbij gedaan voor een duidelijk voorbeeld, maar dat zal nog wel niet bekeken zijn.

HIER NOGMAALS DE FOTO:
http://img263.imageshack.us/my.php?image=fotoqb6.jpg
 
Frank -

Frank -

06/02/2008 16:23:00
Quote Anchor link
Zolang jij het hebt over kopieeren, zal deze discussie tot niets leiden. Kopieeren komt namelijk niet voor in een goed datamodel, dat leidt tot dubbele data. En dubbele data leidt tot corrupte data.

Kijk nog eens heel goed naar mijn opzetje: Wanneer je daar hetzelfde product wilt toevoegen met een andere kleur, hoef je alleen met het id van het product en het id van de kleur in de koppeltabel op te slaan en klaar ben je. Daar wordt dus helemaal niks gekopieerd.

Verder vermoed ik dat jij niet snapt wat een database is en voor je kan doen. Dat is een groter probleem dan dat wij niet snappen wat jij aan het uitspoken bent...
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
Kenzo

kenzo

06/02/2008 16:26:00
Quote Anchor link
Laat maar...

Ik hoef de hulp al niet meer.


Als ik vraag of jullie een code weten voor een rij (ZIE PLAATJE!) te kopieren kunnen jullie zeggen dat je het weet (en misschien ook het antwoord geven), of je mond houden.

Ik heb al een aantal keren verteld dat het niet erg is om het te kopieren omdat hier kopieren hetzelfde is als een nieuwe waarde invoeren. (of ik nu 2x een waarde in de tabel invoer of 1 kopieer, dat maakt niets uit).



Het product kan ook in de winkelwagen komen en als ik dat ook allemaal moet aanpassen dat hij dan in verschillende kleuren in het mandje kan komen ben ik veel langer kwijt dan dat in totaal 10 artikelen dubbel staan...

Dan voeg ik ze wel gewoon dubbel in... (precies hetzelfde)

Als jullie me niet willen helpen zoek ik het wel ergens anders.

Wat maakt het jullie uit of ik het kopieer of niet?
Gewijzigd op 01/01/1970 01:00:00 door kenzo
 
Joren de Wit

Joren de Wit

06/02/2008 16:26:00
Quote Anchor link
Twee dingen:

1. Volgens mij ben jij degene die hier niet leest. In mjn vorige post heb ik je een query gegeven die gewoon zou moeten doen wat jij wilt...

2. Ik denk dat wij jou heel goed snappen, jij bent op dit moment gewoon aan het werkt met een fout datamodel. Ik kan je genoeg dingen aanwijzen die hier niet aan kloppen, maar je zou ook zelfs eens een tutorial over normaliseren kunnen doorlezen en dat eens gaan toepassen op jouw datamodel.

Doe je dat niet, bereid je dan maar vol op een toekomst waarin wel eens grote problemen op je zouden kunnen wachten...
 
Kenzo

kenzo

06/02/2008 16:30:00
Quote Anchor link
Jij geeft dit:

INSERT INTO tabel
(
kolom1,
kolom2,
...
)
SELECT
kolom1,
kolom2,
...
FROM
tabel
WHERE
id = 1



Als ik ipv kolom1 de naam van het veld geef, moet ik dan nog wat doen?


Dan moet het toch werken? (ik hoef niets meer met values enzo te doen?)


en ik snap niet goed wat die haakjes daar doen?

{
}


Bedankt!
 
Frank -

Frank -

06/02/2008 16:30:00
Quote Anchor link
kenzo schreef op 06.02.2008 16:26:
Laat maar...

Ik hoef de hulp al niet meer.
Die indruk kreeg ik helaas al, je doet er namelijk niets mee.

Quote:
Als ik vraag of jullie een code weten voor een rij (ZIE PLAATJE!) te kopieren kunnen jullie zeggen dat je het weet (en misschien ook het antwoord geven), of je mond houden.
Mijn mond houden? Ja dááág! Omdat een snotaap denkt dat ie het beter weet? Die is gek!
Quote:
Ik heb al een aantal keren verteld dat het niet erg is om het te kopieren omdat hier kopieren hetzelfde is als een nieuwe waarde invoeren. (of ik nu 2x een waarde in de tabel invoer of 1 kopieer, dat maakt niets uit).

Als jullie me niet willen helpen zoek ik het wel ergens anders.

Wat maakt het jullie uit of ik het kopieer of niet?
Wees nu niet zo stront eigenwijs en leer van andermans fouten. Ja, wij zijn hiermee ook op onze muil gegaan, wij hebben deze blunders ook gemaakt. Dat wil alleen niet zeggen dat wij nu een grote kuil voor jou gaan graven waar jij vervolgens met open ogen zo in dondert. Dat zou een rattenstreek zijn, daar houden wij niet van. Wij willen je helpen, alleen jammer dat jij niet wilt worden geholpen.

Rest mij niets anders dan je veel succes toe te wensen in het debuggen van je systeem. Bugs ga je namelijk gegarandeerd krijgen, evenals corrupte data. Ik spreek uit ervaring... Ruime ervaring!
 
Erik Rijk

Erik Rijk

06/02/2008 16:31:00
Quote Anchor link
@ kenzo,

De mensen hier zijn zeker wel bereid je te helpen, maar je datamodel klopt niet.
Ik snap dat je antwoorden krijgt die je niet wilt horen omdat dat je probleem niet oplost, maar deze mensen proberen je zo te helpen dat jij straks verder gaat met een correct datamodel en daarmee toekomstige problemen voorkomt.

Data dubbel in een database plaatsen in gewoon niet juist, luister nou naar deze mensen en "doe" wat ze zeggen, later zal je ze echt dankbaar zijn.

Mvg,

Erik
 

Pagina: 1 2 volgende »



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.