Foros del Web » Programando para Internet » PHP »

ayudarme a encontrarme (lio con condicionales)

Estas en el tema de ayudarme a encontrarme (lio con condicionales) en el foro de PHP en Foros del Web. Tengo un script un poco complicado de explicar: es este: Código PHP: <? $num = $_POST [ 'numero' ]; include( "config.php" ); $resp = mysql_query ...
  #1 (permalink)  
Antiguo 16/10/2005, 13:36
 
Fecha de Ingreso: febrero-2003
Mensajes: 763
Antigüedad: 21 años, 2 meses
Puntos: 2
ayudarme a encontrarme (lio con condicionales)

Tengo un script un poco complicado de explicar:

es este:

Código PHP:
<?
$num
=$_POST['numero'];

include(
"config.php");
$resp=mysql_query('SELECT x1,veces1,x2,veces2,x3,veces3,x4,veces4,x5,veces5 FROM usuarios WHERE id=8');
$array mysql_fetch_row($resp);
$x1 $array[0];
$veces1 $array[1];
$x2 $array[2];
$veces2 $array[3];
$x3 $array[4];
$veces3 $array[5];
$x4 $array[6];
$veces4 $array[7];
$x5 $array[8];
$veces5 $array[9];

// primer if
if ($x1==$num or $x2==$num or $x3==$num or $x4==$num or $x5==$num){
// termina el primer if

if ($x1 == $num) {
if (
$veces1 == 0) {
echo 
"Has enviado hoy 2 sms a $num solo se pueden enviar 2 sms al mismo numero por dia";
} else {
$sql "UPDATE usuarios SET veces1=veces1-1 WHERE id=8";
mysql_query($sql) or die(mysql_error());
echo 
"miratu";
}




} else {

if (
$x2 == $num) {
if (
$veces2 == 0) {
echo 
"Has enviado hoy 2 sms a $num solo se pueden enviar 2 sms al mismo numero por dia";
} else {
$sql "UPDATE usuarios SET veces2=veces2-1 WHERE id=8";
mysql_query($sql) or die(mysql_error());
echo 
"miratu";
}




} else {


if (
$x3 == $num) {
if (
$veces3 == 0) {
echo 
"Has enviado hoy 2 sms a $num solo se pueden enviar 2 sms al mismo numero por dia";
} else {
$sql "UPDATE usuarios SET veces3=veces3-1 WHERE id=8";
mysql_query($sql) or die(mysql_error());
echo 
"miratu";
}




} else {
echo 
"que pasa";

if (
$x4 == $num) {
if (
$veces4 == 0) {
echo 
"Has enviado hoy 2 sms a $num solo se pueden enviar 2 sms al mismo numero por dia";
} else {
$sql "UPDATE usuarios SET veces4=veces4-1 WHERE id=8";
mysql_query($sql) or die(mysql_error());
echo 
"miratu";
}




} else {


if (
$x5 == $num) {
if (
$veces5 == 0) {
echo 
"Has enviado hoy 2 sms a $num solo se pueden enviar 2 sms al mismo numero por dia";
} else {
$sql "UPDATE usuarios SET veces5=veces5-1 WHERE id=8";
mysql_query($sql) or die(mysql_error());
echo 
"miratu";
}



} else {
// aqui pense que que era el fin del primer if y donde contradigo al condicional
echo "graba";



}
}
}
}
}
}
?>
yo pense que en la linea
Código PHP:
echo "graba"
era la linea donde podia pegar mi otra parte del script:

