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 06/06/2015 23:40:46

mbv implode gooit hij bij mij 5 variabelen in 1 tabel en niet als 5 verschillende tabellen.


Sorry dat ik er even tussen kom Johan maar ik denk dat we het eerst even over definities moeten hebben:

Het onderstaande plaatje laat één tabel zien.
In die tabel zie je kolommen. Een kolom loopt van boven naar beneden (verticaal)
Ook zie je rijen. een rij loopt van links naar rechts. Beiden bestaan uit verschillende vakjes.

In database termen praten we over een tabel, een kolom of een record/rij. een vakje is een field

[img=http://maxcdn.webappers.com/img/2007/10/tablecloth.png]
Frank Nietbelangrijk op 07/06/2015 11:14:57

[quote="Johan West op 06/06/2015 23:40:46"]
mbv implode gooit hij bij mij 5 variabelen in 1 tabel en niet als 5 verschillende tabellen.


Sorry dat ik er even tussen kom Johan maar ik denk dat we het eerst even over definities moeten hebben:

Het onderstaande plaatje laat één tabel zien.
In die tabel zie je kolommen. Een kolom loopt van boven naar beneden (verticaal)
Ook zie je rijen. een rij loopt van links naar rechts. Beiden bestaan uit verschillende vakjes.

In database termen praten we over een tabel, een kolom of een record/rij. een vakje is een field

[img=http://maxcdn.webappers.com/img/2007/10/tablecloth.png]
[/quote]

Ja OK ik zie het. De tabel bevat bij mij 2 rijen en 3 tot 10 kolommen.

De gebruiker kan echter via de browser meerdere tabellen aanmaken.
Wil je tabellen opslaan die gebruikers aanmaken?
Waarom niet dit als een JSON-array opslaan?
Want dat is is een tabel in feite. En dat kan dan in 1 tekst-veld, in 1 rij, 1 kolom, 1 tabel.


het probleem is dat ik $sql[$i] niet kan gebruiken in deze code:


 if ($conn->query($sql) === TRUE) // het lukt niet om zomaar de brackets te gebruiken


Het lijkt met niet logisch 5 x verbinding te maken, maar welke oplossingen biedt php om van een array meerdere tabellen te maken.


<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>invoeren tekst</title>
        <link rel="prefetch" href="http://">
        <link rel=" stylesheet" type="text/css" href="TekstInvoerCascade.css" media="screen" />
    </head>	
	<body>
 <form action="kies5cat6.php" method="post" accept-charset="UTF-8"><?php
for ($i=0; $i < 5; $i++) {
    ?><p>
        
		<label for="runame_<?php echo $i ?>">
		Naamveld<?php echo ($i + 1) ?>
		</label>
		
		
        <input type="text" name="runame[]" 
		id="runame_<?php echo $i ?>" 
		value="" />
    
	</p><?php
}
?><p>
    <button type="submit">Opslaan</button>
</p>
</form>
</body>
</html>

<?php
// hieronder het verbindings script met de database
	
$servername = "localhost";
$username = "****";
$password = "*****";
$dbname = "databasenaam";

// maak verbinding met localhost via mijn gebruikersnaam.

$conn = new mysqli($servername, $username, $password, $dbname);

// Controleer de verbinding

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

//

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
	
    if (isset($_POST['runame']) && is_array($_POST['runame'])) {
        echo '<pre>'.print_r($_POST['runame'], true).'</pre>';
		
		
		If (isset($_POST['runame']) && (is_array($_POST['runame'])) && ($runame = " ") && ($newvar = " ") ) {
			
			// 
			$runame = $_POST['runame'];
			$newvar = implode ("," , $runame);
			
			for ($i=0; $i < 5; $i++) {
			
			$sql[$i] = "CREATE TABLE  `$newvar2` (linkoms VARCHAR(80), linkadd VARCHAR (80) )" ;
										}
				}						   
	
	
		
	 if ($conn->query($sql) === TRUE) // het lukt niet om zomaar de brackets te gebruiken
	 
	 {
		 
    echo "Nieuwe tabellen zijn aangemaakt genaamd". $newvar ;

} else {
	
    echo "Fout: " . " <br>" . $conn->error;
}
	
 $conn->close();
		
		
    } else {
        echo "fout: tabel 'runame' niet aanwezig of is geen array";
    }

}
?>

Door foreach() te gebruiken. Maar toch blijft er nog steeds een vraag open staan.....
ik heb het script inmiddels gefixed.

Wat ik voor ogen heb Aar zijn wat proefjes. Het is meer om de werking van PHP en MYSQL te begrijpen.

Achter de variabelen gaat niet veel schuil, bijv. een image uploaden of een link of tekst en deze in de database verwerken.

Wat ik me afvraag is of programmeurs via een bepaalde structuur te werk gaan. Ik weet dat er UML is, maar dat is nog erg abstract.

Is er niet een soort procedure die tussen UML en de code in zit die je kunt doorlopen om bepaalde oplossingen te verkrijgen?
Je kunt PHP en MySQL in afzondering bestuderen. Ik denk niet dat het de snelheid waarmee je inzicht verkrijgt wordt verhoogd door te proberen beide tegelijkertijd aan te leren...

Persoonlijk zou ik met PHP beginnen, en misschien daarvoor nog met HTML/CSS/JavaScript. En daarna pas MySQL.

Johan West op 07/06/2015 15:35:13
Is er niet een soort procedure die tussen UML en de code in zit die je kunt doorlopen om bepaalde oplossingen te verkrijgen?

Mja, dat heet een functionele specificatie. Eerst bepaal je wat je gaat doen, en vervolgens hoe. Dat proberen we nou al een tijdje duidelijk te krijgen. Als je ons niet vertelt wat je wilt doen, kunnen wij je ook niet vertellen hoe.

Ik bespeur trouwens een zeker patroon in je topics. Vaak geef je ofwel aan dat een topic is opgelost zonder de oplossing te plaatsen en in andere gevallen reageer je helemaal niet meer, laat je de status van je vraagstuk onduidelijk of geef je na herhaaldelijk verzoek nog steeds geen nadere toelichting op wat je probeert te bereiken. Ik weet niet hoor, maar volgens mij is dat niet helemaal zoals een hulpforum zou moeten werken.

Er wordt vaak veel en enthousiast gereageerd maar er wordt niet zoveel mee gedaan. Misschien is het naïef van mij om te verwachten dat het toch (ook) een beetje geven (is) en (niet enkel) nemen is, maar als ik zie hoeveel tijd/reacties er in jouw topics gaan, en hoeveel er uit terugkomt dan komt mij het reageren op jouw threads over als complete tijdsverspilling.
@Thomas:

Ik doe wel degelijk iets met de posts hier. Ik wil ook best de oplossing laten zien van mijn vraagstuk. Je hulp is zeer welkom dus bij deze:


<?php
// script vervolg nadat verbinding is gelegd met db


if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
	
	
    if (isset($_POST['runame']) && is_array($_POST['runame'])) {
        echo '<pre>'.print_r($_POST['runame'], true).'</pre>';
		
		
		If (isset($_POST['runame']) && (is_array($_POST['runame'])) && ($runame = " ") && ($newvar2 = " ") ) {
			
			// implode en foreach toegepast
			// de accolades die bij foreach horen moeten op de juiste plek worden gezet
			
			
			$runame = $_POST['runame'];
			$newvar2 = implode (", " , $runame);
			foreach ($runame as $newvar2)
			
			{ $sql = "CREATE TABLE IF NOT EXISTS `$newvar2` (linkoms VARCHAR(80), linkadd VARCHAR (80) )" ;
				
		
		if ($conn->query($sql) === TRUE) 
			{ echo "De volgende tabellen zijn aangemaakt : ". $newvar2 ; } // haat ging om de input in de database niet om de browser output
		else { echo "Fout: " . " <br>" . $conn->error;} 
			}			$conn->close();  
		}
	else { echo "fout: 'runame' niet aanwezig of is geen array"; }
		
		}
}

