SoloCodigo

Programación Web y Scripting => PHP => Mensaje iniciado por: javier3 en Miércoles 5 de Enero de 2005, 04:01

Título: Ayuda Con La Funcion Switch
Publicado por: javier3 en Miércoles 5 de Enero de 2005, 04:01
holaaa a todos necesito evaluar de la siguiente manera no se si se puede hacer bueno no me sale por eso les pregunto porfa :
miren es parte del codigo k estoy haciendo

   $id_cuenta=$rs_asiento->Fields("idccodcu");
   switch ($id_cuenta){
      case "40" or "4011" or "401101":
         if ($rs_asiento->Fields("scccdebe")=="x"){ $sccncarg=$igv; $sccnabon=0; $sccnafec=1;}else{ $sccncarg=0; $sccnabon=$igv; $sccnafec=0; }
      break;
      case "42" or "4211" or "421101":
         if ($rs_asiento->Fields("scccdebe")=="x"){ $sccncarg=$subtotal; $sccnabon=0; $sccnafec=1;}else{ $sccncarg=0; $sccnabon=$subtotal; $sccnafec=0; }
      break;
      case "60" or "6011" or "601101":
         if ($rs_asiento->Fields("scccdebe")=="x"){ $sccncarg=$scrntota; $sccnabon=0; $sccnafec=1;}else{ $sccncarg=0; $sccnabon=$scrntota; $sccnafec=0; }
      break;
   }

bueno necesito evaluar esos valores ya k la variable $id_cuenta puede tener cualquiera de esos valores y en ese caso k ejecute esa sentencia, pero cuando lo ejecuto siempre me ejecuta el primer case, ahora todo esto esta dentro de un while k va leendo los registros de una tabla noo asi k $id_cuenta cambia de valor y no mantiene siempre un valor pero creo k no reconoce el or ó el and k puediera utilizar ayudenme porfa urgente gracias
Título: Re: Ayuda Con La Funcion Switch
Publicado por: Informix en Miércoles 5 de Enero de 2005, 04:33
Javier3

Los operadores en PHP son los siguientes

AND ---> &&
OR   ---> ||
NOT --->  !

prueba con tu codigo asi:

Código: Text
  1.  
  2. $id_cuenta=$rs_asiento->Fields("idccodcu");
  3. switch ($id_cuenta){
  4. case "40" || "4011" || "401101":
  5. if ($rs_asiento->Fields("scccdebe")=="x"){ $sccncarg=$igv; $sccnabon=0; $sccnafec=1;}else{ $sccncarg=0; $sccnabon=$igv; $sccnafec=0; }
  6. break;
  7. case "42" || "4211" || "421101":
  8. if ($rs_asiento->Fields("scccdebe")=="x"){ $sccncarg=$subtotal; $sccnabon=0; $sccnafec=1;}else{ $sccncarg=0; $sccnabon=$subtotal; $sccnafec=0; }
  9. break;
  10. case "60" || "6011" || "601101":
  11. if ($rs_asiento->Fields("scccdebe")=="x"){ $sccncarg=$scrntota; $sccnabon=0; $sccnafec=1;}else{ $sccncarg=0; $sccnabon=$scrntota; $sccnafec=0; }
  12. break;
  13. }
  14.  
  15.  

Por cierto utiliza los tags de codigo para que se pueda leer mejor

 :kicking:
Título: Re: Ayuda Con La Funcion Switch
Publicado por: mateamargo en Jueves 20 de Enero de 2005, 16:17
Según tengo entendido en Javscript (no sé si lo habrán cambiado en PHP) la instrucción Swtich no se puede usar de la forma en la que vos la llamás
Por ejemplo:

Código: Text
  1.  
  2. switch(numero)
  3. {
  4.  case 1 || 2:
  5.   alert("hola");
  6.  default:
  7.   alert("chau");
  8. }
  9.  
  10.  

esto estaría mal, ya que si querés usar instrucciones para más de una condición lo tenés que hacer así:

Código: Text
  1.  
  2. switch(numero)
  3. {
  4.  case 1:
  5.  case 2:
  6.   alert("hola");
  7.  default:
  8.   alert("chau");
  9. }
  10.  
  11.  

Espero que te sirva.
Saludos.
Título: Re: Ayuda Con La Funcion Switch
Publicado por: Atondo en Domingo 23 de Enero de 2005, 01:20
solo es un Comentario:
case "40" : (aqui, para mayor seguridad separa los : de la instrucción un espacio  no los pongas inmediatamente despues de ella )

:question: :question: :question: :question:
Título: Re: Ayuda Con La Funcion Switch
Publicado por: mateamargo en Domingo 23 de Enero de 2005, 02:10
Cita de: "Atondo"
solo es un Comentario:
case "40" : (aqui, para mayor seguridad separa los : de la instrucción un espacio  no los pongas inmediatamente despues de ella )

:question: :question: :question: :question:
 :huh: ¿seguridad de qué?
Título: Re: Ayuda Con La Funcion Switch
Publicado por: Geo en Domingo 23 de Enero de 2005, 19:57
Como mateamargo menciona, en lugar de esto:

Código: Text
  1.  
  2. switch ($id_cuenta) {
  3. case "40" or "4011" or "401101":
  4.  
  5.  

debieras usar:

Código: Text
  1.  
  2. switch ($id_cuenta) {
  3.   case "40":
  4.   case "4011":
  5.   case "401101":
  6.   ....
  7.   break;
  8.   ....
  9. }
  10.  
  11.  

Y procura incluir una opción por defecto (default) :).

Cita de: "Informix"
Los operadores en PHP son los siguientes

AND ---> &&
OR ---> ||
NOT ---> !
PHP si soporta los operadores "texto": and y or :).

Saludos,
José Jorge (Geo).