[php/mysql] velden met zelfde naam updaten

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Ik heb het volgende probleem:

Ik haal uit een mysql database een product, en de 7 dagen van de week met daarin een waarde. Deze waardes komen in een inputfield op een form om eventueel aangepast te worden door een gebruiker. Het ziet er op de pagina als volgt uit:

product inputfield inputfield inputfield inputfield inputfield inputfield
product inputfield inputfield inputfield inputfield inputfield inputfield
product inputfield inputfield inputfield inputfield inputfield inputfield

etc.

Ieder input veld bij elk product heet ook maandag, dinsdag etc.
Het probleem is dus dat ik meerdere velden met de zelfde naam heb maar deze steeds bij een ander product wil updaten.

De update query die ik gebruik pakt alleen de laatste in het rijtje. Natuurlijk omdat ik geen loop voor ieder product gebruik. Maar kan je dit wel in een keer allemaal updaten? Omdat je in principe overal het zelfde naampje hebt.

Nou zou het door het unieke id te kunnen gebruiken, maar het de "name" in de tag van het inputfield is al gebruikt net als "value". Hoe doe ik dit?

Acties:
  • 0 Henk 'm!

Verwijderd

Plak achter het de naam van het veld een regelnummer. Tijdens het behandelen van een formulier loop je dor alle regels en geef je een update statement voor iedere regel.

HTH :)

Acties:
  • 0 Henk 'm!

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Hmm, ik zou daar ook het ID achter kunnen plakken. Maar hoe update ik ze dan in een loop ?

Want ik moet ze toch allemaal als variabele oid kunnen aanspreken: UPDATE blaat SET maandag = '$variabele' WHERE product = '$product';

etc.

[ Voor 46% gewijzigd door ViNyL op 09-05-2004 00:05 ]


Acties:
  • 0 Henk 'm!

Verwijderd

wat ik gewoonlijk doe is de name tag van form elementen als volgt op te bouwen.

code:
1
<input name="products[<?=$pid;?>][naam]" value="<?=$pname;?>">


Dan heb ik in $_POST een veld products waarin per product-id weer een nieuwe record zit met alle gegevens die je daarvoor nodig hebt. Dan moet je enkel nog even over die records loopen en het noodzakelijke werk uitvoeren.

Acties:
  • 0 Henk 'm!

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Hoe zet ik ze in een update query in een loop dan ? Foreach loop ofzo ?

Ik voor het verwerken omzet in een variabele zou dat dan zo kunnen:

PHP:
1
$maandag = isset($_POST['maandag']($_POST['id'])) ? $_POST['maandag'] : '';


En dat dan voor iedere dag bij ieder product?

[ Voor 61% gewijzigd door ViNyL op 09-05-2004 00:14 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Ten eerste wil je evt. checken of een value wel veranderd is om geen overbodige updates te doen.

Daarnaast zullen de veldnamen uniek zijn. Als je op een formulier bijv productnaam en prijs hebt staan, zul je velden productnaam1 t/m productnaamx hebben, en tevens prijs1 t/m prijsx. Als je het vaste deel van de veldnamen (in dis geval 'productnaam' en'prijs') en een tellervariabele voor de regelnummers aan elkaar plakt, heb je de unieke veldnamen, waarvan je vervolgens de waarden kunt pakken om UPDATE queries mee te bouwen.

HTH :)

Acties:
  • 0 Henk 'm!

Verwijderd

Tegen dat je weet of een update query overbodig is heb je gewoonlijk al evenveel of meer overhead dan wanneer je gewoon de update query had gedaan. Kbedoel een select doen en de waardes nakijken heeft toch al niet zoveel zin met mysql aangezien deze de transacties gewoonlijk niet bewaakt.
Kan je net zo goed gelijk de update query doen.

Acties:
  • 0 Henk 'm!

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Ik heb het nu zo gedaan dat je gewoon eerst een product kiest om aan te passen. Ipv dat je ze allemaal in een keer zou kunnen aanpassen.
Pagina: 1