envío de formulario php - Q2

Lamento la pregunta ficticia. Aquí está mi formulario PHP simple con dos tablas SQL y con el botón de envío AGREGAR me gustaría mover personas de Test1 a Test2. Muchas cosas están bien :( solo el botón enviar no funciona, por lo tanto, no hay comentarios de la tabla Test2.

Revisado: Enviar ahora funciona muy bien

Q2 - todavía no consigo que las casillas de verificación funcionen :( - por favor

¿Alguien podría mostrarme cómo rastrear un error como este, por favor?

<?php include("db_connect.php");?>
<html>
  <head></head>
  <body>
    <form method="post" action="moving.php">
      <table border="1">
        <tr>
          <td>
            <?php
              $left='SELECT * FROM test1 ORDER BY name ASC';
              $result1=mysql_query($left);
              $count=mysql_num_rows($result1);
              while($resulta = mysql_fetch_array($result1)) {
                  ?>
                  <input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $resulta['id']; ?>"/> <? echo $resulta['name']; ?>
                  <br />
            <?php } ?>
          </td>
          <td><input type="submit" id="add" name="add" value="Add" /></td>
          <td>
            <?php
              $rigth='SELECT * FROM test2,test1 WHERE test2.collect=test1.id ORDER BY test1.name ASC';
              $result2=mysql_query($right);
              while($resultb = mysql_fetch_array($result2)) {
                  echo $resultb['id'] ;
                  echo "<br />";
              }
            ?>
          </td>
        </tr>
      </table>
      <?php
        // Check if add button active, start this
        if (isset($_POST['add'])) {
            for ($i=0;$i<$count;$i++) {
                $add_id = $checkbox[$i];
                if ($add_id=='1') {
                  $sql = "INSERT INTO test2 (status, collect) VALUES(1, 1)";
                  $result = mysql_query($sql);
                }
            }

            // if successful redirect to delete_multiple.php
            if ($result){
                echo "<meta http-equiv=\"refresh\" content=\"0;URL=moving.php\">";
            }
        }
        mysql_close();
      ?>
    </form>
  </body>
</html>

gracias :) de un principiante

preguntado el 28 de agosto de 11 a las 00:08

volviendo a la misma página. si ($ resultado) {echo " "; } Yo creo:) -

debe tener "moving.php" como su "acción" en su formulario de etiqueta. la meta actualización actualizará la página. -

Fuera de tema: no usar SELECT *; seleccione solo las columnas que necesite. La extensión mysql está desactualizada y en vías de desaprobación. En su lugar, use mysqli o PDO (ambos admiten declaraciones preparadas). En casi todos los casos, no es semántico. Mesas no debe usarse para el diseño. En su código, un -- es semánticamente apropiado. -

gracias por el consejo. ¿Puedo pedirle que me muestre el camino correcto en lugar del . Puedo hacer el mysqli :) gracias de nuevo -

@Andras: las tablas son solo para datos que tienen una estructura bidimensional, en lugar de datos que tienen una estructura 2D impuesta para su visualización. HTML es un lenguaje estructural, no de formato. CSS es para formatear. En otro tema, el código debería ser sangrado para mayor legibilidad. La sangría puede ser complicada al mezclar lenguajes (como PHP y HTML); la coherencia es lo más importante cuando se trata de estas convenciones. -

3 Respuestas

donde hace $count ?

Intenta usar count($_POST['checkbox']) en su lugar en su declaración INSERT. Luego puede iterar sobre las casillas de verificación usando:

for ($c = 0; $c < count($_POST['checkbox']); $c++){
  $checkbox = $_POST['checkbox'][$c];
  ...INSERT action...
}

Respondido 28 ago 11, 04:08

¡¡¡¡¡muchas gracias!!!!! Me estoy quedando ciego en este código ... ¡la cabeza y los dedos no están a la misma velocidad! gracias de nuevo:) - Esforzarse más

En el código de muestra, almacena la declaración en una variable llamada $rigth, pero (intenta) ejecutar una declaración almacenada en una variable llamada $right.

