la consulta no está insertando un valor

Estoy haciendo un script donde el usuario puede subir una imagen de su mascota. tengo este codigo:

<?php
    session_start();
    $name = $_SESSION['myusername'];
    $petName = $_POST['picup']; // a pet name picked by a dropdown list

    $con = mysql_connect( "localhost", "lalala", "blabla" );
    mysql_select_db( "lalal_animal", $con );
    if ( @$_POST ['submit'] ) {
      $file = $_FILES ['file'];
      $name1 = $file ['name'];
      $type = $file ['type'];
      $size = $file ['size'];
      $tmppath = $file ['tmp_name'];
      if ( $name1 != "" ) {
        if ( move_uploaded_file( $tmppath, 'upload/' . $name1 ) ) {
          $query = "insert into pics(animalName,username,image) VALUES('$petName','$name','$name1')";
          mysql_query( $query ) or die( 'could not updated:' . mysql_error() );
          echo "Your image upload successfully !!";
        }
      }
    }
    ?>

    <html >
      <head>
        <title>Image Upload</title>
      </head>
      <body>
        <form name="form" action="" method="post" enctype="multipart/form-data">
          Photo <input type="file" name="file" />
          <input type="submit" name="submit" value="submit" /> 
        </form>
      </body>
    </html>

Después de ejecutar esto, la columna tabele nombrada: "nombre del animal"es en blanco.

Cuando ejecuto este comando SQL dentro de phpmyadmin:

insert into pics(animalName,username,image) VALUES('Sparky','tester','sparky.jpg')

Las tablas están bien y la columna animalName contiene el valor correcto. El nombre de la mascota se muestra, si lo hago:

echo $petName;

El nombre de la mascota viene de otra forma. El usuario primero tiene que elegir la mascota y luego es redirigido al formulario de carga. Aquí está el menú desplegable que solicitó:

<table width="480" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form name="upload" method="post" action="upload_form.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td colspan="3"><strong>Upload image</strong></td>
</tr>
<td>Select a pet</td>
<td>:</td>
<td>

<?php
mysql_connect('localhost', 'blabla', 'lalal');
mysql_select_db('lalala_animal');

$sql = "SELECT name FROM animal where username='$name'";
$result = mysql_query($sql);

echo "<select name='picup'>";
while ($row = mysql_fetch_array($result)) {
    echo "<option value='" . $row['name'] . "'>" . $row['name'] . "</option>";
}
echo "</select>";
?>
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><input type="submit" name="Submit" value="Upload"></td>
</tr>
</table>
</td>
</form>
</tr>
</table>

Sospecho que hay algo mal con el formulario HTML debajo del código php, pero no puedo entender qué.

preguntado el 08 de septiembre de 12 a las 09:09

¿también muestra su lista desplegable? -

@jogesh_p Lo acabo de agregar a la publicación original:

Se está volviendo confuso ahora. Está cambiando el código de una manera que es imposible dar una buena respuesta en primer lugar. ¡Piensa bien tu pregunta antes de publicarla! -

No habrá ningún cambio. Acabo de agregar el menú desplegable. :) -

@CodeBeast prueba la respuesta y avísanos si funciona... -

3 Respuestas

En su comentario menciona que $petName proviene de una selección en el formulario.

Sin embargo, en el formulario, falta la selección, por lo que $petName ($_POST['picup']) está vacío.

    <html >
      <head>
        <title>Image Upload</title>
      </head>
      <body>
        <select name="picup">
          <option>Sparky</option>
          <option>Lucky</option>
        </select>
        <form name="form" action="" method="post" enctype="multipart/form-data">
          Photo <input type="file" name="file" />
          <input type="submit" name="submit" value="submit" /> 
        </form>
      </body>
    </html>

Respondido el 08 de Septiembre de 12 a las 09:09

El nombre de la mascota viene de otra forma. El usuario primero tiene que elegir la mascota y luego es redirigido al formulario de carga. Si lo hago: echo $petName está mostrando el nombre de la mascota - código bestia

Puede ser, pero $petName = $_POST['picup']; sobrescribirá el $petName original!! - jvdberg

Lo que necesito es: $_POST['picup']; Puedo mostrarlo usando echo, pero no se puede insertar en la tabla. :( - código bestia

Como dijiste que pasas el $_POST['picup'] desde el primer envío, simplemente modifique su segundo formulario y coloque el $_POST['picup'] valor en el campo oculto. Modifique su formulario así..

<form name="form" action="" method="post" enctype="multipart/form-data">
      Photo <input type="file" name="file" />
      <input type="hidden" name="picup" value="<?php echo $petName; ?>" /> 
      <input type="submit" name="submit" value="submit" /> 
    </form>

Espero que esto funcione ...

Porque cuando envías el segundo, esa vez los valores de tu primera publicación no funcionan.

Respondido el 08 de Septiembre de 12 a las 10:09

Creo que ahora entiendes dónde estaba el problema;) - jogesh_pi

Tal vez su tipo de datos de animalName no sea varchar en phpmyadmin, verifique que

Respondido el 08 de Septiembre de 12 a las 09:09

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