Gegevens uit database lezen, prijs toevoegen en weer in database plaatsen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Web razor

Web razor

02/12/2010 12:30:26
Quote Anchor link
Hallo,

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)
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
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">&nbsp;</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
 
PHP hulp

PHP hulp

23/11/2024 15:00:47
 
- SanThe -

- SanThe -

02/12/2010 12:38:32
Quote Anchor link
Dat is basic sql. ZIe www.phptuts.nl voor tutorials

Verder is je script sql-injection gevoelig, oftewel lek.
 
Web razor

Web razor

02/12/2010 12:45:28
Quote Anchor link
Bedankt voor je snelle reactie, dat het sql-injection gevoelig is weet ik wel maar dit is niet openbaar dus kan je alleen maar bij als je ingelogt bent. Het is niet even simpel volgens mij data uit een form lezen en in database zetten. Ik zou hierbij graag een beetje hulp hebben.

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
 
Milo S

Milo S

02/12/2010 16:19:07
Quote Anchor link
Je mist nogal wat
- Query goed uitgevoerd?
- Zijn er items gevonden?
- mysql_real_escape_string, nergens te bekennen
- Waarom al die hoofdletters?

Verder vind ik dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?PHP echo $rec_price['nieuwprijs']; ?>

onzin, geef gewoon 1 echo aan de hele tabel mee, veel makkelijker, maar das persoonlijke mening.

Kijken of er gesubmit is doe je zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
?>



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.
 
Web razor

Web razor

02/12/2010 16:39:49
Quote Anchor link
Milo S bedankt voor je reactie,

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.
 
Obelix Idefix

Obelix Idefix

02/12/2010 18:44:00
Quote Anchor link
Volgens mij moet je eens kijken naar array
 
Web razor

Web razor

02/12/2010 20:50:59
Quote Anchor link
Jah daar dacht ik zelf ook aan om de gegevens in een array te zetten en vervolgens die uit de array te lezen en in database te schrijven.

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)
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
<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
                }
            }

?>


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

?>
Gewijzigd op 03/12/2010 11:17:20 door Web razor
 



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.