Avatar billede snigeren Nybegynder
05. oktober 2007 - 16:04 Der er 11 kommentarer og
1 løsning

hente fra db til 10 forskellige felter i form

Fortsat fra følgende spørgsmål: http://www.eksperten.dk/spm/799030

Jeg har en tabel: (eksempel på indhold)

itemID, varenr, enhed
35,      44444, 1400
36,      44444, 1500
37,      44444, 1700

når en vare bliver oprettet kan den have flere forskellige enheder, derfor har jeg lavet en tabel til enheder. I eksemplet har varenr 44444  tre forskellige enhedsstørrelser.

Mit problem er så som følger:
Når jeg skal "redigere" i en vare så har jeg 10 enhedsfelter:
enhed1
enhed2
enhed3
...
enhed10

når jeg så skal hente indholdet ind i de ti felter for at kunne rette i dem (med php) så kan jeg ikke lige se hvordan man kan gøre det.

Jeg tænkte på at lave en
while(){
echo '<tr><td>Enhed1 (mål):</td><td><input name="enhed1" type="text" size="60" value="' . $row6['enhed'] . '"></td></tr>';
}

Men på den måde hvis der kun er 3 entries i db´en kommer der kun 3 enhedsfelter. Da man måske gerne vil have flere enheder skrevet ind skal der jo stadig være 10 felter.

Desuden kommer alle felterne i mit tilfælde til at hedde "enhed1" og de skal jo gerne hedde enhed1, enhed2....


Jeg har selv 2 forslag:
1. Når jeg opretter en vare laver den 10 entries(hvilket jo fylder hvis man ser i db´en) i shop_enhed tabellen (lige nu laver den kun det antal der er udfyldt)
2. Eller også laver jeg 10 felter i db´en så der i stedet er:
itemID, varenr, enhed1, enhed2, enhed3,... enhed10


Jeg håbede på at en af jer eksperter havde en lidt klogere løsning end min =)
Avatar billede zynzz Praktikant
05. oktober 2007 - 20:21 #1
Jeg har lavet noget du måske kan bruge til det...:

<?
if(isset($_POST['aendre'])){
$x = 0;
$arr = explode("_", $_POST['array']);
while($x <= $_POST['total']) {
mysql_query("UPDATE shop_enhed SET enhed='"$_POST[$x]"' WHERE itemID='".$arr[$x]."'");
$x++;
}
?>
<form method="POST" action="">
    <table border="0" width="100%" cellspacing="0" cellpadding="0" >
<?
$sql = mysql_query("SELECT * FROM shop_enhed where vareNR ='".$vareNR."' ORDER BY ".$itemID." DESC");
$total = mysql_num_rows($sql);
$i = 0;
while($data = mysql_fetch_array($sql)) {   
echo "<tr>";
echo "<td><input type='text' name='"$i."' size='20' value='" . $data['enhed'] . "'></td>";
echo "</tr>";
$alle_items .= $data['itemID']."_";
$i++;
}
echo "<tr>";
echo "<td><input type='hidden' name='array' value='".$alle_items."' /></td>";
echo "</tr>";
echo "<tr>";
echo "<td><input type='hidden' name='total' value='".$total."' /></td>";
echo "</tr>";
?>
        <tr>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <td><input type="submit" value="Ændre" name="aendre"></td>
        </tr>
    </table>
</form>
Avatar billede snigeren Nybegynder
07. oktober 2007 - 15:09 #2
hey zynzz,.. jeg er ikke helt sikker på hvordan jeg lige skal bruge det?

det jeg har brug for er egentlig bare at jeg har 10 felter:

echo '<tr><td>Enhed1 (mål):</td><td><input name="enhed1" type="text" size="60"></td></tr>';
echo '<tr><td>Enhed2 (mål):</td><td><input name="enhed2" type="text" size="60"></td></tr>';
echo '<tr><td>Enhed3 (mål):</td><td><input name="enhed3" type="text" size="60"></td></tr>';
echo '<tr><td>Enhed4 (mål):</td><td><input name="enhed4" type="text" size="60"></td></tr>';
echo '<tr><td>Enhed5 (mål):</td><td><input name="enhed5" type="text" size="60"></td></tr>';
echo '<tr><td>Enhed6 (mål):</td><td><input name="enhed6" type="text" size="60"></td></tr>';
echo '<tr><td>Enhed7 (mål):</td><td><input name="enhed7" type="text" size="60"></td></tr>';
echo '<tr><td>Enhed8 (mål):</td><td><input name="enhed8" type="text" size="60"></td></tr>';
echo '<tr><td>Enhed9 (mål):</td><td><input name="enhed9" type="text" size="60"></td></tr>';
echo '<tr><td>Enhed10 (mål):</td><td><input name="enhed10" type="text" size="60"></td></tr>';


I tabellen shop_enhed er der så op til 10 entries med samme varenr med felt navnet "enhed". Indholdet skal så bare puttes i de 10 felter =)