Código PHP:
if (x1 == "") {
$ins mysql_query("insert into usuarios (x1,veces1) VALUES ('$num','1')") or die (mysql_error());
} else {
if (
x2 == "") {
$ins mysql_query("insert into usuarios (x2,veces2) VALUES ('$num','1')") or die (mysql_error());
if (
x3 == "") {
$ins mysql_query("insert into usuarios (x3,veces3) VALUES ('$num','1')") or die (mysql_error());
} else {
if (
x4 == "") {
$ins mysql_query("insert into usuarios (x4,veces4) VALUES ('$num','1')") or die (mysql_error());
} else {
if (
x5 == "") {
$ins mysql_query("insert into usuarios (x5,veces5) VALUES ('$num','1')") or die (mysql_error());
} else {
// nada

resulta que sale en blanco eso quiere decir que ese no es el else que contradice el primer if de todos. ¿donde esta el primer el else que contradice el primer if de todos?

muchismas gracias
  #2 (permalink)  
Antiguo 16/10/2005, 15:03
 
Fecha de Ingreso: octubre-2004
Mensajes: 751
Antigüedad: 19 años, 6 meses
Puntos: 4
Buf que lio de condicionales

Te recomiendo que te imprimas el código en una hoja y vayas eliminando hasta que encuentres donde te falta el else o el if o sus cierres o lo que sea...

Saludos,
__________________
sergiold
  #3 (permalink)  
Antiguo 16/10/2005, 15:16
 
Fecha de Ingreso: febrero-2003
Mensajes: 763
Antigüedad: 21 años, 2 meses
Puntos: 2
si funcionar funciona solo que no se donde tocar poner el "else" del primer condicional
  #4 (permalink)  
Antiguo 16/10/2005, 20:10
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Nop... el "else del echo" () corresponde al if de $veces1 == 0.. .

... un consejito: "sé órdenado". Yo acostumbro y recomiendo indentar el código para su fácil visualización y entendimiento. ¿a qué me refiero??, que manejes bloques de código:
Código PHP:
if ($x1 == $num) {
      
// empieza bloque... todo lo que este indentado a esta altura estará dentro del if superior
      
if ($veces1 == 0) {
            
// otro bloque... 
            
echo "Has enviado hoy 2 sms a $num solo se pueden enviar 2 sms al mismo numero por dia";
      } else { 
// ojo!, finaliza el bloque anterior y comienza otro... pero seguimos "dentro" del if inicial
            
$sql "UPDATE usuarios SET veces1=veces1-1 WHERE id=8";
            
mysql_query($sql) or die(mysql_error());
            echo 
"miratu";
      }
      
// supongo aquí irian los otros if's 
Respecto a lo que haces inicialmente:
Código PHP:
$x1 $array[0];
$veces1 $array[1];
$x2 $array[2];
$veces2 $array[3];
$x3 $array[4];
$veces3 $array[5];
$x4 $array[6];
$veces4 $array[7];
$x5 $array[8];
$veces5 $array[9]; 
varios comentarios:
1) Ve la función list()
2) Ve el tema de variables variables
3) Mejor aún, ve que puedes tener "una sola" validación dentro de un ciclo. Podrías manejar matricez... igual aplica con variables variables pero creo es complicarse más.

Puedes simplificar por mucho lo que haces... pero solo comentarios... Un saludo y suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 16/10/2005, 20:49
 
Fecha de Ingreso: agosto-2005
Mensajes: 109
Antigüedad: 18 años, 8 meses
Puntos: 0
Hay un método simple: Utilizar como editor de texto el UltraEdit-32 ( http://www.ultraedit.com/index.php?n...howpage&pid=10 ) que, además de colorear el código muestra la apertura/cierre de paréntesis, llaves, etc... es decir, tú pinchas con el ratón en la llave de apertura y él te marca cual es su llave de cierre (o viceversa, claro está).

Un saludo.
  #6 (permalink)  
Antiguo 16/10/2005, 21:05
 
Fecha de Ingreso: mayo-2005
Mensajes: 72
Antigüedad: 18 años, 11 meses
Puntos: 1
Hola, aki te dejo el codigo explicado:

Código PHP:
<? 
$num
=$_POST['numero']; 

include(
"config.php"); 
$resp=mysql_query('SELECT x1,veces1,x2,veces2,x3,veces3,x4,veces4,x5,veces5 FROM usuarios WHERE id=8'); 
$array mysql_fetch_row($resp); 
$x1 $array[0]; 
$veces1 $array[1]; 
$x2 $array[2]; 
$veces2 $array[3]; 
$x3 $array[4]; 
$veces3 $array[5]; 
$x4 $array[6]; 
$veces4 $array[7]; 
$x5 $array[8]; 
$veces5 $array[9]; 

// primer if 
if ($x1==$num or $x2==$num or $x3==$num or $x4==$num or $x5==$num){ 
// termina el primer if 

if ($x1 == $num) { 
if (
$veces1 == 0) { 
echo 
"Has enviado hoy 2 sms a $num solo se pueden enviar 2 sms al mismo numero por dia"
} else { 
$sql "UPDATE usuarios SET veces1=veces1-1 WHERE id=8"
mysql_query($sql) or die(mysql_error()); 
echo 
"miratu"





} else { 

if (
$x2 == $num) { 
if (
$veces2 == 0) { 
echo 
"Has enviado hoy 2 sms a $num solo se pueden enviar 2 sms al mismo numero por dia"
} else { 
$sql "UPDATE usuarios SET veces2=veces2-1 WHERE id=8"
mysql_query($sql) or die(mysql_error()); 
echo 
"miratu"





} else { 


if (
$x3 == $num) { 
if (
$veces3 == 0) { 
echo 
"Has enviado hoy 2 sms a $num solo se pueden enviar 2 sms al mismo numero por dia"
} else { 
$sql "UPDATE usuarios SET veces3=veces3-1 WHERE id=8"
mysql_query($sql) or die(mysql_error()); 
echo 
"miratu"





} else { 
echo 
"que pasa"

if (
$x4 == $num) { 
if (
$veces4 == 0) { 
echo 
"Has enviado hoy 2 sms a $num solo se pueden enviar 2 sms al mismo numero por dia"
} else { 
$sql "UPDATE usuarios SET veces4=veces4-1 WHERE id=8"
mysql_query($sql) or die(mysql_error()); 
echo 
"miratu"





} else { 


if (
$x5 == $num) { 
if (
$veces5 == 0) { 
echo 
"Has enviado hoy 2 sms a $num solo se pueden enviar 2 sms al mismo numero por dia"
} else { 
$sql "UPDATE usuarios SET veces5=veces5-1 WHERE id=8"
mysql_query($sql) or die(mysql_error()); 
echo 
"miratu"

// Qui terminan los if de $x == $num

// Aki puedes grabar los resultados

// cierre del primer if
?>
no lo probé pero debe de funcionar...
__________________
Diseñador Gráfico / Programador PHP / Cisco Certified Network Associate (CCNA) / CSS / Java Scripting / SQL / C-Scripting / Entre otros...

:cool:
BOX
  #7 (permalink)  
Antiguo 17/10/2005, 07:14
 
Fecha de Ingreso: febrero-2003
Mensajes: 763
Antigüedad: 21 años, 2 meses
Puntos: 2
tu ultimo codigo me da error y cualquiera averiagua donde esta. muchas gracias por vuestras respuesta pero parece que no hay manera de encontrar donde colocar el else del primer if
  #8 (permalink)  
Antiguo 17/10/2005, 11:56
 
Fecha de Ingreso: febrero-2003
Mensajes: 763
Antigüedad: 21 años, 2 meses
Puntos: 2
es raro verdad? donde terminara ese primer if...
  #9 (permalink)  
Antiguo 17/10/2005, 13:54
Avatar de DvD AdN  
Fecha de Ingreso: mayo-2005
Ubicación: Frente al monitor
Mensajes: 610
Antigüedad: 18 años, 11 meses
Puntos: 0
Aconsejo que sigas las recomendaciones de Jam (lo de indentar el código) y asi tu solito veras cual es el error...
__________________
Keep f***ing learning
Ask for f***ing help.
Use f***ing spell check.
Think about all the f***ing possibilities.
  #10 (permalink)  
Antiguo 17/10/2005, 13:59
 
Fecha de Ingreso: febrero-2003
Mensajes: 763
Antigüedad: 21 años, 2 meses
Puntos: 2
no hay el error al final pensado averigue que si era el primer if el else tendria que estar en el ultimo }

gracias por vuestras respuestas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:33.