Formulario de carga de PHP avanzado [cerrado]

La tabla MySQL se ve así: enter image description here

Aquí está el código de la salida:

<li>
    <a class="thumb" href="library/<?php echo $row2['projectname']; ?>/<?php echo $row2['projectrecordnum']; ?>.<?php echo $row2['projectformat']; ?>" title="<?php echo $row2['projectrecordtitle']; ?>">
        <img src="library/<?php echo $row2['projectname']; ?>/thumbs/<?php echo $row2['projectrecordnum']; ?>.<?php echo $row2['projectformat']; ?>" alt="<?php echo $row2['projectrecordtitle']; ?>" />
    </a>
    <div class="caption">
        <div class="image-title"><?php echo $row2['projectrecordtitle']; ?></div>
        <div class="image-desc"><?php echo $row2['projectrecorddesc']; ?></div>
        <div class="download">
            <a href="library/<?php echo $row2['projectname']; ?>/<?php echo $row2['projectrecordnum']; ?>.<?php echo $row2['projectformat']; ?>" target="_blank">Download Original</a>
        </div>
    </div>
</li>

Así es como se ve la salida:

<li>

    <a class="thumb" href="library/ultima/2.jpg" title="Timbo DISPLACED">

        <img src="library/ultima/thumbs/2.jpg" alt="Timbo DISPLACED" />

    </a>

    <div class="caption">

        <div class="image-title">Timbo DISPLACED</div>

        <div class="image-desc">Made in 3ds Max, background, color and lens flare from Photoshop</div>

        <div class="download">

            <a href="library/ultima/2.jpg" target="_blank">Download Original</a>

        </div>

    </div>

</li>

Mi problema es que no puedo encontrar una forma de crear un formulario que cree una cantidad de campos que el usuario desea; luego carga y escribe la información de cada archivo en una base de datos mysql (recuerde que la cantidad de archivos no es definitiva).

preguntado el 31 de julio de 12 a las 15:07

¿Cuál es exactamente tu problema? ¿Cómo está tu form ¿parece? -

Actualmente solo contiene información principal como el nombre del proyecto, el nombre para mostrar del proyecto, el formato del proyecto, el comentario del proyecto, la información del proyecto:

Entonces, ¿quiere un sistema que cree una cantidad desconocida/conjunto de contenido arbitrario de campos de formulario y maneje esos campos de quién sabe qué en una base de datos? -

1 Respuestas

No es realmente una pregunta específica, sin embargo, intentaré proporcionarle un punto de partida.

Supongo que aún no tienes un formulario...

Para su información: no te importa escapar de tu salida con htmlentities() ¡o algo similar!

1) Utilicé datos ficticios, pero puede reemplazarlos con el conjunto de resultados de la base de datos asociativa:

$rows = array(
    array(  'projectname' => 'ultima',
            'projectrecordnum' => '1',
            'projectrecordtitle' => 'The ball of destruction'),
    array(  'projectname' => 'ultima',
            'projectrecordnum' => '2',
            'projectrecordtitle' => 'Timbo DISPLACED'),
    array(  'projectname' => 'ultima',
            'projectrecordnum' => '3',
            'projectrecordtitle' => 'Exposure')
);

2) Creé un formulario HTML simple en bucle por PHP en los resultados:

<form method="post" action="#">
<?php foreach( $rows as $row ) { ?>
    <div class="caption">
        <div class="">
            <input type="text" name="projectname[]" value="<?php echo $row['projectname']; ?>">
        </div>
        <div class="">
            <input type="text" name="projectrecordnum[]" value="<?php echo $row['projectrecordnum']; ?>">
        </div>
        <div class="">
            <input type="text" name="projectrecordtitle[]" value="<?php echo $row['projectrecordtitle']; ?>">
        </div>
        <?php /* and so more fields ... */ ?>
    </div>
    <hr />
<?php } ?>
    <input type="submit" name="send" value="send" />
</form>

3) Y en el action puedes reconstruir tu $rows formación:

if( isset($_REQUEST['send']) ) {
    $rows  = array();
    for( $i = 0; $i < count( $_POST['projectname'] ); $i++) {
        $row = array(
            'projectname' => $_POST['projectname'][$i],
            'projectrecordnum' => $_POST['projectrecordnum'][$i],
            'projectrecordtitle' => $_POST['projectrecordtitle'][$i],
        );
        if( ! empty( $_POST['projectname'][$i] ) ) { 
            array_push( $rows, $row );
        }
        unset($row);
    }

    // Your data array...
    print '<pre>'. print_r($rows, true) . '</pre>';
}

Respondido 31 Jul 12, 15:07

¡Gracias por responder! Fue bastante útil. Pero me malinterpretaste un poco. El número de campos debe ser definido por el usuario, no por las filas disponibles. Y - Timbo_KZ

Mmm... y que pasa si el usuario ingresa un campo que no coincide con una columna en la tabla de la base de datos? - fabio mora

Encontré una solución: ¡los bucles while! - Timbo_KZ

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.