Hvordan gør man det?
Avatar billede zhx Nybegynder
07. oktober 2007 - 15:58 #3
Er det ikke også det jeg har lavet ? :D
Avatar billede zynzz Praktikant
07. oktober 2007 - 16:00 #4
Ups, er hjemme ved en ven, og havde glemt jeg var logget ind på hans profil.. :D
Avatar billede snigeren Nybegynder
07. oktober 2007 - 16:15 #5
uhm jeg ved bare ikke helt hvor jeg skal gøre ad scriptene... du kan lige få hele scriptet her =)

if($action=="edit"){
echo '<form action="edit_product.php?varenr=' . $_GET["varenr"] . '&action=opdater" method="post" enctype="multipart/form-data" name="form1">';
echo '<table width="100%"  border="0" cellspacing="0" cellpadding="0">';
echo '<tr><td>Vare nr.:</td><td width="77%">' . $_GET["varenr"] . '</td></tr>';
echo '<tr><td>Beskrivelse:</td><td width="77%"><input name="beskrivelse" type="text" size="60" value="' . $row6['beskrivelse'] . '"></td></tr>';
echo '<tr><td>Dimension:</td><td><input name="dimension" type="text" size="60" value="' . $row6['dimension'] . '"></td></tr>';
echo '<tr><td>Enhed1 (mål):</td><td><input name="enhed1" type="text" size="60"></td></tr>';
echo '<tr><td>Enhed2 (mål):</td><td><input name="enhed2" type="text" size="60"></td></tr>';
echo '<tr><td>Enhed3 (mål):</td><td><input name="enhed3" type="text" size="60"></td></tr>';
echo '<tr><td>Enhed4 (mål):</td><td><input name="enhed4" type="text" size="60"></td></tr>';
echo '<tr><td>Enhed5 (mål):</td><td><input name="enhed5" type="text" size="60"></td></tr>';
echo '<tr><td>Enhed6 (mål):</td><td><input name="enhed6" type="text" size="60"></td></tr>';
echo '<tr><td>Enhed7 (mål):</td><td><input name="enhed7" type="text" size="60"></td></tr>';
echo '<tr><td>Enhed8 (mål):</td><td><input name="enhed8" type="text" size="60"></td></tr>';
echo '<tr><td>Enhed9 (mål):</td><td><input name="enhed9" type="text" size="60"></td></tr>';
echo '<tr><td>Enhed10 (mål):</td><td><input name="enhed10" type="text" size="60"></td></tr>';
echo '<tr><td>Enhed type (mm, cm, pr. stk, etc.):</td><td><input name="enhedstype" type="text" size="60" value="' . $row6['enhedstype'] . '"></td></tr>';
echo '<tr><td>Kommentar til varen:</td><td><input name="comment" type="text" size="60" value="' . $row6['comment'] . '"></td></tr>';
Avatar billede zynzz Praktikant
07. oktober 2007 - 16:42 #6
Men hvis det er så kan du skrive din mail så kan jeg da kigge på det... :)
Avatar billede zynzz Praktikant
07. oktober 2007 - 16:45 #7
Det eneste jeg ikke fatter er hvorfor du har mange enheder, og ikke tilknytter dem til en bestemt celle ?
Avatar billede snigeren Nybegynder
07. oktober 2007 - 17:10 #8
jow det kunne jeg også gøre,.. vidste bare ikke om der var en smartere måde at gøre det på,..

havde tænkt på at lave tabellen som følger

itemID, varenr, enhed1, enhed2, enhed3, enhed4, enhed5, enhed6, enhed7, enhed8, enhed9, enhed10


men det er vel egentlig lige meget hvordan man opbygger sådan en tabel. Om der kommer 10 linier eller en linie med 10 felter

well det kan godt være jeg bare skal gøre det i stedet..
Avatar billede zynzz Praktikant
07. oktober 2007 - 18:25 #9
Altså hvis der altid er 10 enheder ville det være en super måde, men hvis der fx. kan være 1-100 var det nok dumt..., der ville jeg nok lave en tabel der hed enheder og i den lave et nr. der henviser til vareNR... :)
Avatar billede snigeren Nybegynder
07. oktober 2007 - 22:15 #10
well så laver jeg bare lidt om på min tabel =)

vil du ha lidt point for besværet? så ka vi dele :D
Avatar billede zynzz Praktikant
08. oktober 2007 - 17:13 #11
Nej tag du bare dem... :)
Avatar billede snigeren Nybegynder
08. oktober 2007 - 17:52 #12
hehe ok men tak alligevel :P
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester