muy buenas! tengo un código php para un carrito de compra que en en navegador del DEVPHP funciona de maravilla, pero cuando lo abro con el internet explorer o mozilla firefox me da un error un un sitio muy tonto
| Code: |
if($_SESSION['cant_miel']>=1){
$sql="select * from carritocompra where id=1";
$tabla_resultado=mysql_query($sql,$conexion);
if(!$tabla_resultado){
echo " ERROR: Imposible realizar consulta.<br>";
}
else{
$numero_filas=mysql_numrows($tabla_resultado);
if($numero_filas>0){
while($fila=mysql_fetch_row($tabla_resultado)){
$total_miel=$_SESSION['cant_miel']*$fila[2];
$c=$_SESSION['cant_miel'];
echo"<table border=1><tr><td width=100 height=25 VALIGN=MIDDLE align=center><font color=white>$fila[1] </td><td width=50 height=25 VALIGN=MIDDLE align=center><font color=white>$fila[2] €</td><td width=50 height=25 VALIGN=MIDDLE align=center><font color=white>$c uds.</td><td width=50 height=25 VALIGN=MIDDLE align=center><font color=white>$total_miel €</td></tr></table>";
}
}
$a=1;
}
}
|
bien, el problema no es por sesiones ni nada de eso, el problema viene a partir del simbolo ">", es rarísimo, es como si a partir de ese simbolo ya no me coge el código
hay alguna manera de poner un "mayor que" sin tener que recurrir a ese simbolo
ummmm te da error eso? no se, yo en ejercicios de clase (allá en antaño XD) recuerdo haber hecho comparaciones y no darme ningun error ese simbolo..ummmm
no se no se
consultare algo cuando tenga un momento en el curro libre, a ver si encontro porque peude ser
ya he encontrado que no es problema de mi ordenador, xq ya lo he probado en otro
puede ser que IE y MOZILLA me detecten el simbolo "<" o ">" como un inicio o final de etiqueta
no hay otra manera de poner el mayor que o menor que?
El uso del mayor o igual ">=" es correcto, incluso si el contenido de la variable de sesion cant_miel fuese una cadena, php compara estos sin producir error alguno.
| Quote: |
$a <= $b Menor o igual que TRUE si $a es menor o igual que $b.
$a >= $b Mayor o igual que TRUE si $a es mayor o igual que $b.
Si compara un entero con una cadena, la cadena es convertida a un número. Si compara dos cadenas numéricas, ellas son comparadas como enteros. Estas reglas también se aplican a la sentencia switch. |
MAS INFO:http://ar.php.net/manual/es/language.operators.comparison.php
Last edited by fribos on Thu Nov 20, 2008 8:04 pm; edited 2 times in total
La comparación está bien,
Muestranos una salida para ver el error de manera exacta y saber que es lo que está pasando.
Yo el de las comillas la verdad es que no lo veo.
Un saludo
Incluso mejor el código fuente de la página de salida, así sabremos exactamente donde para al interpretar el php
Un saludo
la verdad esk lo de las comillas no he acabado de entenderlo, esk está bien, solo pasa que no me reconoce el símbolo ">" ni el "<"
ahora mismo no puedo poneros el código fuente, aunk ya tengo un par de ideas para tratar de solucionarlo
Hola aqui puedes encontrar la ayuda que necesitas, pero sea para tu beneficio:
www.desarrolloweb.com/php
www.manualdephp.com/
www.webtaller.com/manual-php/manual_php.php
manual-de-php.softonic.com
manual-de-php.softonic.com
www.dirphp.com/
si weno, por ahi es por donde he estado mirando, y sigo sin entenderlo 
Lo siento, pero la información que estás dando es muy vaga.
Primero, pon el error exacto que te está dando el script.
Luego, pon el output que está haciendo al correrlo.
Después, sería agradable que explicaras un poco lo que deseas que haga.
Saludos.
Ah, y $numero_filas=mysql_numrows($tabla_resultado); deberá dar un error al menos que hayas definido tú la función.
Es mysql_num_rows(), no mysql_numrows. Voy a imaginar que ese es el error.
| Code: |
if($_SESSION['cant_miel']>=1){
$sql="select * from carritocompra where id=1";
$tabla_resultado=mysql_query($sql,$conexion);
if(!$tabla_resultado){
echo " ERROR: Imposible realizar consulta.<br>";
}
else{
$numero_filas=mysql_numrows($tabla_resultado);
if($numero_filas>0){
while($fila=mysql_fetch_row($tabla_resultado)){
$total_miel=$_SESSION['cant_miel']*$fila[2];
$c=$_SESSION['cant_miel'];
echo"<table border=1><tr><td width=100 height=25 VALIGN=MIDDLE align=center><font color=white>".$fila[1]." </td><td width=50 height=25 VALIGN=MIDDLE align=center><font color=white>".$fila[2] ." €</td><td width=50 height=25 VALIGN=MIDDLE align=center><font color=white>".$c." uds.</td><td width=50 height=25 VALIGN=MIDDLE align=center><font color=white>".$total_miel ." €</td></tr></table>";
}
}
$a=1;
}
} |
Lo que yo encontré es quen te hacía falta poner esos puntos y comillas que le he agregado a tu código. Por ejemplo:
...white>".$fila[1]." </td><...
Slaudos
| mesianica wrote: |
| Code: | if($_SESSION['cant_miel']>=1){
$sql="select * from carritocompra where id=1";
$tabla_resultado=mysql_query($sql,$conexion);
if(!$tabla_resultado){
echo " ERROR: Imposible realizar consulta.<br>";
}
else{
$numero_filas=mysql_numrows($tabla_resultado);
if($numero_filas>0){
while($fila=mysql_fetch_row($tabla_resultado)){
$total_miel=$_SESSION['cant_miel']*$fila[2];
$c=$_SESSION['cant_miel'];
echo"<table border=1><tr><td width=100 height=25 VALIGN=MIDDLE align=center><font color=white>".$fila[1]." </td><td width=50 height=25 VALIGN=MIDDLE align=center><font color=white>".$fila[2] ." €</td><td width=50 height=25 VALIGN=MIDDLE align=center><font color=white>".$c." uds.</td><td width=50 height=25 VALIGN=MIDDLE align=center><font color=white>".$total_miel ." €</td></tr></table>";
}
}
$a=1;
}
} |
Lo que yo encontré es quen te hacía falta poner esos puntos y comillas que le he agregado a tu código. Por ejemplo:
...white>".$fila[1]." </td><...
Slaudos |
En PHP la concatenación para incluir variables es innecesaria cuando se usan comillas dobles y solamente necesaria cuando se usan comillas simples (con algunas excepciones).
EDITADO: Pondré la excepción más típica.
Teniendo inicialmente:
| Code: |
<?php
$var1 = "Hola!";
$arr[0] = 'unvalor';
$arr[1] = 'otro valor';
$arr["hola"] = 'jajaja'; |
Escribir lo siguiente obtendría los resultados esperados (y serían lo mismo, excepto que con comillas simples es un poco más eficiente para el parser):
| Code: |
echo "ANTES::$arr[0]::DESPUES";
echo 'ANTES::'.$arr[0].'::DESPUES';
echo "ANTES::".$arr[0]."::DESPUES";
echo "ANTES::{$arr[0]}::DESPUES";
|
Mientras que lo siguiente sería equivocado:
| Code: |
echo "ANTES::$arr['hola']::DESPUES";
|
Y se puede arreglar de las siguientes tres formas (o de otras más, posiblemente):
| Code: |
echo "ANTES::{$arr['hola']}::DESPUES";
echo "ANTES::".$arr['hola']."::DESPUES";
echo 'ANTES::'.$arr['hola'].'::DESPUES';
|
Generalmente se usa la siguiente regla:
Si vas a usar concatenación para los strings (usar .), usa comillas simples, puesto que son mejores y al menos queda claro a otro programador que si vas a imprimir variables vas a concatenar.
Pero en lo general, si vas a imprimir variables dentro del texto, se usan comillas dobles, ya que hace al texto más fácil de leer. Un ejemplo típico son las consultas de SQL. Un ejemplo:
| Code: |
$miConsulta = "UPDATE usuarios SET nombre = '$nombre', compani = '$compani', correo = '$correo', detalles = '$detalles' WHERE id = '$id'";
|
Que es mucho más sencillo que leerlo de otra forma.
"¿Por qué complicarse la vida con comillas simples y dobles?".
Para accesos a arreglos (como $var['hola']) y demás normalmente se usan con comillas simples, ya que son más rápidas. Pero en general, porque así puedes imprimir información "tal cual viene" (excepto para escapar comillas simples).
En cambio, las comillas dobles son útiles porque, aunque son un poco más lentas, son más sencillas de leer. Cuando estás en un proyecto mediano a grande, es demasiado importante que se pueda leer el código por cualquier persona y que se entienda.
Espero que con esto se arregle tu confusión =)