met foreach dus waarbij je $key => $value gebruikt.
Wat lukt er niet?
Link gekopieerd
Je kunt van de links een associatieve array maken, met $linkoms als de sleutel en $linkadd als de bijbehorende waarde.
<?php
$links = array(
'wine' => 'www.wine.com',
'white wine' => 'www.whitewine.com',
'red wine' => 'www.redwine.com',
'blue wine' => 'www.bluewine.com',
'beer wine' => 'www.beerwine.com',
);
$sql = 'INSERT INTO tabelnaam (linkoms, linkadd) VALUES ';
foreach ($links as $linkoms => $linkadd) {
$values[] = "('{$linkoms}', '{$linkadd}')";
}
$sql .= implode(',', $values);
?>
Daarmee krijg je (uitgeschreven) deze query:
INSERT INTO
tabelnaam (linkoms, linkadd)
VALUES
('wine', 'www.wine.com'),
('white wine', 'www.whitewine.com'),
('red wine', 'www.redwine.com'),
('blue wine', 'www.bluewine.com'),
('beer wine', 'www.beerwine.com')
In de foreach moet je de waarden nog escapen met een functie of methode van de connectie (PDO, MySQLi of iets anders).
Link gekopieerd
Wat is $value dan?
Als ik de database kolom primary key heb gemaakt is dit dan uniek voor de tabel of voor de gehele database?
Link gekopieerd
Link gekopieerd
<!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="stijlblad1.css" media="screen" />
</head>
<body>
<form action="BestandsNaam.php" method="post" accept-charset="UTF-8"><?php
for ($i=0; $i < 5; $i++) {
?><p>
<label for="linkoms_<?php echo $i ?>">
Link Naam <?php echo ($i + 1) ?>
</label>
<br>
<input type="text" name="linkoms[]"
id="linkoms_<?php echo $i ?>"
value="" /> <br>
<label for="linkadd_<?php echo $i ?>">
Link Adres <?php echo ($i + 1) ?>
</label><br>
<input type="text" name="linkadd[]"
id="linkadd_<?php echo $i ?>"
value="" />
</p><?php
}
?><p>
<button type="submit">Opslaan</button>
</p>
</form>
</body>
</html>
<?php
$servername = "localhost";
$username = "jouwnaam";
$password = "jouwpasswoord";
$dbname = "jouwdatabase";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
If (isset($_POST['linkoms']) && (is_array($_POST['linkoms'])) && ($linkoms = " ") && ($newvar2 = " ") && isset($_POST['linkadd'])
&& (is_array($_POST['linkadd'])) && ($linkadd = " ") && ($newvar3 = " ") && ($two_arrays = " ") && ($var_com = " ") && ($linknummer = ' ' )) {
$linkoms = $_POST['linkoms'];
$linkadd = $_POST['linkadd'];
$newvar2 = implode (", " , $linkoms);
$newvar3 = implode (", " , $linkadd);
$sql = "SELECT linknummer FROM tabel_name";
$result = $conn->query($sql);
if ($result->num_rows > 0) { //
// output gegevens van iedere rij haalt de column linknummer uit de tabel
while($rij = $result->fetch_assoc()) {
echo "linknummer :" . $rij["linknummer"] . "<br>";
foreach ($linknummer as $key => $newvar2){
$sql2 = "INSERT INTO tabel_name (linkoms) VALUES ('$newvar2') "; //
if ($conn->query($sql2) === TRUE)
{ echo $newvar2 ;
} else {
echo "Fout: " . " <br>" . $conn->error;
}
echo "<br>" . " zijn toegevoegd aan de database";
}
$conn->close();
}
// hier kan de 2e INSERT query voor linkadd / $newvar3
}
$conn->close();
}
else { echo "fout: de omschrijving 'linkoms' niet aanwezig of is geen array"; }
}
?>
Bovenstaand script loopt nu weer vast. De array die ik met implode in afzonderlijke elementen heb verdeeld kan op de 1 of andere manier niet gelezen worden.
Link gekopieerd
ik mis geloof ik compleet waarom er nu data uit een tabel gevist wordt om invoer uit een form te inserten...
Link gekopieerd
Ivo P op 17/06/2015 16:07:22
ik mis geloof ik compleet waarom er nu data uit een tabel gevist wordt om invoer uit een form te inserten...
Het lukt me niet om de linkoms en linkadd in 2 database kolommen op gelijke rijen te krijgen, mogelijk als het wel lukt met een primary key dan kun je deze gebruiken. Vandaar deze uit de tabel vissen.
Niet doen?
Wat is dan een optie?
Link gekopieerd
Johan West op 17/06/2015 17:40:57
Het lukt me niet om de linkoms en linkadd in 2 database kolommen op gelijke rijen te krijgen,
Kan de insert niet in 1 query?
Link gekopieerd
Ivo P
17-06-2015 18:01
gewijzigd op 17-06-2015 18:02
wat ik al eerder aangaf:
<?php
// zelf controle op bestaan van $_POST['linkoms'] em $_POST['linkadd'] doen
foreach($_POST['linkoms'] as $key => $dummy) {
$sql = "INSERT INTO tabel_naam (linkoms, linkadd) VALUES (
'". $conn->real_escape_string($_POST['linkoms'][$key]) ."',
'". $conn->real_escape_string($_POST['linkadd'][$key]) ."'
)";
if ($conn->query($sql) === TRUE)
{ echo $sql .'<br>';
} else {
echo "Fout: " . " <br>" . $conn->error;
}
echo "<br>" . " zijn toegevoegd aan de database";
}
}
?>
NB:
niet in je foreach-lus de verbinding sluiten
NB: misschien is een prepared statement ook wel handig hier.
Link gekopieerd
Ik heb de code zojuist getest en het werkte. Ik heb nog regel 57 tot 61 verwijderd en de laatste accolade. :)
Toevoeging op 18/06/2015 09:17:46:
Ik zou graag nog wat uitleg ontvangen.
Er zitten instructies in die ik niet geheel begrijp.
$sql = "INSERT INTO tabel_naam (linkoms, linkadd) VALUES (
'". $conn->real_escape_string($_POST['linkoms'][$key]) ."',
hoe moet ik zoiets als -> zien? Betekent dat 'worden'?
Bij het wegschrijven van gegevens wordt regelmatig gebruik gemaakt van
$conn->query(sql) of $conn->close of $conn->connect_error
Maar php gebruikt soms ook bijv. $result->fetch_assoc.
Wat doet een programmeertaal op zo'n moment?
Link gekopieerd