[PHP/MYSQL] UPDATE query form_html

Pagina: 1
Acties:

Onderwerpen


  • dynast
  • Registratie: December 2002
  • Laatst online: 02-08 23:05
In het formulier wat ik 'genereer' komen 3 textvakken van rek_nr en 3 econ_cat te staan. Als ik dus het formulier invul en vervolgens zend dan verstuurd hij alleen de data van de laatste tekstenvakken rek_nr en econ_cat naar elke record waar fact_id 46 is. Het moet zo zijn dat hij ook de eerste en tweede doorstuurd. Zit het probleem in de UPDATE query?

Huidige resultaat is:
Tabel producten:
id | fact_id | rek_nr | econ_cat
1 | 46 | 234 | 4
2 | 46 | 234 | 4
3 | 46 | 234 | 4
4 | 47
5 | 47

Moet zijn:
id | fact_id | rek_nr | econ_cat
1 | 46 | 232 | 2
2 | 46 | 233 | 3
3 | 46 | 234 | 4
4 | 47
5 | 47
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
$form_html .= "<tr bgcolor=\"" . $kleur . "\"><td><b>Rekeningnummer:</b></td><td>
<input type=\"text\" name=\"rek_nr[]\" size=\"25\"></td>
</tr><tr bgcolor=\"" . $kleur . "\"><br><br><td>
<b>Economische cat.:</b></td>
<td><input type=\"text\" name=\"econ_cat[]\" size=\"25\">
</td></tr><br>";       
           
$i = 3;


 while ($x < $i):
             
     echo "$form_html"; 
 $x++;
 endwhile;
endif;
        
 while ($z < $i):
mysql_query("UPDATE producten SET rek_nr='" . addslashes($rek_nr[$z]) . "', 
econ_cat='" . addslashes
($econ_cat[$z]) . "' WHERE fact_id=\"46\"") 
or die(mysql_error());

$z++;
 endwhile;
endif;

[ Voor 31% gewijzigd door dynast op 13-04-2004 13:14 ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Ik snap er geen ruk van wat je nu wil vragen... :? Kun je wellicht even aan de hand van P&W FAQ - De "quickstart" je topicstart aanpassen tot iets begrijpelijks, en dan meteen even wat enters in je code frotten zodat ie wel in de layout past ipv 3 schermen breed te zijn?

Professionele website nodig?


Verwijderd

Een beetje vaag verhaal maar volgens mij is dat wat je bedoeld.

De 'fout' zit in je update query. Het zit hem in de where clausule(WHERE fact_id=\"46\). Deze query update alle records waar fact_id=46 is.

Dus de query wordt wel 3 keer uitgevoerd, maar elke keer worden alle records aangepast waar fact_id=46 aangepast. Daarom zie je in elke record waar fact_id=46 het laatste rek_nr en econ_cat.

Dus je moet nog aangeven(mbv id) welk record je wilt aanpassen.

[ Voor 3% gewijzigd door Verwijderd op 13-04-2004 13:03 ]


  • dynast
  • Registratie: December 2002
  • Laatst online: 02-08 23:05
Sorry mensen, 't was inderdaad wat vaagjes, maar ben er nu wel uit. Tabel producten stond id op auto_increment en nu heb ik het zo opgelost. In iedergeval bedankt..
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
for($i=0;$i < $_POST['aantal_rek'];$i++) { 
        mysql_query("INSERT INTO producten (id,fact_id,) VALUES ('$i','" . $factid . "')") 
or die(mysql_error()); 
        
    } 

// query aan gepast

while ($z < 3):
mysql_query("UPDATE producten SET rek_nr='" . addslashes($rek_nr[$z]) . "', 
econ_cat='" . addslashes($econ_cat[$z]) . "' WHERE fact_id=\"47\" AND id='$z'" or die(mysql_error());
$z++;
endwhile;

[ Voor 35% gewijzigd door dynast op 13-04-2004 13:56 ]