Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] if que se cumple siempre aun cuando no debe

Estas en el tema de if que se cumple siempre aun cuando no debe en el foro de PHP en Foros del Web. Hola, con este código lo que pretendo hacer es extraer de la base de datos unas referencias y buscarlas en un fichero csv, las que ...
  #1 (permalink)  
Antiguo 27/10/2014, 16:18
 
Fecha de Ingreso: diciembre-2006
Mensajes: 35
Antigüedad: 17 años, 11 meses
Puntos: 0
if que se cumple siempre aun cuando no debe

Hola, con este código lo que pretendo hacer es extraer de la base de datos unas referencias y buscarlas en un fichero csv, las que no existan en el fichero csv deberían hacer que cumpla el if "if(!stristr($handle, $ref)){" y si que se cumple pero el problema es que se cumple siempre, existan o no las referencias...

¿Alguna idea sobre como lo podría hacer? gracias anticipadas.

Código PHP:
$handle fopen("csv-temp/productos.csv""r");
 
if (
$borrar_productos == "1") {
        echo 
"<br/>Buscando productos que ya no existan...<br/>";
$registros_encontrados $link->query("SELECT * FROM ps_product") or die (mysql_error());
 
while (
$registro mysqli_fetch_array($registros_encontrados)){
              
$ref $registro['reference'];
                          if(!
stristr($handle$ref)){
$buscaid $link->query("SELECT id_product FROM ps_product WHERE reference='$reference'") or die (mysql_error()); $id_product mysqli_fetch_row($buscaid); $id $id_product[0];
    
$link->query("delete from ps_product where reference = $ref");
        
$link->query("delete from ps_product_shop where id_product= $id");
        
$link->query("delete from ps_category_product where id_product= $id");
        
$link->query("delete from ps_product_lang where id_product= $id and id_lang=1");
        
$link->query("delete from ps_product_lang where id_product= $id and id_lang=2");
        
$link->query("delete from ps_product_lang where id_product= $id and id_lang=3");
        
$link->query("delete from ps_specific_price where id_product= $id");
        
$link->query("delete from ps_stock_available where id_product= $id");
        
$link->query("delete from ps_image where id_product= $id");
        
$link->query("delete from ps_image_shop where id_image= $id");
        
$link->query("delete from ps_image_lang where id_image= $id and id_lang=1");
        
$link->query("delete from ps_image_lang where id_image= $id and id_lang=2");
        
$link->query("delete from ps_image_lang where id_image= $id and id_lang=3");
$cuentaid strlen($id);
if (
$cuentaid == or $cuentaid == or $cuentaid == or $cuentaid == or $cuentaid == 5) {  
$caracter1 $id[0];
}
if (
$cuentaid == or $cuentaid == or $cuentaid == or $cuentaid == 5) {  
$caracter2 $id[1];
}
if (
$cuentaid == or $cuentaid == or $cuentaid == 5) {
$caracter3 $id[2];
}
if (
$cuentaid == or $cuentaid == 5) {
$caracter4 $id[3];
}
if (
$cuentaid == 5) {
$caracter5 $id[4];
}
 
if (
$cuentaid == 5) {
$dir "../img/p/".$caracter1."/".$caracter2."/".$caracter3."/".$caracter4."/".$caracter5."/";
}
if (
$cuentaid == 4) {
$dir "../img/p/".$caracter1."/".$caracter2."/".$caracter3."/".$caracter4."/";
}
if (
$cuentaid == 3) {
$dir "../img/p/".$caracter1."/".$caracter2."/".$caracter3."/";
}
if (
$cuentaid == 2) {
$dir "../img/p/".$caracter1."/".$caracter2."/";
}
if (
$cuentaid == 1) {
$dir "../img/p/".$caracter1."/";
}
$ficheroseliminados0;
$handle opendir($dir);
while (
$file readdir($handle)) {
 if (
is_file($dir.$file)) {
  if ( 
unlink($dir.$file) ){
   
$ficheroseliminados++;
  }
 }
}
echo 
"<br/>Producto con referencia: <b> $ref </b> eliminado con éxito<br/>";
 
}
}

  #2 (permalink)  
Antiguo 27/10/2014, 17:19
 
Fecha de Ingreso: octubre-2014
Mensajes: 9
Antigüedad: 10 años
Puntos: 0
Respuesta: if que se cumple siempre aun cuando no debe

supongo que en el csv tendrás algo como 1,2,3,4....(unos ids) podrías hacer un split por comas y usar al función array_search para buscar en el array de string creado con el split.
  #3 (permalink)  
Antiguo 28/10/2014, 02:44
 
Fecha de Ingreso: diciembre-2006
Mensajes: 35
Antigüedad: 17 años, 11 meses
Puntos: 0
Respuesta: if que se cumple siempre aun cuando no debe

Muchas gracias por la idea pero podrías darme por favor un ejemplo de como hacerlo?
  #4 (permalink)  
Antiguo 28/10/2014, 11:01
 
Fecha de Ingreso: octubre-2014
Mensajes: 9
Antigüedad: 10 años
Puntos: 0
Respuesta: if que se cumple siempre aun cuando no debe

Seria algo así pero adaptándolo a tu problema.
Código:
$lista="1,2,3,4";
$ids = split(',', $lista);
$key = array_search('2', $ids); 
var_dump ($key); // int(1)
$key = array_search('7', $ids); // $key = false;
var_dump($key);// bool(false)
  #5 (permalink)  
Antiguo 29/10/2014, 02:27
 
Fecha de Ingreso: diciembre-2006
Mensajes: 35
Antigüedad: 17 años, 11 meses
Puntos: 0
Respuesta: if que se cumple siempre aun cuando no debe

Muchas gracias ekirne me ha servido de mucho.

Etiquetas: cumple, mysql, registro, select, siempre
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 08:28.