Avatar billede -jesper- Nybegynder
06. august 2003 - 10:53 Der er 11 kommentarer og
2 løsninger

Samle variabler i array

Hejsa..

Er der nogen der har en hel vild god idé til hvordan man samler en masse "input type=text"-bokse i et array? Altså værdierne som bliver tastet i disse bokse.. :)

Jeg har selv rodet med noget for-løkke og push for at bygge arrayet op, men der må næsten findes en bedre (nemmere) metode.. Nogle gode idéer?
Avatar billede andy Nybegynder
06. august 2003 - 10:56 #1
<input type="text" name="array[]">

Så har du det i et array, $_POST["array"].

Nej, det er ikke valid html........
Avatar billede tipsen Nybegynder
06. august 2003 - 11:19 #2
Der findes ikke en metode som bygger på standard-html.
Avatar billede ohmish Nybegynder
06. august 2003 - 11:22 #3
while ($row = mysql_fetch_array($result)) {
echo "<input type=\"text\" name=\"id".$row["id"]."\" size=\"2\" maxlength=\"3\">";
$ids[] = $row["id"];
}
$ids = implode("|", $ids);
echo "<input type=\"hidden\" name=\"ids\" value=\"$ids\">";
Avatar billede ohmish Nybegynder
06. august 2003 - 11:25 #4
når du skal ha fat i de udfyldte felter:

if ($action == "Bestil") { $valg=0;
$ids = explode("|", $_POST["ids"]);
foreach($ids as $value)
{
if(isset($_POST["id$value"]) && !empty($_POST["id$value"]))  {

    $result = mysql_query("SELECT * FROM vareliste WHERE id=$value");
    $row = mysql_fetch_array($result);
    $id=$row["id"];
    $best=$row["best"];
    $vare=$row["vare"];
    $pris=$row["pris"];
    $antal=$_POST["id$value"];
$sql = "INSERT INTO bestilling (id, bruger, best, vare, pris, antal, email) VALUES ('$id', '$bruger', '$best', '$vare', '$pris', '$antal', '$email')";
        mysql_query($sql);
    $valg++;
    }

} if ($valg==0) { $status="<br>Udfyld venligst vareantal"; } }
Avatar billede repsac Nybegynder
06. august 2003 - 15:41 #5
Hvorfor er <input type="text" name="array[]"> ikke valid html? w3.org siger da god for den i 4.01 Strict...
Avatar billede -jesper- Nybegynder
06. august 2003 - 15:44 #6
Tak skal I have, gutter :)
Avatar billede repsac Nybegynder
06. august 2003 - 15:48 #7
200 point, det må være i overkanten for sådan et spørgsmål!
Avatar billede tipsen Nybegynder
06. august 2003 - 17:13 #8
Det med arrays som navne på html-objekter er ikke gyldigt og man kan ikke være sikker på, at det fungerer generelt.
Avatar billede ohmish Nybegynder
07. august 2003 - 11:11 #9
hvorfor, tipsen?

hvis man nu har en form med:

echo '<input type="text" name="'.$i.'" id="'.$i.'">';

hvorfor er det ikke standard html?
Avatar billede tipsen Nybegynder
07. august 2003 - 11:42 #10
ohmish: Om ovennævnte er standard afhænger helt af hvad $i indeholder!

Se: http://www.w3.org/TR/html4/types.html#type-cdata for specifikation.

Specielt:

'ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").'

Dvs karaktererne '[' og ']' som er nødvendige for at angive et array er ikke gyldige tegn i navngivningsstandarden og derfor kan man ikke være sikker på, at det vil fungere i alle browsere (specielt ikke browsere der er stringente i forhold til standarden!)

Mvh

tipsen
Avatar billede ohmish Nybegynder
07. august 2003 - 12:16 #11
tipsen> du har da ganske ret.
men man kan måske undgå [] i inputfeltet's navn/id.
Avatar billede ohmish Nybegynder
07. august 2003 - 12:18 #12
det vil jeg påstå at have undgået i mit eksempel :)
Avatar billede tipsen Nybegynder
07. august 2003 - 12:33 #13
ohmish: Min første kommentar var generelt til spørgsmålet om at bruge arrays i navngivningen af formularfelter - det er ikke muligt i henhold til standarden - det var ikke en kommentar til din løsning der sikkert er rigtig, men så heller ikke benytter sig af arrays i navngivningen.
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