entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

¿Variables mal pasadas?

Hola. Estoy teniendo un problema al clickear BotonComprarItem, evidentemente algo estoy haciendo mal y no sé qué.

?>
        <div class="alert alert-success">
                                <img src="/              <center><img style="height:37px;" src="/imagenes/hr/6.png" ></center>
<?php"</img>).
                            </div>
              <center><img style="height:skins['Precio'].'" >
        <center><input type="submit" name="BotonComprarSkin" value="" class="BotonSiComprar" ></center>
</form>

</div>

1 Respuesta

3votos

Leonardo-Tadei Puntos216110

Hola @KevinLeyes,

claro que los valores post se pierden. Tenés el mismo error de hace unos días: el botón BotonComprarSkin es el único elemento del formulario que lo contiene, y por tanto el únivo valor enviado es el del value del propio botón.

Para que se envíen elementos de formualrio al servidor, dichos elementos deben estar siempre dentro del formulario que se está enviando.

Tal vez lo pueda solucionar fácilmente agregando campos hidden con lo que te hace falta a ese formulario, tal y como hacés en el formulario de más arriba.

Saludos cordiales!

KevinLeyes comentado Nov 14, 2015

Hola nuevamente @Leonardo-Tadei, gracias por responder. Sí, efectivamente pensé justamente en que comentarías recordándomelo, pero no me está quedando bien en claro, jaja.
Acabo de colocar arriba del input del botón los siguientes hiddens, incluso antes de hacer esta pregunta había intentado lo mismo pero no obtuve resultados:
Y la etiqueta que abre el form (<form method="post">) la puse arriba de todo, después de la línea donde se abre el div del panel-body.
Ahora no me aparece que el IDItem está indefinido.
¿Qué puede ser?
Gracias por tu paciencia, saludos.

Leonardo-Tadei comentado Nov 14, 2015

Al agregar los INPUT de tipo hidden, el error de que IDItem está indefinido no se produce, porque ahora sí está definido.

El error "mysql_fetch_array() expects parameter 1 to be resource" significa que no estás, en esa parte del código, teniendo una respuesta con datos en la variable $sql_select.

La mejor forma de que puedas encontrar el error, es definiendo primero la consulta en una variable y luego ejecutándola:

$id_skin = $_POST['IDItem'];
$qry = "SELECT * FROM web_skins WHERE ID=$id_skin";
$sql_select = mysql_query($qry);
$web_skins = mysql_fetch_array($sql_select);

Este código es idéntico al anterior. Ahora con este código, podés intercalar el ver por pantalla la query a ejecutar:

$id_skin = $_POST['IDItem'];
$qry = "SELECT * FROM web_skins WHERE ID=$id_skin";
var_dump($qry); // Para ver la query
$sql_select = mysql_query($qry);
$web_skins = mysql_fetch_array($sql_select);

y así revisar la query e incluso ejecutarla en un manejador de MySQL para ver si funciona bien.

Lo más probable es que encuentres que $web_skins['ID'] no tiene el valor que creés que tienesino que por ejemplo ese valor está en $_POST['IDItem']

Lo imoprtante es la "técnica" para encontrar el error, que te servirá para cualquier otro problema en una consulta.

Saludos

KevinLeyes comentado Nov 14, 2015

Buenas noches @Leonardo-Tadei, gracias por responder.

Con el var_dump($sql); me está dando el siguiente resultado:

resource(15) of type (mysql result)
Warning: mysql_query() expects parameter 1 to be string, resource given in C:\xampp\htdocs\comprar-ropf.php on line 55

Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in C:\xampp\htdocs\comprar-ropf.php on line 56

$sql_select = mysql_query($sql); // 55
$web = mysql_fetch_array($sql_select); // 56

Leonardo-Tadei comentado Nov 15, 2015

El var_dump que hace falta ver es de la variable $qry, que es en dónde está la consulta y no aparece en tu comentario...

KevinLeyes comentado Nov 15, 2015

Ahora sí, creo:

string(34) "SELECT * FROM web_skins WHERE ID=6"
Warning: mysql_query() expects parameter 1 to be string, resource given in C:\xampp\htdocs\comprar-ropa-def.php on line 55
Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in C:\xampp\htdocs\comprar-ropa-def.php on line 56

El ID del SELECT dependerá obviamente del item al que intente comprar, justo intenté con el 6 en este ejemplo.

Leonardo-Tadei comentado Nov 16, 2015

Revisá que el parámetro que le pasás a mysql_query() sea efectivamenet el string $qry.

El error dice que el parámetro que le estás pasando no es un string, pero $qry sí es un string y contiene la query "SELECT * FROM web_skins WHERE ID=6" que parece una consulta correcta, aunque claro, no podemos probarla sin tus tablas.

Me llama la atención que los números de línea se mantengan iguales que antes, cuando agregaste 2 líneas al menos antes de este código.

Solo por adivinar, es como si le estuvieras pasando a mysql_query() la variable con la conexión, en vez de pasarle el string con la query...

KevinLeyes comentado Nov 17, 2015

Al parecer estaba teniendo el error que mencionabas. Lo que hice fue cambiar:

$sql_select = mysql_query($sql);

Por:

$sql_select = mysql_query($qry);

Aún conservando esta línea...

var_dump($qry); // Para ver la query

...ahora el único error que está dando es el siguiente:

string(53) "SELECT * FROM web WHERE ID='.$web['ID'].'"
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\comprar-ropf.php on line 56

$web = mysql_fetch_array($sql_select); // 56

Analizando el error que devolvió el hacer click en el botón mencionado anteriormente, estaba intentando llegar a una conclusión. Al parecer ya haciendo click comienza a usar el resultado de la query a la DB ('.$web['ID'].'), sin embargo veo que algo está fallando porque sigue otorgando la ID null y el precio que costó el item igual.

Para evitar posibles confusiones, adjunto a la pregunta principal el código de comprar-ropf.php actualizado.

Una vez más, gracias por tu respuesta @Leonardo-Tadei. Saludos.

Leonardo-Tadei comentado Nov 17, 2015

Hola @KevinLeyes,

tu query está mal formada: estás ejecutando

SELECT * FROM web_skins WHERE ID='.$web_skins['ID'].'

y lo que deberías ver en el var_dump() es algo como

SELECT * FROM web_skins WHERE ID=6

en dónde pongo 6 como ejemplo de un ID de un web_skin, es decir, que no se te está reemplazando el valor de la variable por su nombre. Esto suele pasar cuando ponés variables encerradas entre comillas simples, en dónde no hay reemplazo: si es eso, cambialas por comillas dobles para que la query sea correcta.

Tenés que poder copiar y pegar la query en, por ejemplo, PHPMyAdmin (u otro adminsitrador de DB) y que esta se ejecute sin errores.

Saludos

Por favor, accede o regístrate para responder a esta pregunta.

¿Conoces alguien que puede responder?
¡Comparte esta pregunta!


Otras Preguntas y Respuestas


Actividad Reciente

...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta