Avatar billede svjensen Nybegynder
24. december 2004 - 00:28 Der er 1 kommentar og
1 løsning

Hente data fra form via for-løkke

Jeg roder med et script der skal hjælpe brugeren med at oprette en tabel. Brugeren angiver hvor mange felter der skal være i tabellen, hvorefter følgende script genererer input formen:

******FORM SCRIPT START*********
echo "<form action='dbadmin.php?action=create_table_do' method=post onsubmit='return ValiderForm_Create_Step2(this);'>";

echo "<input type=hidden name=table_name value='".$_POST['table_name']."'>";
echo "<input type=hidden name=number_fields value='".$_POST['number_fields']."'>";

echo "<table align=center>";
for ( $i = 0; $i < $_POST['number_fields']; $i=$i+1 )
{
    echo "<tr>";
        //Field name
        echo "<td><input type=text name='field_$i' value=''></td>";

        //Data type
        echo "<td>";
            echo "<select size=1 name='type_$i'>";
                echo "<option value='varchar'>VARCHAR</option>";
                echo "<option value='char'>CHAR</option>";
                echo "<option value='text'>TEXT</option>";
                echo "<option value='tinytext'>TINYTEXT</option>";
                echo "<option value='mediumtext'>MEDIUMTEXT</option>";
                echo "<option value='longtext'>LONGTEXT</option>";
                echo "<option value='date'>DATE</option>";
                echo "<option value='datetime'>DATETIME</option>";
                echo "<option value='timestamp'>TIMESTAMP</option>";
                echo "<option value='time'>TIME</option>";
                echo "<option value='year'>YEAR</option>";
                echo "<option value='int'>INT</option>";
                echo "<option value='tinyint'>TINYINT</option>";
                echo "<option value='smallint'>SMALLINT</option>";
                echo "<option value='mediumint'>MEDIUMINT</option>";
                echo "<option value='bigint'>BIGINT</option>";
                echo "<option value='float'>FLOAT</option>";
                echo "<option value='double'>DOUBLE</option>";
                echo "<option value='decimal'>DECIMAL</option>";
                echo "<option value='blob'>BLOB</option>";
                echo "<option value='tinyblob'>TINYBLOB</option>";
                echo "<option value='mediumblob'>MEDIUMBLOB</option>";
                echo "<option value='longblob'>LONGBLOB</option>";
                echo "<option value='enum'>ENUM</option>";
                echo "<option value='set'>SET</option>";
            echo "</select>";
        echo "</td>";

        //Length/Value
        echo "<td><input type=text name='length_$i' value=''></td>";

        //Null value
        echo "<td>";
            echo "<select size=1 name='null_$i'>";
                echo "<option value='not null'>NOT NULL</option>";
                echo "<option value='null'>NULL</option>";
            echo "</select>";
        echo "</td>";
               
        //Default value
        echo "<td><input type=text name='default_$i' value=''></td>";
               
        //Auto increment
        echo "<td class=TDCenter><input type=checkbox name='auto[]'></td>";
               
        //Primary key
        echo "<td class=TDCenter><input type=radio name='primary_key' value='$i'></td>";

    echo "</tr>";
}
        echo "<tr><td>&nbsp;</td></tr>";
        echo "<tr><td colspan=5 class=TDCenter><input type=submit value='Create table'></td></tr>";
        echo "</table>";
        echo "</form>";
******FORM SCRIPT SLUT*********

I det følgende prøver jeg så at opfange brugerens input, men jeg løber ind i problemer omkring brugen af '$i':

$table_name = $_POST['table_name'];
$number_fields = $_POST['number_fields'];
$primary_key = $_POST['primary_key'];
   
$strSQL = "CREATE TABLE $table_name (";
for ( $i = 0; $i < $number_fields; $i=$i+1 )
{
    $strSQL = $strSQL." ".$_POST['field_$i']." ".$_POST['type_$i'];
    if ($_POST['length_$i'] != "")
    {
        $strSQL = $strSQL."(".$_POST['length_$i'].")";
    }

    if ($_POST['null_$i'] == "not null")
    {
        $strSQL = $strSQL." NOT NULL ";
    }

    if ($_POST['auto[$i]'] == "1")
    {
        $strSQL = $strSQL." AUTO_INCREMENT ";
    }
    $strSQL = $strSQL.", ";
}
$strSQL = $strSQL." PRIMARY KEY($primary_key))";
echo $strSQL;


Eksempel på fejlmeddelelse: Undefined index: type_$i
Avatar billede coderdk Praktikant
24. december 2004 - 01:39 #1
'length_$i' <- php-variable bliver ikke evalueret i ' det skal være ", altså:

$_POST["length_$i"] eller $_POST['length_' . $i]
Avatar billede svjensen Nybegynder
25. december 2004 - 19:53 #2
Tak for det. Så lærte jeg også lidt mere om PHP i dag.
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