Hay un par de cosas que puede hacer para detectar errores.

  1. Trata análisis de código estático; Algunas herramientas pueden indicarle si una variable se usa solo una vez (una indicación de que puede ser un error tipográfico).
  2. Manejar errores. Algunas funciones devuelven un valor especial si hay un error (False es común); para estas funciones, suele haber una función relacionada que devolverá información de error. Algunas funciones arrojarán un excepción; Atrápelos donde puedan ser atendidos adecuadamente. Los mensajes de error del sistema no deben mostrarse a los usuarios que no son administradores, por lo que no debe revelar demasiada información.
  3. Utilice un depurador interactivo. Por ejemplo, instale el Xdebug extensión en su servidor de desarrollo (usa un servidor de desarrollo, ¿verdad?) y usa un Depurador compatible con Xdebug.

contestado el 23 de mayo de 17 a las 14:05

Gracias @outis es un comentario realmente útil, desafortunadamente alojado en la web, así que tengo mi computadora portátil. ¿Alguna otra herramienta que no sea Xdebug? Gracias - Esforzarse más

Su servidor de desarrollo debería estar completamente bajo su control y ser públicamente inaccesible; su computadora portátil es la candidata perfecta. Puede instalar un paquete AMP (como XAMPP o WampServer) en su computadora portátil, convirtiéndolo en su servidor de desarrollo. El desarrollo requiere configurar el servidor de una manera que nunca debería hacerse en un servidor público por razones de eficiencia y seguridad. - outis

la solución - no es agradable pero funciona - gracias por todos los comentarios y ayuda !!!

<?php include("db_connect.php");?>

<html>
<head>
</head>
<body>
<form method="post" action="test.php">

Nuevo:

<?php
$left='SELECT * FROM test1 ORDER BY name ASC';
$result1=mysql_query($left);
$count=mysql_num_rows($result1);
while($resulta = mysql_fetch_array($result1))
  {
?>

<input name="checkbox_add[]" type="checkbox" id="checkbox_add[]" value="<? echo $resulta['id']; ?>"/> <? echo $resulta['name']; ?>
<br />
<?php
   }
?>

</td> <td><input type="submit" id="add" name="add" value="Add" /><br /><input type="submit" id="delete" name="delete" value="Del" /></td><td>
<?php
$right='SELECT test2.id, test1.name FROM test2, test1 WHERE test1.id=test2.collect AND test2.status=1';
$result2=mysql_query($right);
while($resultb = mysql_fetch_array($result2))
  {
?>
   <input name="checkbox_del[]" type="checkbox" id="checkbox_del[]" value="<?php echo $resultb['id']; ?>"/>, <?php echo $resultb['id']; ?>, <? echo $resultb['name']; ?>
<br />
<?php
  }
?>
</td></tr></table>


<?php
// Check if add button active, start this
if (isset($_POST['add'])) {
  for ($c = 0; $c < count($_POST['checkbox_add']); $c++){
    $checkbox_add = $_POST['checkbox_add'][$c];
    $sql = "INSERT INTO test2 (status, collect) VALUES(1, ".$checkbox_add.")";
    echo $sql;
    $result = mysql_query($sql);
    if($result){
      echo "<meta http-equiv=\"refresh\" content=\"0;URL=test.php\">";
      }
    }
  }
elseif (isset($_POST['delete'])) {
  for ($c = 0; $c < count($_POST['checkbox_del']); $c++){
    $checkbox_del = $_POST['checkbox_del'][$c];
    echo date("Y-m-d");
    $sql = "UPDATE  test2 SET status='2', log='".date('Y-m-d')."' Where id=".$checkbox_del;
    echo $sql;
    $result = mysql_query($sql);
    if($result){
      echo "<meta http-equiv=\"refresh\" content=\"0;URL=test.php\">";
     }
    }
  }
elseif (isset($_POST['new'])) {
    $sql = "INSERT INTO test1 (status, name) VALUES(1, '".$_POST['newitem']."')";
    echo $sql;
    $result = mysql_query($sql);
    if($result){
      echo "<meta http-equiv=\"refresh\" content=\"0;URL=test.php\">";
    }
  }
mysql_close();
?>

</form>

</body>
</html>

Respondido 29 ago 11, 14:08

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