Array uitlezen uit een inputveld

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Brecht S

Brecht S

24/05/2014 13:58:33
Quote Anchor link
Ik heb een formulier gemaakt waar ik velden kan toevoegen en terug verwijderen.

HTML:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
      <form method="post">
      <table width="90%" border="0" cellspacing="0" cellpadding="0" id="ingredienten"><tr><td>Kennis</td><td>Niveau</td></tr>
      <tr>
        
<td><input type="text" name="naam[]" /></td>
<td><input type="text" name="niveau[]" /></td>

<p><a href="#" class="bg_grey btn_small" id="add">toevoegen</a> <a href="#" class="bg_red btn_small white" id="remove">verwijderen</a></p>        
        
        </td>
        </tr>
      </table>


En de bijhorende JS:
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
15
16
17
18
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>
<script type="text/javascript" language="javascript">
$(function() {
var i = 1;

$('a#add').click(function() {
$('<tr><td><input type="text" name="naam[]"></td><td><input type="text" name="niveau[]"></td></tr>').appendTo('#ingredienten');
i++;
});

$('a#remove').click(function() {
if(i > 1) {
$('#ingredienten tr:last-child').remove();
i--;
}
});
});
</script>



En de vraag:

Hoe kan ik de gegevens uit de tabel uitlezen en die in de mysql plaatsen? Wat is de beste methode daarvoor? Of zit ik er helemaal naast met hetgeen ik nu al heb?
- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Alvast bedankt!
Gewijzigd op 25/05/2014 15:57:57 door - Ariën -
 
PHP hulp

PHP hulp

28/04/2024 02:11:42
 
Frank Nietbelangrijk

Frank Nietbelangrijk

24/05/2014 18:47:54
Quote Anchor link
Bedenk dat html en javascript in browser van de gebruiker draait en je dus eerst de gegevens moet posten naar de server. Dit kan op de achtergrond met AJAX of door het formulier te SUBMIT-en. Het grootste verschil is dat na een submit een nieuwe pagina ingeladen wordt en met ajax kun je dmv javascript acties verichten terwijl je in dezelfde pagina blijft. Aan de kant van de server kan php er voor zorgen dat de data in de database geplaatst wordt
 
Brecht S

Brecht S

25/05/2014 15:48:10
Quote Anchor link
Denk dat ajax dan een betere oplossing zal zijn.
Alhoewel ik dat perfect kan posten en op dezelfde page kan blijven door de methode='post' te gebruiken en dan met een if (isset... in php de submit kan opvangen.
Allen is de vraag hoe ik de waarde uit de array naam[] en niveau[] kan uitlezen en die gegevens kan opslaan in een database. Eventueel kan dit met de waarden te scheiden uit de array met een komma en die zo op te slaan in de db in een veld.

Kan je mij op weg helpen? Ik heb geen idee waar te beginnen? Thanks.
Gewijzigd op 25/05/2014 15:52:31 door Brecht S
 
Frank Nietbelangrijk

Frank Nietbelangrijk

25/05/2014 20:37:49
Quote Anchor link
Door een PHP bestand aan te roepen waar het formulier naar toe gepost wordt. Je kunt namelijk in PHP de $_POST array uitlezen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
echo '<pre>';
print_r($_POST);
echo '</pre>';
?>


Indien je echt nog helemaal geen ervaring hebt hoe je gegevens uit een formulier terug krijgt op de webserver en hoe je ze dan in de database kunt zetten dan adviseer ik je om javascript nog totaal links te laten liggen en dus ook AJAX. In dat geval kun je beter eerst eens een simpel contact formulier maken, vervolgens iets gaan leren over SQL om daarmee de gegevens uit je contactform in de database op te slaan.

Formulier maken:
http://www.phptuts.nl/view/39/8/
https://www.youtube.com/watch?v=g_r4a-DXA7c

SQL:
http://www.phptuts.nl/view/41/
 
Brecht S

Brecht S

25/05/2014 20:44:34
Quote Anchor link
Ik weet hoe ik gegevens uit een formulier moet halen. Vb: $_POST['naam'] = $naam; en dan vervolgens echo $naam; en dan krijgen we het resultaat van een post uit een formulier. Dit was niet mijn vraag. De vraag was hoe ik de array kan uitlezen (array naam en array niveau). Er zijn nog velden in dat formulier die moeten uitgelezen worden maar dit is al in orde, daarom heb ik die ook weggelaten uit mijn vraag.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

25/05/2014 20:55:28
Quote Anchor link
op dezelfde manier:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
if(isset($_POST['naam']))
{

    $naam = $_POST['naam'];
    if(is_array($naam))
    {

        foreach($naam as $n)
        {

            echo $n . '<br>';
        }
    }
}

?>
 
Brecht S

Brecht S

25/05/2014 21:08:42
Quote Anchor link
Weer wat bijgeleerd. Dat wist ik niet dat het zo eenvoudig was. Nu nog een bijkomende vraag: Het is altijd een naam en een kennis die samen per lijn worden weergegeven. Dus vb: naam:html en niveau: 50% en dan kan je eronder nog een regel toevoegen.

Dus uiteindelijk krijg je zoiets als:

html 50%
php 40%
enz...

Het ene zit in de array naam en de andere waarde zit in de array niveau. Kunnen we die samen houden en splitsen door een komma?

Vb output:

html, php voor de naam array
50%, 40% voor de niveau array

Het eerste item (html 50%) blijft dan samen en het 2de item (php 40%) blijft dan ook samen.
Of kan dat ook anders?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

26/05/2014 01:36:04
Quote Anchor link
Je moet dan met een for lus werken: (je formfields moeten netjes op dezelfde volgorde staan)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$naam
= $_POST['naam'];
$niveau = $_POST['niveau'];

for($i = 0 ; $i < count($naam) ; $i++)
{

    echo $naam[$i] . ':' . $niveau[$i] . '<br>';
}

?>


Toevoeging op 26/05/2014 01:36:44:

Ook zou je de arrays kunnen samenvoegen als je dat zou willen
 
Brecht S

Brecht S

26/05/2014 10:46:18
Quote Anchor link
Het resultaat (output) is nu:

test2:80%
test:50%

Als we even dit als voorbeeld nemen zou ik eerder iets willen in de stijl van test2, test als output voor de naam en 80%, 50% als output voor het niveau. Zo ga ik dat dan ook opslaan in de db. Ik heb in de db veld naam en veld niveau. Later zou ik dan de gegevens uit de db willen halen en terug samenvoegen. De eerste waarde uit het veld naam komt dan overeen met de eerste waarde uit het veld niveau. Alleen zie ik dat samenvoegen achteraf natuurlijk niet. Ik weet dus ook niet of het kan. Misschien zijn er ook nog andere manieren om dit op te lossen?
Gewijzigd op 27/05/2014 12:08:10 door Brecht S
 
Brecht S

Brecht S

07/06/2014 16:38:10
Quote Anchor link
Kan iemand mij hier mee helpen?
 
Brecht S

Brecht S

11/06/2014 14:22:07
Quote Anchor link
Is er nog iemand die mij hiermee verder kan helpen?
 
- SanThe -

- SanThe -

11/06/2014 16:58:36
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
foreach($_POST['naam'] as $key => $value)
{

    echo $value.' hoort bij '.$_POST['niveau'][$key];
}

?>
 



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.