[PHP/Javascript] Dynamisch veld toevoegen

Pagina: 1
Acties:
  • 141 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Ik heb een dillema waar ik even een frisse blik op nodig heb. Het gaat om het volgende:

Ik heb een pagina waar je verzuim data aan een persoon kan hangen. Je kan dynamisch een veld toevoegen onder de verzuim data die er al zijn.. Dit gebeurt met een stukkie javascript. Vervolgens kun je het form submitten (d0h).

De velden die je dynamisch toevoegt staan in een array. Als ik verzuim data heb die al aanwezig is geef ik die het record id als array waarde.

Het nieuwe veld krijgt dan automagisch het laatste nummer in de array + 1.

Nu mijn dillema, nou ja valt denk ik wel mee, anyways:

In de array zitten nu dus een aantal waardes die al bestaan, en een aantal die nieuw zijn. Dit moet uiteindelijk weer in de database komen.
Hoe kan ik dit nu het beste toevoegen?

1. Kijken naar de waarde in de array en checken in de tabel of de waarde een id is van een bestaand record en updaten, zoniet komt de waarde uit de array niet als id voor en dan toevoegen als nieuw record?
2. Andere optie?

Graag jullie mening/input/opmerkingen

De code:

Het javascript gedeelte:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function addEvent()
{
var ni = document.getElementById('myDiv');
var numi = document.getElementById('theValue');
var num = (document.getElementById("theValue").value -1)+ 2;
numi.value = num;
var divIdName = "my"+num+"Div";
var newdiv = document.createElement('div');
newdiv.setAttribute("id",divIdName);
newdiv.innerHTML = "<input type=\"text\" name=\"begindatum[]\">Element Number "+num+" has been added! <a href=\"javascript:;\" onclick=\"removeEvent(\'"+divIdName+"\')\">Remove the div &quot;"+divIdName+"&quot;</a>";
ni.appendChild(newdiv);
}

function removeEvent(divNum)
{
var d = document.getElementById('myDiv');
var olddiv = document.getElementById(divNum);
d.removeChild(olddiv);


Het formpie (waar ik in de head bovenstaand javascript aanroep)

HTML:
1
2
3
4
5
6
7
8
9
10
11
<form action="verzuim2.php" method="post">
    <input type="hidden" value="0" id="theValue" />
    <p><a href="javascript:;" onclick="addEvent();">Verzuim datum toevoegen</a></p>
    
    <input type="text" name="begindatum[2]"/>een al bestaande datum<br/>
    <input type="text" name="begindatum[4]"/>een al bestaande datum<br/>
    <input type="text" name="begindatum[20]"/>een al bestaande datum<br/>
        
    <div id="myDiv"> </div>
    <input name="" type="submit" />
</form>


Het php gedeelte (verzuim2.php)
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?php

        foreach($_POST['begindatum'] as $key => $line)
            {
                 if($_POST['begindatum'][$key] > null)
                    {       
                        echo $key . "-". $line. "<br/>";
                    }
            }

?>


Het is overigens een test setupje, dus gewoon even input velden etc

Acties:
  • 0 Henk 'm!

  • Bolukan
  • Registratie: Oktober 2002
  • Laatst online: 23-08 23:43
Een andere veldnaam gebruiken?

Edit: Oeps geen Javascript hier

[ Voor 68% gewijzigd door Bolukan op 15-03-2007 22:16 ]


Acties:
  • 0 Henk 'm!

  • ixi
  • Registratie: December 2001
  • Laatst online: 27-08 23:59

ixi

Is het wenselijk om elke keer alle gegevens te kunnen bewerken? Je zou er voor kunnen kiezen om aparte pagina te hebben voor het aanpassen van een datum, en dmv je dynamische velden toevoegingen te doen.

Als je constant alle gegevens met een POST meestuurt zou ik zelf kiezen om eerst alles in de database te verwijderen, en dan alle velden weer te inserten.

Acties:
  • 0 Henk 'm!

  • doeternietoe
  • Registratie: November 2004
  • Laatst online: 20-09 17:02
Ik hoop dat ik het probleem begrijp. Als ik dat het geval is dan heb je in de database waarden en in een array waarden die daar aan toegevoegd moeten worden. Vervolgens moeten alleen die waarden uit de array worden toegevoegd die nog niet in de database stonden.

Ik zou doen:
-de input in een array
-de waardes uit de database in een array
-de bovenstaande arrays samenvoegen
-dubbele waarden eruit halen
-hele zaakje weer in de database stoppen

Acties:
  • 0 Henk 'm!

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Ik denk dat het vergelijken van de twee arrays inderdaad wel een goede oplossing is.. daar ga ik eens even mee aan de gang. Tnx

Acties:
  • 0 Henk 'm!

Verwijderd

Ik zou je arrays alleen niet samenvoegen, maar per item bekijken wat er mee moet gebeuren:

• key staat in database en in $_POST: update
• key staat in database maar niet in $_POST: delete
• key staat niet in database maar wel in $_POST: insert

Waarbij je bij de eerste optie ook nog even kan checken of de waarde daadwerkelijk veranderd is.
Pagina: 1