Toon posts:

[PHP] Velden vullen uit database?

Pagina: 1
Acties:
  • 75 views sinds 30-01-2008

Verwijderd

Topicstarter
Hallo,

Eventjes de situatie schetsen, ik maak een formuliertje aan .. daarin plaats ik een for-loopje zodat ie 48 keer hetzelfde onder elkaar zet, dit om 48 keer een benaming + parameters in te geven. Dit doe ik zo:

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
37
38
<form method="POST" action="uitgangen_toevoegen.php">
          <table width="750" border="0">
  <tr>
    <th width="10%" class="news"><strong>Uitgang</strong></th>
    <th width="10%" class="news"><strong>Benaming</strong></th>
    <th width="10%" class="news"><strong>Min Stroom [A] </strong></th>
    <th width="10%" class="news"><strong>Max Stroom [A] </strong></th>
    <th width="10%" class="news"><strong>Zekering [A] </strong></th>
    <th width="4%" class="news"><strong>PVG </strong></th>
  </tr>
  <?
    
  for ($i = 1; $i < 49; $i ++){
  echo'<tr>
      <th width="10%" class="news"><strong>'.($i).'</strong></th>
      <th width="10%" class="news"><input name="benaming'.($i).'" type="text" value=""></th>
    <th width="10%" class="news"><input name="minstroom'.($i).'" type="text" value="" size="10"></th>
    <th width="10%" class="news"><input name="maxstroom'.($i).'" type="text" value="" size="10"></th>
    <th width="10%" class="news"><input name="zekering'.($i).'" type="text" value="" size="10"></th>
    <th width="10%" class="news"><input name="pvg'.($i).'" type="text" value="" size="10"></th>
    </tr>
    '; }    
    
    ?>
      
        <tr>
    <td>&nbsp;</td>
        </tr>
    <tr>
    <th width="10%" class="news">&nbsp;</th>
    <th width="10%" class="news">&nbsp;</th>
    <th width="10%"><center><input type="submit" name="uitgangen_toevoegen" value="Toevoegen"></center></th>
    <th width="10%"><center>
    </center></th>
    </tr>
    
</table>
</form>


daarna wordt alles dus in de database gestoken.
Maar nu zou ik graag hebben dat als ik nog eens die pagina open, er geen lege rijen meer staan, maar 48 keer alles al ingevuld in de velden.

Hou moet ik dat best doen als m'n database structuur dit is ?

code:
1
2
3
4
5
6
7
8
CREATE TABLE `uitgangen` (
  `uitgang` varchar(20) NOT NULL default '',
  `naam` varchar(40) NOT NULL default '',
  `min_curr` varchar(20) NOT NULL default '',
  `max_curr` varchar(20) NOT NULL default '',
  `fuse` varchar(20) NOT NULL default '',
  `pvg` varchar(100) NOT NULL default ''
) TYPE=MyISAM;


ik krijg dit maar niet gelukt ? :(

alvast bedankt!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
Met een select query alles uit de database halen en in je textboxjes zetten?
dus: <input type="text" name="eennaam" value="<?=$eenvar?>">

Verwijderd

De value van die inputs setten??

M.b.v. een SELECT query kun je de gegevens eruit halen en in de forloop dan de resultset ook doorlopen.

  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Je kunt toch gewoon een SELECT query doen aan het begin van je pagina, en dan de teruggekregen waarden meegeven als value voor de formuliervelden?

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


Verwijderd

Topicstarter
het is me gelukt via deze weg:

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
<?
    $query_waarden = "SELECT uitgang, naam, min_curr, max_curr, fuse, pvg FROM uitgangen ORDER BY uitgang DESC LIMIT 48";
    $resultaat_waarden = mysql_query($query_waarden) or die ("query mislukt");
    
    while($obj = mysql_fetch_object($resultaat_waarden)){
    
        $uitgang[$obj->uitgang] = $obj->naam;
        $min_curr[$obj->uitgang] = $obj->min_curr;
        $max_curr[$obj->uitgang] = $obj->max_curr;
        $fuse[$obj->uitgang] = $obj->fuse;
        $pvg[$obj->uitgang] = $obj->pvg;
    }
    
  for ($i = 1; $i < 49; $i ++){
  echo'<tr>
      <th width="10%" class="news"><strong>'.($i).'</strong></th>
      <th width="10%" class="news"><input name="benaming'.($i).'" type="text" value="'.$uitgang[$i].'"></th>
    <th width="10%" class="news"><input name="minstroom'.($i).'" type="text" value="'.$min_curr[$i].'" size="10"></th>
    <th width="10%" class="news"><input name="maxstroom'.($i).'" type="text" value="'.$max_curr[$i].'" size="10"></th>
    <th width="10%" class="news"><input name="zekering'.($i).'" type="text" value="'.$fuse[$i].'" size="10"></th>
    <th width="10%" class="news"><input name="pvg'.($i).'" type="text" value="'.$pvg[$i].'" size="10"></th>
    </tr>
    '; }    
    
    ?>


bedankt voor de reacties ;)

Verwijderd

Gaat dit goed als hij bij een index komt die niet bestaat :?

Verwijderd

Topicstarter
precies niet :?

zal ik ff moeten bekijken

  • Reinder83
  • Registratie: September 2002
  • Laatst online: 08:57
beetje omslachtige manier

haal die for-lus weg en zet die echo in de while-lus

Verwijderd

Reinder83 schreef op donderdag 23 februari 2006 @ 16:46:
beetje omslachtige manier

haal die for-lus weg en zet die echo in de while-lus
...waarbij je er dus vanuit gaat dat elke iteratie ook in de database voorkomt? Misschien is er wel een rij zonder waarden, en daarom moet er iets gemaakt worden als:

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
// haal data op uit database
// en stop deze in een x-dimensionale array
$data = array();

// genereer formulier met
// een iteratie van 48 maal
for($row=0;$row<48;$row++) {
    
    // x
    
    // definieer een default waarde
    // voor je input-text field
    $defaultvalue = null;

    // contorleer of de waarde voorkomt
    // in je `data` array, if so vervang
    // de default value door die waarde

    // toon je input field

    // y

    // herhaal de stappen tussen comment x en y
    // zovaak als nodig met bijvoorbeeld een loop

}



...en dit kun je dan weer uitwerken naar iets als:


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
// init
$fields = array (
        'benaming'  => 'naam',
        'minstroom' => 'min_curr',
        'maxstroom' => 'max_curr',
        'zekering'  => 'fuse',
        'pvg'       => 'pvg'
        );

// haal data op en sla deze op in een array
$query =    "
        SELECT uitgang,naam,min_curr,max_curr,fuse,pvg
        FROM uitgangen
        ORDER BY uitgang ASC
        LIMIT 0,48
        ";
$result = mysql_query($query);
$data = array();
while($sqldata = mysql_fetch_assoc($result)) {
    $id = $sqldata['uitgang'];
    $data[$id] = array();
    foreach($fields AS $nlname => $sqlfieldname) {
        $data[$id][$nlname] => $sqldata[$sqlfieldname];
    }
}

// toon formulier
for($i=0;$i<49;$i++) {
    echo '<strong>'.$i.'</strong><br>';
    foreach($fields AS $nlname => $sqlfieldname) {
        $value = isset($data[$i][$nlname]) ? $data[$i][$nlname] : null;
        echo '<input type="text" name="'.($nlname.$i).'" value="'.$value.'"><br>';
    }
}


:Y)

Niet getest overigens

[ Voor 87% gewijzigd door Verwijderd op 23-02-2006 17:28 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-03 14:33

NMe

Quia Ego Sic Dico.

Kom op, dit is allemaal makkelijk zelf uit te vinden. Het maken van master-detail formulieren (waar dit gedeeltelijk onder valt) wordt op talloze sites beschreven. Daar had je best zelf wat tussen kunnen vinden.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.