5 invoervelden tegelijk verwerken in MYSQL dbase?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 volgende »

Johan West

Johan West

04/06/2015 07:22:57
Quote Anchor link
Ik zoek een manier om 5 input velden tegelijk in MYSQL te zetten.

Is de beste manier een array te maken en deze vervolgens met een conditie in MYSQL te inserten?

Ter verduidelijking: het is de bedoeling dat via de browser meerdere tabellen kunnen worden aangemaakt.
Gewijzigd op 04/06/2015 07:41:57 door Johan West
 
PHP hulp

PHP hulp

28/03/2024 10:05:50
 
- Ariën  -
Beheerder

- Ariën -

04/06/2015 08:48:22
Quote Anchor link
Ik ben benieuwd naar wat je van plan bent. Want waarom wil je database-tabellen toevoegen? Tabellen moet je namelijk niet zien als 'hoofdstukken' om data in onder te verdelen.
 
Johan West

Johan West

04/06/2015 09:14:31
Quote Anchor link
- Aar - op 04/06/2015 08:48:22:
Ik ben benieuwd naar wat je van plan bent. Want waarom wil je database-tabellen toevoegen? Tabellen moet je namelijk niet zien als 'hoofdstukken' om data in onder te verdelen.


Op welke manier moet ik tabellen dan zien?



Toevoeging op 04/06/2015 09:17:51:


Op welke manier kan ik een superglobal &_POST['variabele'] in een loop toewijzen aan een indexvariabele?
 
Klim geit

klim geit

04/06/2015 09:45:28
Quote Anchor link
Bedoel je niet kolommen in plaats van tabellen?
Je kunt alle velden van het form afvangen met jQuery.serialize, je hebt dan een json object met de namen en waarden van de inputs.

Wanneer je gebruik maakt van een class zoals MeekroDB kun je de array op de volgende manier opslaan;
DB::insert('jouw table', array($array));

Wanneer de input namen afwijken van de table, zou het op de volgende manier kunnen;
DB::insert('jouw table', array('kolom 1' => $array['voornaam'], 'kolom 2', $array['achternaam']));
 
Johan West

Johan West

04/06/2015 11:27:43
Quote Anchor link
Klim geit op 04/06/2015 09:45:28:
Bedoel je niet kolommen in plaats van tabellen?
Je kunt alle velden van het form afvangen met jQuery.serialize, je hebt dan een json object met de namen en waarden van de inputs.

Wanneer je gebruik maakt van een class zoals MeekroDB kun je de array op de volgende manier opslaan;
DB::insert('jouw table', array($array));

Wanneer de input namen afwijken van de table, zou het op de volgende manier kunnen;
DB::insert('jouw table', array('kolom 1' => $array['voornaam'], 'kolom 2', $array['achternaam']));


Ik gebruik alleen php. Ik bedoel echt tabellen en dat houdt ik zo.
Gewijzigd op 04/06/2015 11:28:16 door Johan West
 
Jacco Engel

Jacco Engel

04/06/2015 11:38:30
 
- Ariën  -
Beheerder

- Ariën -

04/06/2015 12:13:33
Quote Anchor link
Tabellen zijn bedoeld voor verschillen tussen records. Je moet tabellen nooit gebruiken als aantallen.

Ik weet niet precies wat je doel is, en hoe je datastructuur nu is. Maar als voorbeeld kan je denken aan tabellen genaamd: auto's, personen, woningen. Of 'koppel'tabellen om woningen te koppelen met personen.

Verdiep je eens in 'databasenormalisatie' en er gaat een wereld voor je open, als je makkelijke en schaalbare databasestructuren wilt opzetten in een handomdraai.
 
Johan West

Johan West

04/06/2015 14:45:37
Quote Anchor link
@AAR ik ga me tzt zeker verdiepen in databasenormalisatie.

Voor nu ga ik er voorlopig vanuit dat ik de variabelen in een array kan gaan zetten.
 
- Ariën  -
Beheerder

- Ariën -

04/06/2015 14:49:47
Quote Anchor link
Wacht niet te lang om je door te lezen voor databasenormalisatie. Als je eenmaal de verkeerde weg in bent geslagen, kom je er lastig weer uit.
 
Johan West

Johan West

04/06/2015 14:55:34
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php

echo "<form method = 'POST' target = '_blank'>";
        for($x = 0; $x < 5; $x++)
        {

            echo "<input type = 'text' name = 'variabele' /></br>";
        }

        echo "<input type = 'submit' value = 'send' /> ";
            echo "</from>";
?>


in bovenstaande script is variabele 5 x nodig en wil ik dit in een array plaatsen, en daarna hiervan 5 tabellen maken in MYSQL. Moet ik name = 'variabele' gebruiken of name = 'variabele[]' ? En waarom?
 
- Ariën  -
Beheerder

- Ariën -

04/06/2015 15:55:41
Quote Anchor link
Misschien is het handig om even uit te leggen wat je exacte doel nou is?
Wat voor data wil je opslaan? En wat is de bedoeling?