// 

?>




[size=xsmall]Toevoeging op 08/06/2015 09:58:46:[/size]

@Thomas

Wat ik doe met php en mysql stelt nog niet heel veel voor. Ik heb bij het maken van scripts niet altijd een specifiek doel voor ogen, anders dan het begrijpen van de code. Ik heb geen groter plan, behalve wat code die ik wil kunnen toepassen.

Zodra je gaat programmeren en php code wilt oefenen kom je al snel met databases in aanraking. Ik vind databases erg verhelderend en ze brengen structuur aan in het programmeren. In excel kun je redelijk een goede template maken van een database, maar ik weet nog lang niet alles van mysql en databases.

Jij schrijft bijvoorbeeld het volgende:

Thomas van den Heuvel op 06/06/2015 14:12:26

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.


Ten eerste de kolomheading. Ik neem aan dat dit een aparte rij is. In excel moet je zelf een rij met omschrijvingen maken. Erg handig zou het zijn als een matrix raster standaard variabele kolomhoofden en rijhoofden zou hebben. Ik weet dit echter niet zeker; want het is niet zo dat je VERPLICHT bent om een kolomhoofd of rijhoofd te maken. Of wel?

Verder ben ik benieuwd wat er bedoeld wordt met structuuromschrijving? Is dit de naam die de kolom- of rijhoofden hebben?

