Ver Mensaje Individual
  #3 (permalink)  
Antiguo 20/07/2004, 20:58
netoec84
 
Fecha de Ingreso: julio-2004
Ubicación: Quito
Mensajes: 123
Antigüedad: 19 años, 9 meses
Puntos: 0
Muchas gracias Cluster por tu respuesta... bueno en realidad me ha ayudado bastante... estoy realizando el pseudo interprete en php pero sin crear el archivo... ahora tengo problemas al conservar la información que guardo en las variables que se crean dinamicamente. Al inicio se crean totas las variables que en pseudo lenguaje se especifica y se inicializan con "0", todo funciona hasta que pide ingresar el dato, para lo que cree un formulario con un campo con el nombre de la variable en donde se debe guardar el valor, lo malo es que cuando se procesa se pierde el valor de las variables, estoy usando session_register(.....) para tratar de conservar todas las variables que se generan dinamicamente pero como he dicho cuando el formulario es procesado unicamente se conserva el valor que es ingresado en el formulario, no se cual es mi error, ojala me puedan ayudar... el codigo que estoy usando es este:

Código PHP:
<?
//include ("funciones.php");

$archivo file("prog.txt");
$lineas count($archivo);
//$contenido = "<?\n";

if (isset($dato)) $k $dato;
else 
$k 0;

for(
$i=$k$i $lineas$i++)
{
    
$codigo[$i] = explode ("\t"$archivo[$i]);
    
$operacion $codigo[$i][1][0].$codigo[$i][1][1];
    
$op1 $codigo[$i][1][2].$codigo[$i][1][3].$codigo[$i][1][4];
    
$op2 $codigo[$i][1][5].$codigo[$i][1][6].$codigo[$i][1][7];
    
$op3 $codigo[$i][1][8].$codigo[$i][1][9].$codigo[$i][1][10];
    
/*echo "<b>operacion:</b> " . $operacion;
    echo " <b>op1:</b> " . $op1;
    echo " <b>op2:</b> " . $op2;
    echo " <b>op3:</b> " . $op3;*/
    
if (eregi("^[+]"$operacion))
    {
        
//echo "Operador +";
        
switch ($operacion[1])
        {
            case 
0:
                
//$contenido .= '$var_' . "$op3=\$var_" . $op1 .";\n";
                
$nom_var1 'var_' "$op3"
                
$nom_var2 'var_' "$op1";
                
session_register("$nom_var1"); 
                $
$nom_var1 = $$nom_var2;
                print 
" <i><b>Movido:</b> $$nom_var2 a $$nom_var1</i>";
                break;
            case 
1:
                print 
" <i>Sumar</i>";
                break;
            case 
2:
                print 
" <i>Multiplicar</i>";
                break;
            case 
3:
                print 
" <i>Elevar al cuadrado</i>";
                break;
            case 
4:
                print 
" <i>Comparar por igual</i>";
                break;
            case 
5:
                print 
" <i>Comparar por mayor</i>";
                break;
            case 
6:
                print 
" <i>Extraer elemento i de un vector</i>";
                break;
            case 
7:
                print 
" <i>Incremente i y pruebe</i>";
                break;
            case 
8:
                echo 
IngresarDatos($codigo$i$op3);
                break 
2;
            case 
9:
                print 
" <i>Stop</i>";
                break;
            default:
                print 
" <i>ERROR</i>";
        }
    }
    elseif (
eregi("^[-]"$operacion))
    {
        
//echo "Operador -";
        
switch ($operacion[1])
        {
            case 
0:
                
//$contenido .= '$var_' . $codigo[$i][0] . "=$op1$op2$op3;\n";
                
$nom_var 'var_' $codigo[$i][0];
                
$cont_var "$op1$op2$op3";
                
session_register("$nom_var"); 
                $
$nom_var $cont_var;
                print 
" <i><b>Asignado:</b> $cont_var a $$nom_var</i>";
                break;
            case 
1:
                print 
" <i>Restar</i>";
                break;
            case 
2:
                print 
" <i>Dividir</i>";
                break;
            case 
3:
                print 
" <i>Sacar raiz cuadrada</i>";
                break;
            case 
4:
                print 
" <i>Comparar por diferente</i>";
                break;
            case 
5:
                print 
" <i>Comparar por menor</i>";
                break;
            case 
6:
                print 
" <i>Poner un valor en la posicion i de un vector</i>";
                break;
            case 
7:
                print 
" <i>No definido</i>";
                break;
            case 
8:
                print 
" <i>Impresion en pantalla</i>";
                break;
            case 
9:
                
$zona 1;
                print 
" <br><i><font color=\"red\">Fin de Definicion de zona <b>$zona</b> </font></i>";
                
$zona++;
                break;
            default:
                print 
" <i>ERROR</i>";
        }
    }
    else
    {
        echo 
"ERROR OPERADOR NO VALIDO";
    }
    echo 
"<br>";
    
}



//$contenido .= "-?->\n";

// $fp = fopen("traycomp.php","w+"); 
// fwrite($fp, $contenido); 
// fclose($fp); 

echo "<b>\$var_001:</b> " $var_001 "<br>";
echo 
"<b>\$var_005:</b> " $var_005 "<br>";
echo 
"<b>\$var_000:</b> " $var_000 "<br>";



function 
IngresarDatos ($codigo$i$op3)
{
        
$dato $i 1;
        @
$htmlID .= "<form name=\"datos\" method=\"post\" action=\"principal.php\">";
        @
$htmlID .= "<p><b>" $codigo[$i][2] . ":</b> <input type=\"text\" name=\"var_$op3\">";
        @
$htmlID .= "<input type=\"hidden\" name=\"dato\" value=\"$dato\"></p>";
        @
$htmlID .= "<p><input type=\"submit\" name=\"Submit\" value=\"Enviar...\"></p></form>";
        return 
$htmlID;
}

?>
Si quieren probarlo esta en esta dirección:
http://descargas.portalquito.com/principal.php
Si observan al final se imprimen 3 variables que a medida que se van procesando los formularios estas pierden su valor y solo lo conserva la ultima.

Gracias.

pd. el programa en el pseudo lenguaje esta en la misma direccion q' especifique en el anterior mensaje.