Met het antwoord op deze vraag kunnen we een gepast advies geven over hoe je de database in kan richten, en hoe je de data het beste kan verwerken. Want ik durf te wedden dat je ergens een foute stap maakt, waarmee je je zelf later flink in de nesten mee zal kunnen werken.

Verder moet de waarde van name variabele[] zijn. Hoewel de naam niet echt logisch is. Na het versturen van je POST-formulier staat alles in een array.
Gewijzigd op 04/06/2015 15:57:30 door - Ariën -
 
Obelix Idefix

Obelix Idefix

04/06/2015 19:24:13
Quote Anchor link
Johan West op 04/06/2015 14:55:34:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
            echo "</from>";
?>

Lijkt me niet goed.
 
Thomas van den Heuvel

Thomas van den Heuvel

04/06/2015 19:37:50
Quote Anchor link
- Aar - op 04/06/2015 15:55:41:
Misschien is het handig om even uit te leggen wat je exacte doel nou is?
Wat voor data wil je opslaan? En wat is de bedoeling?

Met het antwoord op deze vraag kunnen we een gepast advies geven over hoe je de database in kan richten, en hoe je de data het beste kan verwerken. Want ik durf te wedden dat je ergens een foute stap maakt, waarmee je je zelf later flink in de nesten mee zal kunnen werken.

Pretty much this.

Als je functionaliteit nodig hebt om tabellen in bulk aan te maken denk ik (ook) dat er ergens iets scheef zit. Gezien de andere topics die je hier over hebt aangemaakt lijkt een bezinningsmoment wel enigszins op zijn plaats.

Wanneer je ons niet kunt of wilt uitleggen wat je doet of wat je probeert te bereiken kunnen we je ook niet voorzien van passend advies.
 
Johan West

Johan West

05/06/2015 07:50:42
Quote Anchor link
Ik ga me zeker bezinnen, maar zolang ik nog niet de php code volledig beheers wil ik stukjes script oefenen.

Ik zal nog een keer uitleggen waar ik vast loop met het huidige script.

Het volgende deelscript laat de input in de tabel buiten beschouwing.

Ik wil helder krijgen hoe ik vijf verschillende invoervelden met een aparte toegewezen lusvariabele in een array kan zetten.

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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php



echo "<form method = 'POST' target = '_blank'>";
        for($x = 0; $x < 5; $x++)
        {

            echo "<input type = 'text' name = 'runame' /></br>";
        }

        echo "<input type = 'submit' value = 'send' /> ";
            echo "</from>";


////

if (isset($_POST['runame']))  {

$runame = $_POST['runame'];

        for($x = 0; $x < 5; $x++){
        $test[$x] = array($runame => $x);
                                            }

                                    }


if (isset ($test)) {
            echo "<pre>";
            for($x = 0; $x < 5; $x++){
            print_r($test[$x]);
                    }

            echo "</pre>";
                    }


?>


Nu wordt alleen het laatste invoerveld in de array gezet terwijl ik ze alle vijf wil hebben.
 
- Ariën  -
Beheerder

- Ariën -

05/06/2015 08:58:27
Quote Anchor link
Je mist de brackets [].

Maar ik mis nog steeds wat je database-technisch wilt.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

05/06/2015 09:18:06
Quote Anchor link
@Johan: Kijk eens naar mijn voorbeeld in dit topic.
 
Johan West

Johan West

05/06/2015 09:36:46
Quote Anchor link
- Aar - op 05/06/2015 08:58:27:
Je mist de brackets [].

Maar ik mis nog steeds wat je database-technisch wilt.


De brackets kunnen niet in de array regel
 
Jacco Engel

Jacco Engel

05/06/2015 10:56:47
Quote Anchor link
Quote:
Ik ga me zeker bezinnen, maar zolang ik nog niet de php code volledig beheers wil ik stukjes script oefenen.


Johan,

Gewoon een tip van mijn kant , maar als je niet eerst leert hoe je een goede datebase in elkaar zet loop je het risico dat je verkeerd leert programmeren omdat je problemen moet oplossen die geen probleem hoeven te zijn (zoals dit topic eigenlijk al een beetje bewijst :) ). Je geeft aan dat je wilt leren programmeren, maar goed programmeren begint in mijn ogen bij een goede database.

Je kunt het een beetje zien als willen rennen voordat je kunt lopen.

Zoals al aangegeven is dat slechts mijn mening , maar er is een reden dat je bij een opleiding programeren eerst een database leert maken voordat je begint met code kloppen.

Doe met de mening/het advies wat je wil (of niet natuurlijk :P)

Jacco
 
Thomas van den Heuvel

Thomas van den Heuvel

05/06/2015 12:43:04
Quote Anchor link
Johan West op 05/06/2015 07:50:42:
Ik wil helder krijgen hoe ik vijf verschillende invoervelden met een aparte toegewezen lusvariabele in een array kan zetten.

Dit is een heldere vraag.

Laten we bij het begin beginnen.

Alles wat je in PHP doet waar webpagina's aan te pas komen maak je gebruik van HTML documenten, of liever gezegd, je kapselt de PHP in in een HTML document. Het is hierbij zeer belangrijk dat het HTML document zelf op een juiste manier is opgesteld. Deze moet kloppend/volledig zijn.

