rijen die in rijen zit opslaan
Ik had een formuliertje gemaakt die elk rijen automatisch wordt aangemaakt na de keuze. Bv ik wil 10 rijen en krijg ook 10 rijen. Die 10 rijen wordt gezien als rows[$i] in input type box. Als ik iets aanpas in die rij, wordt ook alle rijen goed opgeslagen.
Maar ik wil in 1 van die rijen ook nog eens rijen. Bv rij 2 en 5 komen er ook eens 10 rijen bij. Ik gebruik $subrows[$i] in <input type="text">. Ik heb een foreach gemaakt voor die rijen in die rijen. Maar van elk laatste rij in die rijen wordt wel opgeslagen, maar de andere 9 van elk rij niet.
Weet iemand hoe ik dat kan oplossen?
heb je misschien een stukje code? dat brengt denk ik een hoop duidelijkheid in dit verhaal (wat wel te snappen is, maar toch)
Die 1e foreach is een rij en 2e foreach een rij in rij. Dit geldt ook voor de 2e tekst.
En ik wil van niemand verder horen over normaliseren. Ik gebruik al diverse tabellen en de hele script werkt goed..alleen die rij in de rij niet. Op zich is het geen ramp, want ik kan die rij wel verwijderen en nieuwe rij erin toevoegen..maar wil toch liever alles kunnen opslaan als ik iets wijzig.
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
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
foreach ($rowinvuls as $rowinvul):
$string = $rowinvul->invultext;
$zoekwoord = 'include';
echo "<tr $bghier><td><b>Rij <input type='text' name='changerow[$i]' value='".$rowinvul->rows_id."' style='width:15px;'><input type='hidden' name='oldrow[$i]' value='".$rowinvul->rows_id."'><input type='hidden' name='siteid[$i]' value='".$row->id."'></b></td><td>";
if (eregi($zoekwoord, $string)) {
$string=$rowinvul->invultext;
$input = array("include ('","includes/","')");
$output = array('','','');
$laatzien=str_replace($input,$output,$string);
if ($laatzien=="text.php"){
$sql2="SELECT * FROM $invultexttab WHERE text_rows_id=$i AND text_site_id=".$row->id." AND text_sport_id=sport_id ORDER BY text_id ASC";
$database->setQuery($sql2);
$rowtexts = $database->loadObjectList();
echo '<table border="0" cellspacing="2" cellpadding="2" width="100%"><tr><td colspan="3">'.welkepagina($laatzien,$i).'</td></tr>';
echo '<tr style="background-color: #c0c0c0;"><td><b>Sport</b></td><td><b>Aantal</b></td><td><b>Optie</b></td><td><b>Actie</b></td></tr>';
foreach ($rowtexts as $rowtext):
// for ($j=0;$j<$aantalrijen1;$j++){
echo '<tr><td><select name="sportid['.$i.']"><option value="">Selecteer...</option><option value="1">Tennis</option></select></td><td><input type="text" name="aantallimit['.$i.']" value="'.$rowtext->aantallimit.'"><input type="hidden" name="textid['.$i.']" value="'.$rowtext->text_id.'"><input type="hidden" name="orginalrowid['.$i.']" value="'.$rowtext->text_rows_id.'"></td><td><input type="checkbox" name="textborder['.$i.']" value="1"';
if ($rowtext->text_border==1){
echo 'checked';
}
echo '> Border aan? | <input type="checkbox" name="texttitle['.$i.']" value="1"';
if ($rowtext->text_title==1){
echo 'checked';
}
echo '> Titel aan?</td><td><a href="index.php?cmd=del&textid='.$rowtext->text_id.'&siteid='.$row->id.'"><img src="images/remove-16x16.png" alt="Verwijder" title="Verwijder" border="0"></a></td></tr>';
// }
endforeach;
echo '</table>';
}
endforeach;
$string = $rowinvul->invultext;
$zoekwoord = 'include';
echo "<tr $bghier><td><b>Rij <input type='text' name='changerow[$i]' value='".$rowinvul->rows_id."' style='width:15px;'><input type='hidden' name='oldrow[$i]' value='".$rowinvul->rows_id."'><input type='hidden' name='siteid[$i]' value='".$row->id."'></b></td><td>";
if (eregi($zoekwoord, $string)) {
$string=$rowinvul->invultext;
$input = array("include ('","includes/","')");
$output = array('','','');
$laatzien=str_replace($input,$output,$string);
if ($laatzien=="text.php"){
$sql2="SELECT * FROM $invultexttab WHERE text_rows_id=$i AND text_site_id=".$row->id." AND text_sport_id=sport_id ORDER BY text_id ASC";
$database->setQuery($sql2);
$rowtexts = $database->loadObjectList();
echo '<table border="0" cellspacing="2" cellpadding="2" width="100%"><tr><td colspan="3">'.welkepagina($laatzien,$i).'</td></tr>';
echo '<tr style="background-color: #c0c0c0;"><td><b>Sport</b></td><td><b>Aantal</b></td><td><b>Optie</b></td><td><b>Actie</b></td></tr>';
foreach ($rowtexts as $rowtext):
// for ($j=0;$j<$aantalrijen1;$j++){
echo '<tr><td><select name="sportid['.$i.']"><option value="">Selecteer...</option><option value="1">Tennis</option></select></td><td><input type="text" name="aantallimit['.$i.']" value="'.$rowtext->aantallimit.'"><input type="hidden" name="textid['.$i.']" value="'.$rowtext->text_id.'"><input type="hidden" name="orginalrowid['.$i.']" value="'.$rowtext->text_rows_id.'"></td><td><input type="checkbox" name="textborder['.$i.']" value="1"';
if ($rowtext->text_border==1){
echo 'checked';
}
echo '> Border aan? | <input type="checkbox" name="texttitle['.$i.']" value="1"';
if ($rowtext->text_title==1){
echo 'checked';
}
echo '> Titel aan?</td><td><a href="index.php?cmd=del&textid='.$rowtext->text_id.'&siteid='.$row->id.'"><img src="images/remove-16x16.png" alt="Verwijder" title="Verwijder" border="0"></a></td></tr>';
// }
endforeach;
echo '</table>';
}
endforeach;
Met deze code wordt dan de pagina opgeslagen.
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
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
foreach ($_POST['changerow'] as $j => $cid) {
$siteid=$_POST['siteid'][$j];
$pagina=$_POST['laatzien'][$j];
$invultext=$_POST['invultext'][$j];
$oldrowid=$_POST['oldrow'][$j];
$sql="SELECT * FROM $invultab WHERE rows_id=$cid AND site_id=$siteid";
$result = mysql_query($sql);
// echo $sql."<br>";
while($query_data = mysql_fetch_array($result)) {
$vergelijkrows = $query_data["rows_id"];
$vergelijkpagina = $query_data["invultext"];
}
if ($vergelijkrows==$cid){
$sql1="UPDATE $invultab SET invultext='$invultext' WHERE rows_id='$cid' AND site_id='$siteid'";
$query = mysql_query($sql1);
}else{
echo 'insert';
}
foreach ($_POST['sportid'] as $m => $sportid){
// foreach ($_POST['sportid'][$m] as $n => $sportid){
$oldrowid=$_POST['orginalrowid'][$m];
$siteid=$_POST['siteid'][$m];
$aantallimit=$_POST['aantallimit'][$m];
$textborder=$_POST['textborder'][$m];
$texttitel=$_POST['texttitle'][$m];
$sql = "UPDATE $invultexttab SET aantallimit='$aantallimit', text_sport_id='$sportid', text_border='$textborder', text_title='$texttitel' WHERE text_rows_id='$oldrowid' AND text_site_id='$siteid'";
$query = mysql_query($sql);
}
}
$siteid=$_POST['siteid'][$j];
$pagina=$_POST['laatzien'][$j];
$invultext=$_POST['invultext'][$j];
$oldrowid=$_POST['oldrow'][$j];
$sql="SELECT * FROM $invultab WHERE rows_id=$cid AND site_id=$siteid";
$result = mysql_query($sql);
// echo $sql."<br>";
while($query_data = mysql_fetch_array($result)) {
$vergelijkrows = $query_data["rows_id"];
$vergelijkpagina = $query_data["invultext"];
}
if ($vergelijkrows==$cid){
$sql1="UPDATE $invultab SET invultext='$invultext' WHERE rows_id='$cid' AND site_id='$siteid'";
$query = mysql_query($sql1);
}else{
echo 'insert';
}
foreach ($_POST['sportid'] as $m => $sportid){
// foreach ($_POST['sportid'][$m] as $n => $sportid){
$oldrowid=$_POST['orginalrowid'][$m];
$siteid=$_POST['siteid'][$m];
$aantallimit=$_POST['aantallimit'][$m];
$textborder=$_POST['textborder'][$m];
$texttitel=$_POST['texttitle'][$m];
$sql = "UPDATE $invultexttab SET aantallimit='$aantallimit', text_sport_id='$sportid', text_border='$textborder', text_title='$texttitel' WHERE text_rows_id='$oldrowid' AND text_site_id='$siteid'";
$query = mysql_query($sql);
}
}
Gewijzigd op 01/01/1970 01:00:00 door Sander C
Het is nu 3 dagen verder en nog geen enkel reactie..:S
Quote:
En ik wil van niemand verder horen over normaliseren.
Goh, en dan vind je het vreemd dat er niemand reageert? De code is vrijwel onleesbaar, de queries zijn zo lek als een mandje (wel eens van SQL-injection gehoord?) en je geeft zelf al aan dat het datamodel niet al te best is.
Succes!
Iedereen heeft eigen manier van scripten. De ene maakt zo erg leesbaar en andere niet.
Ik kan lezen, ik weet waar het te vinden is.
Al werd mij duizenden keren gezegd over normaliseren..daar wordt ik niks wijzer van. Het gaat niet om normalizeren maar om een oplossing.
Ach..ik vraag wel aan iemand anders die wel begrip toont en een oplossing zoekt ipv roepen.
En wat sql injections betreft..daar maak ik me geen zorgen om. Het is in administratie en is geheel afgeschermd voor buitenwereld.
Gewijzigd op 01/01/1970 01:00:00 door Sander C