• Viernes 8 de Noviembre de 2024, 04:34

Autor Tema:  Re: Duda Codigo If  (Leído 1138 veces)

sheilac

  • Miembro activo
  • **
  • Mensajes: 98
    • Ver Perfil
Re: Duda Codigo If
« en: Jueves 25 de Octubre de 2007, 04:07 »
0
:o Hola
tengo un problema con un codigo
tengo un if donde obtengo los datos con un array para saber si los datos estan en una tabla entonces hago un update si no estan hago un insert.
El problema es que cuando estoy en el else (la parte del insert) pierdo los datos del array.
Probe a declarar las variables globales e igual pierdo los valores.
Espero me puedan asesorar
dejo el codigo a ver que piensan
Código: Text
  1.  
  2.  
  3.  if ($action=="subir") {
  4.                    copy($File, DIR_FS_CATALOG_IMAGES . $File2);
  5.  
  6.     $cate_file=fopen(DIR_FS_CATALOG_IMAGES . "catart.txt","r");
  7.    
  8.      while (!feof($cate_file)){
  9.  
  10.       $trozos=array();
  11.      
  12.        $linea=fgets($cate_file);
  13.       echo $linea . '<br>';
  14.        $trozos=explode(';',$linea);
  15.        if(strval($trozos[11])==0) {
  16.          $trozos[11]=NULL;
  17.        }
  18.        if($trozos[12]=='0') $trozos[12]='';
  19.        if($trozos[2]=='0') $trozos[2]='';
  20.      if (strlen($trozos[0]>0)) {
  21.              $consulta=tep_db_query('select * from products,categories where  categories.categories_code="' . $trozos[1] . '" and products.products_code="' . $trozos[0] . '"');
  22.            
  23.        if (($consulta1 = tep_db_fetch_array($consulta))){
  24.        //tep_db_query('update products_to_categories set categories_code="' . $trozos[1] . '" , products_code="' . $trozos[0] . '" where categories_id=' . $consulta1['categories_id']  and 'products_id=' . $consulta3['products_id']);
  25.          
  26.          echo 'Actualizado ...';
  27.        
  28.       $products_id = $consulta1['products_id'];
  29.       $categories_id = $consulta1['categories_id'];
  30.       $products_code = $consulta1['products_code'];
  31.       $categories_code = $consulta1['categories_code'];
  32.       echo 'productos id';
  33.       echo $products_id;
  34.       echo 'productos codigo';
  35.       echo $products_code;
  36.      
  37.       echo 'Categorias id';
  38.       echo $categories_id;
  39.       echo 'Categorias codigo';
  40.       echo $categories_code;
  41.  
  42.           }
  43.        else {
  44.      
  45.         $consulta=tep_db_query('select * from products,categories where  categories.categories_code="' . $trozos[1] . '" and products.products_code="' . $trozos[0] . '"');
  46.            
  47.       $consulta1 = tep_db_fetch_array($consulta);    
  48.       echo var_dump($consulta1);  
  49.       $products_id = $consulta1['products_id'];
  50.       $categories_id = $consulta1['categories_id'];
  51.      
  52.        //tep_db_query("INSERT INTO products_to_categories (categories_id,products_id,products_code,categories_code) VALUES (" . $categories_id . "," . $products_id . ",'" . $trozos[0] . "','" . $trozos[1] . "')");
  53.                
  54.         $categories_id = tep_db_insert_id();
  55.          //tep_db_query("insert into categories_description (categories_id,categories_name) values ("  . $categories_id . ", '" . $trozos[2] . "')");
  56.          echo 'Agregado...'&#59;
  57.        
  58.       //echo var_dump($consulta1);
  59.       echo $products_id;
  60.       echo $categories_id;
  61.      
  62.        
  63.       }
  64.        
  65.        echo $trozos[2] . '<br>';
  66.     }
  67.    
  68.    
  69.      }
  70.    
  71.     fclose($cate_file);
  72.     //echo tep_redirect('categories.php');
  73.   }
  74.  
  75.  

la solucion que encontre fue repitiendo la parte del array abajo, pero entonces no me hace la parte del update solo la del insert, no creo debiera tener que repetir ese codigo pero por ahora es lo unico que se me ocurrio
agradezco si me pueden asesorar , gracias
desde ya muchisimas gracias

-DriverOp-

  • Miembro activo
  • **
  • Mensajes: 81
    • Ver Perfil
Re: Duda Codigo If
« Respuesta #1 en: Jueves 25 de Octubre de 2007, 14:53 »
0
Hola...

Eh... esta línea:
Código: Text
  1. if (($consulta1 = tep_db_fetch_array($consulta))){
  2.  
Aunque a primera vista parece que estás haciendo una comparación, en realidad estás haciendo una asignación (las asignaciones siempre devuelven "verdadero"). No te preocupes, cuando yo comencé a programar en PHP, cierta vez me partí la cabeza 4 horas seguidas tratando de encontrar un bug en mi script y resultó que... estaba acostumbrado a otro lenguaje donde el signo "=" tiene significado diferente dependiendo de dónde se usa, pero en PHP el "=" SOLO se usa para asignar variables.
La solución:
Código: Text
  1. if (($consulta1 == tep_db_fetch_array($consulta))){
  2.  
(¿Notas el doble signo "="?)

Saludos...