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.


<!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>
</body>
</html>

<?php

// ... maak connectie database
//

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (isset($_POST['runame']) && is_array($_POST['runame'])) {
        echo '<pre>'.print_r($_POST['runame'], true).'</pre>';

// de volgende code is nieuw toegevoegd

If (isset($_POST['runame'])) {
		$runame = $_POST['runame'] ;	
		$sql = "CREATE TABLE  `$runame` (linkoms VARCHAR(80), linkadd VARCHAR (80) )" ; 
		}	



    } else {
        ?><p>fout: veld 'runame' niet aanwezig of is geen array</p><?php
    }
}
?>





Bovenstaande script kan ik gaan gebruiken om de variabelen toe te voegen in de database
Ik krijg helaas de foutmelding Array to string conversion en daarna het volgende:

Fout: CREATE TABLE `Array` (linkoms VARCHAR(80), linkadd VARCHAR (80) )
Table 'array' already exists

$_POST['runame'] is nog steeds een array.

Een array kun je beschouwen als een functie: je stopt er een waarde in en er komt een (mogelijk andere) waarde uit.

Wat jij in het bovenstaande fragment probeert te doen is in één keer van een hele lijst een tabel te maken terwijl je deze lijst zou moeten doorlopen en in elke stap van het doorlopen van de lijst een tabel aanmaken.

Ik weet niet of je deze opzet moet volgen, te meer omdat het er op lijkt dat deze tabellen enige structuur missen.

Je moet het zo zien, in beginsel heb je een database, vaak gebruik je in je hele applicatie slechts één database.

In een database zitten tabellen. Elke tabel heeft een specifiek doel, m.a.w., slaat specifieke informatie op. Je hebt bijvoorbeeld een "users" tabel, hierin staat informatie over gebruikers.

Elke tabel heeft een structuur, deze staat omschreven in zijn tabeldefinitie waarin de verschillende informatie-elementen staan omschreven.

In een tabel kun je meerdere "sets" gegevens opslaan, elke rij gegevens (ook wel "record" genaamd) in de tabel bevat één set. Vaak wordt een uniek nummer toegevoegd aan de structuur om de sets onderling te kunnen onderscheiden.

Vergelijk dit met een spreadsheet: als elke tab verschillende informatie bevat zijn je tabs je tabellen. Elke rij in je spreadsheet is een record. Elke kolomheading bevat een structuuromschrijving van die kolom.

Wat jij in het bovenstaande codefragment probeert te doen, is het aanmaken van een tabel die elke keer dezelfde structuur heeft. Dit is helemaal niet nodig, want je kunt meerdere regels (records) informatie opslaan in één enkele tabel.

Tenzij de tabelnaam op een of andere manier betekenis heeft? Maar zelfs dan is het beter om een andere opzet te gebruiken.

Maar om tot een goede opzet te komen, moeten we weten wat je precies probeert te bereiken. Anders kunnen we slechts raden naar de beste structuur die je moet gebruiken om je doel te bereiken.

En daar hebben we nu al ongeveer 20x om gevraagd... Wat probeer je uiteindelijk te doen?

(nogmaals) Zolang je deze vraag niet beantwoord kunnen we je niet helpen.
Thomas van den Heuvel op 06/06/2015 14:12:26

Een array kun je beschouwen als een functie


Nee geen functie. Een functie doet iets en een array() niet.
Een array() is gewoon een manier voor opslag van gegevens.
Eigenlijk gewoon een variabele met meerdere vakjes (of sets).
Als je weet dat het Engelse array in het Nederlands gewoon een matrix is, dan gaat er bij velen eerder een lampje branden. Dat is dus een datastructuur die veel wegheeft van een tabel (of een rij in een tabel) en waarmee je verschillende (matrix)operaties kunt uitvoeren.
- SanThe - op 06/06/2015 14:24:05
Nee geen functie. Een functie doet iets en een array() niet.
Een array() is gewoon een manier voor opslag van gegevens.
Eigenlijk gewoon een variabele met meerdere vakjes (of sets).

Ik bedoelde meer een wiskundige functie (f(x)). Het mapt een waarde x naar een andere waarde y. Een array doet niet veel anders?
Uitgaande van ƒ(x) = y lijkt het inderdaad erg veel op elkaar, maar bij een functie gaat het vooral om een transformatie en bij een array meer om een locatie of translatie voor het “mappen” van x naar y.
Thomas van den Heuvel op 06/06/2015 14:12:26

$_POST['runame'] is nog steeds een array.




Wat moet $runame dan zijn ipv een array?

Ik heb het idee dat het in aparte variabelen moet worden 'ontleed'. Als dit zo is, op welke manier doet php dit?

Met foreach().
mbv implode gooit hij bij mij 5 variabelen in 1 tabel en niet als 5 verschillende tabellen.
Implode zet een array om in een string.

Maar nog steeds blijf ik benieuwd wat voor vijf tabellen het zijn?

Reageren