2x foreach in 1 table

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Stefan

Stefan

01/05/2009 19:45:00
Quote Anchor link
Beste Php'ers,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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>


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
 
PHP hulp

PHP hulp

06/05/2024 08:43:37
 
Stefan

Stefan

03/05/2009 08:47:00
Quote Anchor link
Iemand een idee?

Ben er zelf nog steeds niet achter
 
Jesper Diovo

Jesper Diovo

03/05/2009 09:53:00
Quote Anchor link
Laat eens een relevant stukje van je code zien. Volgens mij zit je aan de verkeerde logica te denken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
echo '<table>';
foreach($array as $veld) {
  echo '<tr><td>'.$veld[0].'</td><td>'.$veld[1].'</td></tr>';
}

echo '</table>';
?>


Dit is al voldoende.
 
Stefan

Stefan

03/05/2009 18:48:00
Quote Anchor link
dat snap ik wel Jezpur maar ik heb 2 verschillende array's

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
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;
}


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
 
Stefan

Stefan

04/05/2009 17:21:00
Quote Anchor link
iemand?
 
Noppes

Noppes

04/05/2009 17:57:00
Quote Anchor link
Simplistisch geschreven klopt er dan iets niet aan de manier waarop jij je array's samensteld.
 
Stefan

Stefan

04/05/2009 18:04:00
Quote Anchor link
ik zou niet weten hoe ik dit anders moet doen.

Suggestie?
 
Noppes

Noppes

04/05/2009 18:29:00
Quote Anchor link
Ik moge dan wel helderziende zijn, maar de geest laat het afweten zodra het om jouw relevante code gaat.
 
Stefan

Stefan

04/05/2009 21:54:00
Quote Anchor link
misschien een andere oplossing om het zelfde resultaat te bereiken?
 
Stefan

Stefan

06/05/2009 18:59:00
Quote Anchor link
iemand?
 

06/05/2009 19:22:00
Quote Anchor link
Ik volg er geen snars van, volgens mij klopt:
$count2 = mysql_real_escape_string($_POST['count']);
while ($count1 < $count2)
ookal niet.
En ik zie geen relevante code...
 
Stefan

Stefan

07/05/2009 18:41:00
Quote Anchor link
waarom zou dit niet kloppen?

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
 

09/05/2009 10:45:00
Quote Anchor link
Nee, mysql_real_escape_string escape't alleen de code,
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?
 
Stefan

Stefan

09/05/2009 11:00:00
Quote Anchor link
ik krijg in 1 post dus die row1[] en die row2[]... maar ik krijg deze niet in een tabel
Gewijzigd op 01/01/1970 01:00:00 door Stefan
 

09/05/2009 11:02:00
Quote Anchor link
Stefan schreef op 09.05.2009 11:00:
iemand een idee?

Nee, je moet duidelijk wezen en geen dubbele topics maken.
 
Stefan

Stefan

09/05/2009 11:03:00
Quote Anchor link
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
Gewijzigd op 01/01/1970 01:00:00 door Stefan
 

09/05/2009 11:10:00
Quote Anchor link
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

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.)
Gewijzigd op 01/01/1970 01:00:00 door
 
Stefan

Stefan

09/05/2009 11:12:00
Quote Anchor link
het probleem is dat deze row's terug moeten komen in een tabel en dit lukt niet.
 

09/05/2009 11:13:00
Quote Anchor link
Oke, het formulier afhandelen is dus je probleem. Laat dan eens code zien hoe je dat doet, niet code die het formulier genereert.
 
Stefan

Stefan

09/05/2009 11:18:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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


Maar dit werkt niet
Gewijzigd op 01/01/1970 01:00:00 door Stefan
 

09/05/2009 11:27:00
Quote Anchor link
Nee logisch he, twee foreachen genest, dus dat betekend dat elke $_POST['row1'] over $_POST['row2'] wordt gelopen.
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):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
echo = '<table width="100%" border="2">' . PHP_EOL;
for($x = 0; $x < count($_POST['row1']); $x++)
{

echo '<tr>' . PHP_EOL . '<td>' . $_POST['row1'][$x] . '</td><td>' . $_POST['row2'][$x] . '</td>' . PHP_EOL . '</tr>';
}

echo '<table>' . PHP_EOL;
?>
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.