Een ander aspect (niet minder belangrijk, en ook onderdeel van het kloppend zijn van je document en bijbehorende data) is de character encoding die je gebruikt. Wat dit inhoudt heb ik elders al een keer uitgelegd. Laten we voor nu volstaan met de eis dat je character encoding altijd expliciet aangegeven dient te worden en (bij voorkeur) overal hetzelfde is. Als je niet beter weet of geen speciale voorkeur hebt is UTF-8 een veilige default.

Dit levert je dus het volgende (minimale) sjabloon van een kloppend/volledig HTML document:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML sjabloon</title>
</head>

<body>
</body>
</html>

De volgende stap is het bouwen van je formulier. Het maakt me niet uit hoe je de formuliervelden genereert, als je er maar voor zorgt dat de uiteindelijk geproduceerde HTML klopt. Enkele quotes om attribuut-waarden valt daar niet onder... Je kunt tevens aangeven dat je enkel UTF-8 data wenst te ontvangen via de accept-charset property, maar als je document al een UTF-8 character encoding heeft is dit niet per se nodig (tenzij iemand handmatig de encoding voor weergave verandert...).

Stel dat je 5 velden met naam "runame" wilt POSTen, je formulier wordt dan bijvoorbeeld als volgt (aangenomen dat je PHP-bestand index.php heet en naar zichzelf submit):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<form action="index.php" method="post" accept-charset="UTF-8"><?php
for ($i=0; $i < 5; $i++) {
    ?>
<p>
        <label for="runame_<?php echo $i ?>">veld <?php echo ($i + 1) ?></label>
        <input type="text" name="runame[]" id="runame_<?php echo $i ?>" value="" />
    </p><?php
}
?>
<p>
    <button type="submit">Save</button>
</p>
</form>

Met een minimale inspanning (p en label tags) maak je dit formulier ook meteen een stuk gebruiksvriendelijker.

Dan is daar de verwerking. Dit doe je weer in PHP. Gemakshalve dumpen we de output in hetzelfde script. Dit doen we door te controleren of de REQUEST_METHOD gelijk is aan POST. Vervolgens zou je nog kunnen controleren of $_POST['runame'] bestaat en een array is alvorens je deze afdrukt.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (isset($_POST['runame']) && is_array($_POST['runame'])) {
        echo '<pre>'.print_r($_POST['runame'], true).'</pre>';
    }
else {
        ?>
<p>fout: veld 'runame' niet aanwezig of is geen array</p><?php
    }
}

?>

Voegen we alles bij elkaar krijgen we het volgende:
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
19
20
21
22
23
24
25
26
27
28
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML sjabloon</title>
</head>

<body>
<form action="index.php" method="post" accept-charset="UTF-8"><?php
for ($i=0; $i < 5; $i++) {
    ?>
<p>
        <label for="runame_<?php echo $i ?>">veld <?php echo ($i + 1) ?></label>
        <input type="text" name="runame[]" id="runame_<?php echo $i ?>" value="" />
    </p><?php
}
?>
<p>
    <button type="submit">Save</button>
</p>
</form><?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (isset($_POST['runame']) && is_array($_POST['runame'])) {
        echo '<pre>'.print_r($_POST['runame'], true).'</pre>';
    }
else {
        ?>
<p>fout: veld 'runame' niet aanwezig of is geen array</p><?php
    }
}

?>
</body>
</html>

Deze code is trouwens nog niet super veilig voor publiek gebruik (maar voldoet prima ter illustratie), maar dat is een heel ander onderwerp.
 
Johan West

Johan West

05/06/2015 18:00:53
Quote Anchor link
@Thomas. Heel erg bedankt ik heb de code getest en het is wel de output die ik bedoel. Ik ga kijken of ik de manier kan toepassen op mijn script.

Het doel is te begrijpen wat het verschil is met mijn eigen script.

er zitten stukken html code tussen die ik nog niet eerder had gezien.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<label for="runame_<?php echo $i ?>">veld <?php echo ($i + 1) ?></label>
        <input type="text" name="runame[]" id="runame_<?php echo $i ?>" value="" />


dit is echt code die je ergens gelezen moet hebben.

Wat wordt er eigenlijk bedoeld met input id? id is toch om de sexe te bepalen, dus male of female?

Er zit nog meer in waar ik niet zomaar op kwam, zoals if is_array. Is dit een stukje code om de inhoud van een array te testen?

Ik can de code iig overnemen en toepassen. Erg waardevol weer deze keer.
Gewijzigd op 05/06/2015 18:02:59 door Johan West
 
Thomas van den Heuvel

Thomas van den Heuvel

05/06/2015 18:39:09
Quote Anchor link
Een id-attribuut in een HTML-element gebruik je om dat element uniek te identificeren, zodat je hier aan kunt refereren. De waarde van dit id-attribuut dient dus (ook) uniek te zijn, anders is het niet duidelijk welk element je precies bedoelt als je hier naar verwijst.

De PHP-functie is_array() is bedoeld om te bepalen of de variabele die je inspecteert van het type array is. (Of het dus een array betreft - is-array - get it :)).
 

Pagina: 1 2 3 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.