2x foreach in 1 table
Ik heb iets wat me niet wil lukken.
Betreft het volgende probleem.
Ik geef een aantal in en dat aantal input velden krijg ik dan.
2 per 2.
voorbeeld... test a
test b
enz.
Nu krijg ik deze in een array gestopt en de data krijg ik er ook goed uit.
Alleen nu wil ik het volgende bereiken.
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<table>
<tr>
<td>test</td>
<td>a</td>
</tr>
<tr>
<td>test</td>
<td>b</td>
</tr>
</table>
<tr>
<td>test</td>
<td>a</td>
</tr>
<tr>
<td>test</td>
<td>b</td>
</tr>
</table>
Nu heb ik hetgene wat als test staat aangegeven in een array row1.
En hetgeen als abc, in array row2.
Deze moet ik dus ophalen met foreach.
Maar het lukt me niet om deze zo netjes in een tabel te krijgen.
Ik hoop dat het een beetje duidelijk is uitgelegd en dat er iemand is, die me hiermee kan helpen.
Bij voorbaat dank.
.
Gewijzigd op 01/01/1970 01:00:00 door Stefan
Ben er zelf nog steeds niet achter
Code (php)
Dit is al voldoende.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
if(!isset($_POST['add'])) {
$echo = '<form action="" method="post">' . "\n";
$echo .= '<table width="100%" border="2">' . "\n";
$echo .= '<tr>' . "\n";
$echo .= '<td width="150px">' . "\n";
$echo .= '<input type="text" name="count" value="" onchange="submit()">' . "\n";
$echo .= '</td>' . "\n";
$echo .= '</tr>' . "\n";
$count1 = 0;
if(isset($_POST['count'])) {
$count2 = mysql_real_escape_string($_POST['count']);
while ($count1 < $count2) {
$echo .= '<tr>' . "\n";
$echo .= '<td>' . "\n";
$echo .= '<input type="text" name="row1[]" value="" />' . "\n";
$echo .= '</td>' . "\n";
$echo .= '<td>' . "\n";
$echo .= '<input type="text" name="row2[]" value="" />' . "\n";
$echo .= '</td>' . "\n";
$echo .= '</tr>' . "\n";
$count1++;
}
}
$echo .= '<tr>' . "\n";
$echo .= '<td width="150px">' . "\n";
$echo .= '<input type="submit" name="add" value="Toevoegen">' . "\n";
$echo .= '</td>' . "\n";
$echo .= '</tr>' . "\n";
$echo .= '</table>' . "\n";
$echo .= '</form>' . "\n";
echo $echo;
}
$echo = '<form action="" method="post">' . "\n";
$echo .= '<table width="100%" border="2">' . "\n";
$echo .= '<tr>' . "\n";
$echo .= '<td width="150px">' . "\n";
$echo .= '<input type="text" name="count" value="" onchange="submit()">' . "\n";
$echo .= '</td>' . "\n";
$echo .= '</tr>' . "\n";
$count1 = 0;
if(isset($_POST['count'])) {
$count2 = mysql_real_escape_string($_POST['count']);
while ($count1 < $count2) {
$echo .= '<tr>' . "\n";
$echo .= '<td>' . "\n";
$echo .= '<input type="text" name="row1[]" value="" />' . "\n";
$echo .= '</td>' . "\n";
$echo .= '<td>' . "\n";
$echo .= '<input type="text" name="row2[]" value="" />' . "\n";
$echo .= '</td>' . "\n";
$echo .= '</tr>' . "\n";
$count1++;
}
}
$echo .= '<tr>' . "\n";
$echo .= '<td width="150px">' . "\n";
$echo .= '<input type="submit" name="add" value="Toevoegen">' . "\n";
$echo .= '</td>' . "\n";
$echo .= '</tr>' . "\n";
$echo .= '</table>' . "\n";
$echo .= '</form>' . "\n";
echo $echo;
}
Dit werkt als volgend, ik vul in het tekstvak een aantal in, en dat aantal rijen krijg ik. Nu krijg ik dus meerdere data in row1 en in row2.
Nu is de bedoeling dat deze data in een tabel gegooit wordt.
Dus 2 kollommen. eerste kollom met data van row 1 en 2de kollom met data van row 2.
hopelijk is het een beetje verduidelijkt zo
iemand?
Simplistisch geschreven klopt er dan iets niet aan de manier waarop jij je array's samensteld.
Suggestie?
Ik moge dan wel helderziende zijn, maar de geest laat het afweten zodra het om jouw relevante code gaat.
misschien een andere oplossing om het zelfde resultaat te bereiken?
iemand?
$count2 = mysql_real_escape_string($_POST['count']);
while ($count1 < $count2)
ookal niet.
En ik zie geen relevante code...
het genereerd mijn row's
ik vul een aantal in en zolang count 1 kleiner is als het aantal dat ik ingeef. maakt die een row. dus vul ik 10 in krijg ik 10 row's van 2 cellen.
iedere 1 cel heet row1[]
iedere 2de cel heet row2[]
Ik krijg dus 2 data rijen die ik terug in een tabel wil duwen op de zelfde wijze als ze erin gaan. om het zo weg te schrijven in een bestand.
als het beter of anders kan... nogmaals graag een suggestie
mysql_real_escape_string escape't alleen de code,
Dat genereerd helemaal niet de $row array...
Is het probleem nou bij het gedeelte dat je niet weet wat je moet doen met de data die je terug krijgt?
Nee, php.net:
mysql_real_escape_string() calls MySQL's library function mysql_real_escape_string, which prepends backslashes to the following characters: \x00, \n, \r, \, ', " and \x1a.
Dat genereerd helemaal niet de $row array...
Is het probleem nou bij het gedeelte dat je niet weet wat je moet doen met de data die je terug krijgt?
Gewijzigd op 01/01/1970 01:00:00 door Stefan
Stefan schreef op 09.05.2009 11:00:
iemand een idee?
Nee, je moet duidelijk wezen en geen dubbele topics maken.
Die while genereerd me rows ik vul in een form count 2 in
En probleem is dat ik de row1[] en row2[] niet in een tabel krijg
Gewijzigd op 01/01/1970 01:00:00 door Stefan
Stefan schreef op 09.05.2009 11:03:
las je post wat laat, heb het al ge edit... excuses van de dubble topics
Die while genereerd me rows ik vul in een form count 2 in
En probleem is dat ik de row1[] en row2[] niet in een tabel krijg
Die while genereerd me rows ik vul in een form count 2 in
En probleem is dat ik de row1[] en row2[] niet in een tabel krijg
Oké, die while maakt een form aan met allemaal input's die row1 en row2 heten met [] zodat als je het ophaalt het een array wordt.
Dus wat is je probleem?
(Die mysql_real_escape_string is daar nergens voor nodig, ik denk dat type casten naar int al voldoende is: language.types.integer.php#language.types.integer.casting.)
het probleem is dat deze row's terug moeten komen in een tabel en dit lukt niet.
Oke, het formulier afhandelen is dus je probleem. Laat dan eens code zien hoe je dat doet, niet code die het formulier genereert.
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
echo = '<table width="100%" border="2">' . "\n";
foreach ($_POST['row1'] AS $row1 {
foreach ($_POST['row2'] AS $row2 {
$echo .= '<tr>' . "\n";
$echo .= '<td>' . $row1 . '</td><td>' . $row2 . '</td>' . "\n";
$echo .= '</tr>' . "\n";
}
}
$echo .= '</table>' . "\n";
echo $echo
foreach ($_POST['row1'] AS $row1 {
foreach ($_POST['row2'] AS $row2 {
$echo .= '<tr>' . "\n";
$echo .= '<td>' . $row1 . '</td><td>' . $row2 . '</td>' . "\n";
$echo .= '</tr>' . "\n";
}
}
$echo .= '</table>' . "\n";
echo $echo
Maar dit werkt niet
Gewijzigd op 01/01/1970 01:00:00 door Stefan
Aangezien je zeker weet dat ze beide het zelfde aantal hebben kan je het zo doen (gok ik, effe heel snel, hier inelkaar geflanst dus kan fout zijn):