<?php
foreach ($name_A as $key => $dummy) {
echo $name_A[$key] . ' x '. $name_B[$key];
}
?>
Link gekopieerd
Ivo P op 09/06/2015 14:57:23
<?php
foreach ($name_A as $key => $dummy) {
echo $name_A[$key] . ' x '. $name_B[$key];
}
?>
hoe moet ik dit zien? Ik probeer te begrijpen hoe foreach deze array verwerkt.
is het als volgt:
als $name_A het sleutelnummer 0 is dan wordt $dummy uitgelezen
Is dat de juiste interpretatie?
Link gekopieerd
nee,
$a[0] = 10;
$a[1] = 20;
$a[4] = 'aa';
foreach($a as $key => $value)
De eerste ronde zal $key de waarde 0 hebben en $value 10
daarna wordt $key 1 en $value 20.
bij de derde ronde heb ik $key = 4 en $value = 'aa'
merk op dat in dit geval de waarde 3 voor $key niet optreedt.
---
in jouw geval zal $key gewoon oplopen van 0 tot iets.
De waarde doe ik niets mee, vandaar dat ik $dummy gebruikt heb.
Je kunt ook doen:
<?php
foreach ($name_A as $key => $value) {
echo $value . ' x '. $name_B[$key];
}
?>
maar dan is minder duidelijk dat $key te gebruiken is om een element in beide array's aan te wijzen
Link gekopieerd
$newvar2 = implode (", " , $name_A);
$newvar3 = implode (", " , $name_B);
foreach ($name_A as $newvar2) {
Vermoed dat het probleem zit in het feit dat je in je foreach $newvar2 overschrijft
Link gekopieerd
J
Johan West
10-06-2015 14:49
gewijzigd op 10-06-2015 14:51
Jacco Engel op 10/06/2015 11:28:10
$newvar2 = implode (", " , $name_A);
$newvar3 = implode (", " , $name_B);
foreach ($name_A as $newvar2) {
Vermoed dat het probleem zit in het feit dat je in je foreach $newvar2 overschrijft
De console output ziet er als volgt uit op dit moment:
mysql>
mysql>
mysql>
mysql>
mysql> SELECT * FROM wine;
+------------+----------------------------------------------------------------------------------+
| linkoms | linkadd |
+------------+----------------------------------------------------------------------------------+
| wine | www.wine.com , www.whitewine.com , www.redwine.com , www.bluewine.com , www.beerwine |
| white wine | www.wine.com , www.whitewine.com , www.redwine.com , www.bluewine.com , www.beerwine |
| red wine | www.wine.com , www.whitewine.com , www.redwine.com , www.bluewine.com , www.beerwine |
| blue wine | www.wine.com , www.whitewine.com , www.redwine.com , www.bluewine.com , www.beerwine |
| beerwine | www.wine.com , www.whitewine.com , www.redwine.com , www.bluewine.com , www.beerwine |
+------------+----------------------------------------------------------------------------------+
5 rows in set (0.00 sec)
mysql>
mysql>
Ik wil dat de kolom linkadd het bijbehorende adres heeft.
Kan je foreach en implode tegelijk gebruiken? Als je zegt dat het op deze wijze wordt overschreven dan zoek ik een methode om de losse variabelen afzonderlijk in te lezen.
Als ik foreach niet zou gebruiken hoe moet ik dan de string aflopen?
Link gekopieerd
Johan West op 09/06/2015 14:26:24
Ik wil het vorige oefen script waarbij er 5 tabellen werden aangemaakt uitbreiden een aanpassen.
Ik wil nu 2 x 5 is 10 variabelen invoeren in de database.
Deze zitten in 2 rijen/reeksen en ze moeten tegelijk in de database.
Dit moet het utieindelijke resultaat worden
---------(tabel R1) ------ (Tabel R2)
record1 ------A----------------F
record2 ------B----------------G
record3 ------C----------------H
record4 ------D----------------I
record5 ------E----------------J
Waar komt de info A t/m J vandaan? Formulier?
Je hebt her over vorige oefenscript met 5 tabellen. Ik zie er nu 2.
Wat is de reden om het over 2 tabellen te verdelen?
Is er een bepaalde relatie tussen A/F, B/G, etc? Hoe borg je dat dan tussen beide tabellen?
Johan West op 10/06/2015 14:49:21
De console output ziet er als volgt uit op dit moment:
mysql> SELECT * FROM wine;
In je openingspost heb je het over toevoegen. De query is een select (=opvragen). Wat is nu de bedoeling? Daarnaast heb je het in je openingspost over twee tabellen (R1 en R2) terwijl je maar 1 tabel hebt bij de select-query.
Link gekopieerd
J
Johan West
11-06-2015 14:26
gewijzigd op 11-06-2015 14:33
Ik zie dat ik een foutje maak in mijn uitleg.
tabellen moet hier kolommen zijn.
---------(kolom R1) ------ (kolom R2)----id
record1 ------A----------------F---------------1
record2 ------B----------------G---------------2
record3 ------C----------------H --------------3
record4 ------D----------------I---------------4
record5 ------E----------------J---------------5
Inmiddels heb ik er een autoincrement primary key kolom bij aangemaakt. Ik vermoed dat dit voordelen kan opleveren op termijn.
Het script is bedoeld om via de browser een input formulier in te vullen (toevoegen); dus daar komen de gegevens vandaan.
Via de console doe ik checks wat het resultaat is. Bijv met SELECT * FROM , de output is ter info van mezelf tijdens het programmeren.
Link gekopieerd
<?php
foreach ($name_A as $key => $dummy) {
echo $name_A[$key] . ' x '. $name_B[$key];
$sql = "INSERT INTO tabel
(koloma, kolomB)
values
('". mysqli_real_escape_string($conn, $$name_A[$key]) ."',
'". mysqli_real_escape_string($conn, $$name_B[$key]) ."')";
}
?>
Link gekopieerd
Wil je toevallig de rijen afdrukken als kolommen? De vraagstelling is mij compleet onduidelijk.
Als je nu eens concreet omschrijft wat je uiteindelijk wilt, op grond van wat je hebt?
Wil je uiteindelijk je data zo afdrukken?
| wine | white wine | etc.
+-------------------+-------------------+-----
| www.wine.com | www.wine.com | etc.
| www.whitewine.com | www.whitewine.com | etc.
| www.redwine.com | www.redwine.com | etc.
| www.bluewine.com | www.bluewine.com | etc.
| www.beerwine.com | www.beerwine.com | etc.
?
Link gekopieerd
J
Johan West
17-06-2015 10:49
gewijzigd op 17-06-2015 10:50
I wil het volgende als output.
linkoms ----------------linkadd ----------------------- link_id_nr--
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
wine ------------------www.wine.com -----------------------1----------
white wine ------------www.whitewine.com --------------2----------
red wine --------------www.redwine.com-------------------3----------
blue wine -------------www.bluewine.com----------------4----------
beer wine -------------www.beerwine.com----------------5----------
Omdat de eerste array wel goed wordt weggeschreven in de database en de tweede niet, moet de foreach loop worden uitgebreid want ik weet niet hoe beide arrays tegelijk naast elkaar moeten komen te staan.
Ik heb een primary key autoincrement kolom gemaakt, mogelijk weten mensen hier hoe mbv deze primary key en foreach de beide varaibelen $linkoms, $linkadd in de kolom kunnen worden weggeschreven?
Link gekopieerd