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.
Johan West op 04/06/2015 14:55:34


<?php
			echo "</from>";
?>


Lijkt me niet goed.
- 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.

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.


<?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.
Je mist de brackets [].

Maar ik mis nog steeds wat je database-technisch wilt.
- 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

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
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:
<!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):
<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.
<?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:
<!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.
@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.


<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.
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 :)).

Reageren