Gegevens uit database lezen, prijs toevoegen en weer in database plaatsen
Ik heb een script gemaakt die gegevens uit een database lees en sorteerd door verschillende selectie's te maken in een dropdownlist. Naar de laatste dropdownlist gebruikt te hebben krijg je een overzicht van. Het overzicht ziet er als volgt uit.
id, merk, modelserie_group, modelserie, model, uitvoering, nieuwprijs
De nieuwprijs is altijd leeg, de rest zit al in de database nu wil ik dat ik de nieuwprijs kan invullen. En vervolgens op opslaan kan clicken en dat hij dan in de database nieuwe records aanmaakt. De tabel voor de prijzen ziet er als volgt uit.
id, autos_id, nieuwprijs, datum.
Als er een record wordt toegevoegd, maar hij automatisch natuurlijk de id aan de autos_id moet hij overnemen van het overzicht namelijk de id en de nieuwprijs uiteraard ook en datum gaat ook vanzelf met date.
Dit is de code voor het uitlezen en weergeven van het overzicht:
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
33
34
35
36
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
33
34
35
36
<?PHP
if(!IsSet($_POST['submit']))
{
include("../../includes/config.inc.php");
// - configuratie bestand
$sql_price = "SELECT autos.id, merk, modelserie_group, modelserie, model, uitvoering, nieuwprijs FROM autos, merken, modelserie WHERE autos.merk_id=merken.id AND autos.modelserie_group_id=modelserie.id AND merken.id='".$_GET['merk']."' AND modelserie.id='".$_GET['modelserie_group']."' AND modelserie='".$_GET['modelserie']."' AND model='".$_GET['model']."' ORDER BY model ASC";
$res_price = MySQL_Query($sql_price) or report_mysql("Merken ophalen", __FILE__, __LINE__, $sql_price);
$count_rows = mysql_num_rows($res_price);
while($rec_price = MySQL_Fetch_Assoc($res_price))
{
?>
<table width="950" border="0" cellpadding="0" cellspacing="0" class="BlackArial12">
<tr>
<td width="50"><?PHP echo $rec_price['id']; ?></td>
<td width="126"><?PHP echo $rec_price['merk']; ?></td>
<td width="120"><?PHP echo $rec_price['modelserie_group']; ?></td>
<td width="120"><?PHP echo $rec_price['modelserie']; ?></td>
<td width="70"><?PHP echo $rec_price['model']." deurs"; ?></td>
<td width="339"><?PHP echo $rec_price['uitvoering']; ?></td>
<td width="125"><input type="nieuwprijs" name="nieuwprijs" style="width:120px;" value="<?PHP echo $rec_price['nieuwprijs']; ?>"/></td>
</tr>
</table>
<?PHP
}
?>
<table width="950" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="120"> </td>
<td width="630"><input type="submit" name="submit" value="Toevoegen" style="width:150px; margin-left:10px;" id="submit" /></td>
</tr>
</table>
<?PHP
} else
{
?>
if(!IsSet($_POST['submit']))
{
include("../../includes/config.inc.php");
// - configuratie bestand
$sql_price = "SELECT autos.id, merk, modelserie_group, modelserie, model, uitvoering, nieuwprijs FROM autos, merken, modelserie WHERE autos.merk_id=merken.id AND autos.modelserie_group_id=modelserie.id AND merken.id='".$_GET['merk']."' AND modelserie.id='".$_GET['modelserie_group']."' AND modelserie='".$_GET['modelserie']."' AND model='".$_GET['model']."' ORDER BY model ASC";
$res_price = MySQL_Query($sql_price) or report_mysql("Merken ophalen", __FILE__, __LINE__, $sql_price);
$count_rows = mysql_num_rows($res_price);
while($rec_price = MySQL_Fetch_Assoc($res_price))
{
?>
<table width="950" border="0" cellpadding="0" cellspacing="0" class="BlackArial12">
<tr>
<td width="50"><?PHP echo $rec_price['id']; ?></td>
<td width="126"><?PHP echo $rec_price['merk']; ?></td>
<td width="120"><?PHP echo $rec_price['modelserie_group']; ?></td>
<td width="120"><?PHP echo $rec_price['modelserie']; ?></td>
<td width="70"><?PHP echo $rec_price['model']." deurs"; ?></td>
<td width="339"><?PHP echo $rec_price['uitvoering']; ?></td>
<td width="125"><input type="nieuwprijs" name="nieuwprijs" style="width:120px;" value="<?PHP echo $rec_price['nieuwprijs']; ?>"/></td>
</tr>
</table>
<?PHP
}
?>
<table width="950" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="120"> </td>
<td width="630"><input type="submit" name="submit" value="Toevoegen" style="width:150px; margin-left:10px;" id="submit" /></td>
</tr>
</table>
<?PHP
} else
{
?>
Na deze code moet dus het stukje komen waarin hij de gegevens schrijft naar de database. Maar ik kom er nog niet uit hoe ik zoveel gegevens in één keer kan wegschrijven. Want het kunnen soms wel 100 verschillende prijzen zijn die moeten worden ingevuld.
Gewijzigd op 02/12/2010 16:22:35 door Web razor
Ik weet niet of je helemaal begrijpt wat ik bedoel, hieronder een voorbeeld:
Uitgelezen uit de database de volgende gegevens:
id, merk, modelserie_group, modelserie, model, uitvoering, nieuwprijs
456, Audi, A3, A3, 3 deurs, 1.2 TFSI Ambiente, 0
457, Audi, A3, A3, 3 deurs, 1.4 TFSI Ambiente, 0
458, Audi, A3, A3, 3 deurs, 1.8 TFSI Ambiente, 0
459, Audi, A3, A3, 3 deurs, 2.0 TFSI Ambiente, 0
Bij deze selectie zijn 4 resultaten nu kan ik in een tekstveld de prijs 0 wijzigen naar de orginele nieuwprijs. Als ik dat gedaan heb wil ik doormiddel van een knop de gegevens opslaan, maar dit dient hij per regel te doen dus er moet een record toegevoegd worden per regel, hoe kan ik dit in één keer doen?
Toevoeging op 02/12/2010 14:29:47:
Na een beetje rondkijken op het forum, heb ik hier een post gevonden waar ze eigenlijk een beetje hetzelfde probleem hebben. Alleen hier weten ze hoeveel velden ze hebben, en dan weet ik niet het kan tussen de 1 en de 175 zijn. Dus ik kan dat niet vooraf programmeren ik kan wel de tekstvelden een apart naam geven door bijvoorbeeld het id nummer van de auto eraan te hangen. Maar hoe kan ik al deze velden dan in één keer als verschillende records toevoegen. Hieronder een link van de andere post.
http://www.phphulp.nl/php/forum/topic/meerdere-rijen-tegelijk-in-database-invoegen/4159/
Gewijzigd op 02/12/2010 13:34:31 door Web razor
- Query goed uitgevoerd?
- Zijn er items gevonden?
- mysql_real_escape_string, nergens te bekennen
- Waarom al die hoofdletters?
Verder vind ik dit:
onzin, geef gewoon 1 echo aan de hele tabel mee, veel makkelijker, maar das persoonlijke mening.
Kijken of er gesubmit is doe je zo:
En even over het forum hier... code tags zijn niet zo:
<code></code>
maar zo:
[.code]hier je code[./code] <- maar dan zonder de puntjes.
Heb mijn eerste post aangepast naar de juiste [.code] bedankt hiervoor.
Maar ik snap niet helemaal wat je bedoelt, naast de persoonlijke dingen en schoonheidsfoutjes. De query zoals je die hierboven ziet werkt goed en haalt de juiste gegevens uit de database en deze worden juist weergegeven. De vraag is hoe ik al deze rijen opnieuw kan toevoegen aan een database in één keer in allemaal aparte records.
Volgens mij moet je eens kijken naar array
Toevoeging op 03/12/2010 11:16:38:
Ik ben vanmorgen beginnen om het met array te proberen, ben al een heel eind. Hieronder de code die ik gebruik
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<input type="hidden" name="id[]" id="id" value="<?PHP echo $rec_price['id']; ?>" />
<input name="nieuwprijs[]" id="nieuwprijs" style="width:120px;" value="<?PHP echo $rec_price['nieuwprijs']; ?>"/>
<?PHP
if (isset ($_POST['id']) || isset ($_POST['nieuwprijs'])) {
foreach ($_POST['id'] as $autos_id) {
//$nieuwprijs = $_POST['nieuwprijs'];
$date = date('Y-m-d');
include_once("../../includes/config.inc.php");
// - configuratie bestand
$sql_nieuwprijs = "
INSERT INTO nieuwprijzen (id, autos_id, nieuwprijs, datum) VALUES ('', '".$autos_id."', '".$nieuwprijs."', '".$date."' )";
mysql_query ($sql_nieuwprijs) or report_mysql("Prijzen toevoegen", __FILE__, __LINE__, $sql_nieuwprijs);
// okee
}
}
?>
<input name="nieuwprijs[]" id="nieuwprijs" style="width:120px;" value="<?PHP echo $rec_price['nieuwprijs']; ?>"/>
<?PHP
if (isset ($_POST['id']) || isset ($_POST['nieuwprijs'])) {
foreach ($_POST['id'] as $autos_id) {
//$nieuwprijs = $_POST['nieuwprijs'];
$date = date('Y-m-d');
include_once("../../includes/config.inc.php");
// - configuratie bestand
$sql_nieuwprijs = "
INSERT INTO nieuwprijzen (id, autos_id, nieuwprijs, datum) VALUES ('', '".$autos_id."', '".$nieuwprijs."', '".$date."' )";
mysql_query ($sql_nieuwprijs) or report_mysql("Prijzen toevoegen", __FILE__, __LINE__, $sql_nieuwprijs);
// okee
}
}
?>
De bovenste velden worden gevult door de database, en vervolgens vul ik een nieuwprijs in en wil ik heb opslaan. Ik krijg alleen de nieuwprijs er nog niet in hoe moet ik die verwerken in dit script?
Toevoeging op 03/12/2010 14:02:39:
Heb inmiddels de oplossing gevonden met de volgende code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?PHP
$autos_id = $_POST['id'];
$nieuwprijs = $_POST['nieuwprijs'];
$n = count ($autos_id);
for ($i = 0; $i < $n; $i++)
{
include_once("../../includes/config.inc.php");
// - configuratie bestand
$sql_nieuwprijs = " INSERT INTO nieuwprijzen (id, autos_id, nieuwprijs, datum) VALUES ('', '".mysql_real_escape_string($autos_id[$i])."', '".mysql_real_escape_string($nieuwprijs[$i])."', NOW() )";
mysql_query ($sql_nieuwprijs) or report_mysql("Prijzen toevoegen", __FILE__, __LINE__, $sql_nieuwprijs);
}
?>
$autos_id = $_POST['id'];
$nieuwprijs = $_POST['nieuwprijs'];
$n = count ($autos_id);
for ($i = 0; $i < $n; $i++)
{
include_once("../../includes/config.inc.php");
// - configuratie bestand
$sql_nieuwprijs = " INSERT INTO nieuwprijzen (id, autos_id, nieuwprijs, datum) VALUES ('', '".mysql_real_escape_string($autos_id[$i])."', '".mysql_real_escape_string($nieuwprijs[$i])."', NOW() )";
mysql_query ($sql_nieuwprijs) or report_mysql("Prijzen toevoegen", __FILE__, __LINE__, $sql_nieuwprijs);
}
?>
Gewijzigd op 03/12/2010 11:17:20 door Web razor