Opdatering af flere felter i db

Tags:    php

<< < 12 > >>
Hey Udviklerer, her kommer en rigtig hjerne vrider - i hvert fald for mig på dette tidspunkt.

Det er lidt indviklet det jeg er i gang med, men jeg vil lige introducere Jer så godt som muligt.

Jeg har forskellige sprog på min hjemmeside, og er i gang med at lave et "oversættelse" modul til det. Den viser hele databasen med X antal strenge pr. side (alt efter hvad du har indtastet, standard 40). Så udfylder du teksterne til databasen, hvor fra du kan vælge at oversætte fra et andet sprog som er i databasen. Så når du har oversat alle X (40) strenge trykker du på GEM og så skulle den oversætte alle strenge på den side.

Alt simpelt, men her kommer hjerne-vrideren. Burde være helt simpelt, men kan simpelthen ikke tænke mig frem til det - helt lost - meget mærkeligt.

Hvordan skulle den så nu opdaterer alle felterne som var fremme?

Se nogle screenshots her: http://img24.imageshack.us/gal.php?g=cf1u.png

Og poster også lige en del af koden.

Fold kodeboks ind/udKode 


Tak! Håber på svar :) - har desv. ingen points :(



12 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Hvis du i stedet for "text_' . $row[StringNo] . '" skrver "text_[' . $row[StringNo] . ']"


så kan du bruge denne kode:
Fold kodeboks ind/udKode 


Det kræver dog at `LanguageNo` og `StringNo` udgør et unikt index i den tabel som de burde.

Du bliver selv lige nød til at finde ud af hvordan du finder id'et på det sprog du opdaterer, dette kunne jeg ikke se i din kode.



Indlæg senest redigeret d. 28.04.2010 22:53 af Bruger #5620
Vil gerne byde ind med 100 kr. til den som kan give mig svaret :-).

Overførsel via. PayPal eller webbank!



Hey Nørden, tusind tak fordi du gav et svar.

Undskyld fordi jeg ikke lige har svaret, men har haft rigtig travlt her på det seneste - beklager!

Vi er ude i noget af det rigtige, med foreach, dog er koden bygget lidt anderledes op.

Burde mysql_query'en ikke lægge inde i foreach løkken? Eller er jeg bare for træt?

Tak for dit svar! Ville ønske jeg kunne bidrage med nogle points.

Forresten, snakker vi languageNo og StringNo i `string` eller i `language` ?

String tabel'en ser således ud: http://img218.imageshack.us/img218/4752/tabelstring.png.



Indlæg senest redigeret d. 18.05.2010 10:49 af Bruger #14015
Nej koden jeg skrev er rigtig nok.

Ideen er at den opdaterer felterne i 'string' tabellen for et valgt sprog, hvis sproget allerede findes, eller indsætter den alle strengene for det nye sprog i 'string' tabellen.


`LanguageNo` og `StringNo` skal tilsammen værre unikke i 'string' tabellen.



Ahh! Okay, super. Fordi der findes kun én row i tabellen som har samme LanguageNo og StringNo.

StringNo. går således:
1
2
3
4
5

LanguageNo er ID'et på sproget, dvs. det går igen flere gange.

Dog oplever jeg nogle problemer, den ser ikke rigtig ud til at virke. Den er skrevet i toppen således:

Fold kodeboks ind/udKode 


Den opdatere hverken felterne, eller opretter dem - ser det ud til.

Jeg takker endnu en gang for din hjælp.

EDIT 1: Okay, jeg har nu lige kigget på min database, og jeg kan se den har tilføjet noget.

Jeg vil lige undersøge det nærmere og komme med et nyt svar når jeg har forstået hvad den prøver at gøre.

EDIT 2: Hmm, det ser umiddelbart ud til at den opretter data i databasen, selvom jeg kun redigere et felt. Den opretter hele den side jeg redigere i. Så den duplikere ikke, den opretter. Dér har vi problemet :)



Indlæg senest redigeret d. 19.05.2010 08:36 af Bruger #14015
Har du husket at sige til din database at
`LanguageNo` og `StringNo` er et unikt index, faktisk primary key?


Hvis du ikke siger det vil den ikke have duplicate key og derfor virke som en insert.



Indlæg senest redigeret d. 19.05.2010 16:12 af Bruger #5620
Når jeg prøver at gøre StringNo eller LanguageNo til primary key giver den mig følgende output:

Fejl

SQL-forespørgsel:

ALTER TABLE `string` ADD PRIMARY KEY ( `StringNo` )

MySQL returnerede: Dokumentation
#1062 - Duplicate entry '25' for key 1




Der en forskel på:

`LanguageNo` og `StringNo` er unikke indekses.

og på:

'LanguageNo` og `StringNo` er et unikt indeks.


I den første er der tale om at både `LanguageNo` og `StringNo` er hvert deres unikke indeks (hvad du forsøger at gære).

I den sidste er der tale om at både `LanguageNo` og `StringNo` til sammen udgør et unikt indeks (hvad du skulle gøre).




Indlæg senest redigeret d. 22.05.2010 23:41 af Bruger #5620
Okay - så hvad vil du have mig til at gøre? :lol:

Har tilføjet dem begge til at være et indeks, var det hvad du mente? :)



Indlæg senest redigeret d. 24.05.2010 15:30 af Bruger #14015
Hvis du gør dem til >>>>>ET<<<< indeks (muligcis primary key), og det stadig ikke virker kan du jo sige hvad den siger af fejl.



Indlæg senest redigeret d. 24.05.2010 21:31 af Bruger #5620
<< < 12 > >>
t