Ver Mensaje Individual
  #5 (permalink)  
Antiguo 25/09/2009, 10:14
Avatar de PacoRuiz
PacoRuiz
 
Fecha de Ingreso: abril-2009
Mensajes: 254
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: mysql_fetch_row

Pongo el código entero. He probado vuestras propuestas y no funcionan, el error debe estar en otro lado. He añadido algunos echo. Muestro el resultado:

Código:
<?php
function suprimehijos($tipo,$opcion){
    if ($opcion<>'opcion3'){
        $result=mysql_query("select tipo from jerarquia where padre = $tipo ");
        $filas=mysql_num_rows($result);
        echo"filas=$filas<br>";
        echo "tipo=$tipo, opcion=$opcion<br>";
        if($filas>0){
            while ($fila=mysql_fetch_row($result)){
                $categoría=$fila[0];
                if($opcion=='opcion1'){
                    mysql_query("delete from tipos where IDtipo=$categoria");
                    suprimehijos($categoría,'opcion1');
                    mysql_query("delete from jerarquia where tipo=$categoria");
                    mysql_query("delete from tipos where IDtipo=$tipo");
                }
                if($opcion=='opcion2'){
                    mysql_query("delete from tipos where IDtipo=$tipo");
                    $opcion="opcion4";
                    echo"voy a llamar a suprimehijos:$categoría,$opcion<br>";
                    suprimehijos($categoría,$opcion);
                }
                if($opcion=='opcion4'){
                   mysql_query("delete from jerarquia where tipo=$categoria AND padre=$tipo");
                   $result=mysql_query("select count (*)from jerarquia where tipo =$categoria");
                   if(!$result){
                        mysql_query("delete from tipos where IDtipo=$categoria");
                   } 
                }
                echo "suprimehijos $categoría,$opcion";
                suprimehijos($categoría,$opcion);
            }
            mysql_query("delete from jerarquia where padre=$tipo");
            mysql_query("delete from tipos where IDtipo=$tipo");
        }
    }
    if($opcion=='opcion3'){
        $result=mysql_query("select padre from jerarquia where tipo = $tipo ");
        while ($fila=mysql_fetch_row($result)){
            $abuelo=$fila[0];
            echo"el abuelo es $abuelo";
            $resultado=mysql_query("select tipo from jerarquia where padre = $tipo ");
            while ($linea=mysql_fetch_row($resultado)){
                $categoria=$linea[0];
                echo"el nieto es $categoria";
                mysql_query("delete from jerarquia where tipo=$categoria");
                mysql_query("Insert jerarquia (tipo,padre) values ('$categoria','$abuelo')");
            }
        }
    
        mysql_query("delete from jerarquia where tipo=$tipo");
        mysql_query("delete from jerarquia where padre=$tipo");
        mysql_query("delete from tipos where IDtipo=$tipo");
        
    }
}
$link=mysql_connect("localhost","root","");
mysql_select_db(dbimagenes,$link);
$tipo=$_POST['tipo'];
$opcion=$_POST['opcion'];
$opcioncat=$_POST['opcioncat'];
suprimehijos($tipo,$opcion);
/*alert
echo "
<script language='JavaScript'>
var prueba = 'La categoría ha sido suprimida corréctamente. Compruebe la nueva clasificación';
alert(prueba);
location.href = \"http://localhost/imagenes/formsuprimetipo.php\";
</script>";
                         */
?>
Y lo que muestra es:

Cita:
filas=1
tipo=16, opcion=opcion2
voy a llamar a suprimehijos:18,opcion4
filas=0
tipo=18, opcion=opcion4
suprimehijos 18,opcion4
filas=0
tipo=18, opcion=opcion4

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\imagenes\prueba.php on line 9
Estoy harto de mirarlo, pero según yo lo veo desde la primera vez que dice filas=0, no debería entrar en el if, y no debería llamar otra vez a suprimehijos, pero lo hace, y luego no lo vuelve a hacer. No entiendo nada.

El caso es que este código de prueba sí funciona:

Código:
<?php
$link=mysql_connect("localhost","root","");
mysql_select_db(dbimagenes,$link);
function suprimehijos($tipo,$opcion){
    if ($opcion<>'opcion3'){
        $result=mysql_query("select tipo from jerarquia where padre = $tipo ");
        $filas=mysql_num_rows($result);
        echo"filas=$filas";
        if(mysql_num_rows($result)<>0){
            while ($fila=mysql_fetch_row($result)){
                echo"hola";
            }
        }
    }
}
$tipo=8;
$opcion='opcion4';
suprimehijos($tipo,$opcion);


?>