Nu ik nog weinig kennis heb van databaes is het niet makkelijk in te schatten welke structuur een database met hebben. Vooral omdat ik niet altijd een doelgericht plan heb, maar juist wat code wil testen.
je geeft wel steeds aan dat je wat doet met de info etc, maar 1 belangrijk punt doe je niet:

je hebt in dit topic, en ook niet in een topic van een week of zo geleden, aangegeven WAAROM je meerdere tabellen aanmaakt.

Hierboven wordt het aangegeven en in een vorig topic heb ik het ook gezegd: de structuur van een database hoort te staan. Deze verandert niet meer zolang de applicatie niet verandert.

Dat is een dingetje dat volgens ons erg belangrijk is, maar dat door jou hardnekkig genegeerd wordt. Kennelijk zit je helemaal vast in de tunnelvisie dat dat de weg is, zodat je je daar niet meer vanaf laat leiden.

Als dat labeltje "runame" betekenis heeft (je kijkt trouwens niet of je wel een geldige naam binnen krijgt, of dat zo'n tabel al bestaat)
dan zou je ook 1 tabel kunnen maken, eenmalig dus, met 1 extra kkolom

dus naast linkoms en linkadd nog een kolom "runame"

Dan kun je volstaan met die ene tabel.

ipv "SELECT linksom, linkadd FROM myruname" wordt het dan

"SELECT linksom, linkadd FROM tabel WHERE runame = 'myruname'"

En dan heb je dus maar 1 tabel nodig en niet 500

[size=xsmall]Toevoeging op 08/06/2015 16:16:38:[/size]

Ik maak trouwens al flink wat jaar applicaties in PHP, maar afgezien van een enkel install-tooltje of een database-beheerstool, zorg ik altijd dat de user waarmee met de database geconnect wordt, nooit méér rechten heeft dan nodig.

En CREATE (tabel, of database) heeft die user dus noooit.

Het is dus een erg uitzonderlijke route als jij dat wél nodig zou hebben.
Ivo P op 08/06/2015 16:13:22

je geeft wel steeds aan dat je wat doet met de info etc, maar 1 belangrijk punt doe je niet:

je hebt in dit topic, en ook niet in een topic van een week of zo geleden, aangegeven WAAROM je meerdere tabellen aanmaakt.

Hierboven wordt het aangegeven en in een vorig topic heb ik het ook gezegd: de structuur van een database hoort te staan. Deze verandert niet meer zolang de applicatie niet verandert.

Dat is een dingetje dat volgens ons erg belangrijk is, maar dat door jou hardnekkig genegeerd wordt. Kennelijk zit je helemaal vast in de tunnelvisie dat dat de weg is, zodat je je daar niet meer vanaf laat leiden.

Als dat labeltje "runame" betekenis heeft (je kijkt trouwens niet of je wel een geldige naam binnen krijgt, of dat zo'n tabel al bestaat)
dan zou je ook 1 tabel kunnen maken, eenmalig dus, met 1 extra kkolom

dus naast linkoms en linkadd nog een kolom "runame"

Dan kun je volstaan met die ene tabel.

ipv "SELECT linksom, linkadd FROM myruname" wordt het dan

"SELECT linksom, linkadd FROM tabel WHERE runame = 'myruname'"

En dan heb je dus maar 1 tabel nodig en niet 500

[size=xsmall]Toevoeging op 08/06/2015 16:16:38:[/size]

Ik maak trouwens al flink wat jaar applicaties in PHP, maar afgezien van een enkel install-tooltje of een database-beheerstool, zorg ik altijd dat de user waarmee met de database geconnect wordt, nooit méér rechten heeft dan nodig.

En CREATE (tabel, of database) heeft die user dus noooit.

Het is dus een erg uitzonderlijke route als jij dat wél nodig zou hebben.


Daar had ik nog niet eerder over nagedacht. Mijn idee is dat een user kan inloggen op een database. 20 users hebben dan 20 x een eigen database.

Ik ben nog niet aan authenticatie toegekomen, misschien ga ik me er later in verdiepen, maar zitten er gevaren aan het geven van schrijf rechten aan een user?

1 van de gevaren van php is dat het nog onstabiel zou zijn als je te weinig alert bent op mysql injecties, maar uiteindelijk moet een mysql dbase toch op een normale wijze mbv php te beveiligen zijn?

Reageren