Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-01-2018
jhonalone jhonalone is offline
Miembro
 
Registrado: Sep 2007
Ubicación: Madrid
Posts: 405
Poder: 11
jhonalone Va por buen camino
pasar valor de HTML a PHP

Hola a todos.
intento pasar un valor desde HTML, mediante JavaSccript hasta PHP, para obtener un array de un fichero PHP y utilizarlo en HTML mediante una función de JavaScript.

El valor que obtengo para LOCALIZAR el array de PHP siempre es CERO con el código siguiente:
<html>
<body>

Código PHP:
<?php
if (file_exists("fichero.txt"))
    {       
    
$fa2 file("fichero,txt"); // leemos todo el fichero en un array
    
}
?>


<script>
function Rellenar()
{    
indice = (document.getElementById('Nombres')).selectedIndex;
document.encuesta.Control1.value = indice.toString();
    
<?php
$i3 
= ($_GET["Control1"]);
$i2 intval($i3);

$text2 explode("|",rtrim(utf8_encode($fa2[$i2])));

?>
var datos = [];
 datos=<?php echo json_encode($text2);?>;    //para pasar todo el array a Javascript
.....
.....(El código sigue...)


</Script>
Utilizando la información del array "datos" siempre obtengo el primer registro del array "$fa2"
ya que en "$i2" siempre vale "CERO" (aunque cambie el ítem seleccionado de "(document.getElementById('Nombres')).selectedIndex;" en la lista del <select>

"Nombres" es una lista "select" de HTML
"datos" un array convertido desde una línea de un fichero PHP

Agradecería un poquito de ayuda.
Gracias anticipadas.

Un saludo.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
  #2  
Antiguo 16-01-2018
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: Jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 5.718
Poder: 19
Ñuño Martínez Va camino a la famaÑuño Martínez Va camino a la fama
A parte de que si no existe el fichero no haces nada (debería, al menos, devolver un mensaje de error) y que acceder directamente a los valores de $_GET es muy mala idea (habría que hacer alguna comprobación de que el dato se recibe y está dentro de lo esperado), parece que el problema es de sintaxis. Asegúrate de que el servidor está en modo depuración y devuelve todos los avisos y mensajes de error, y usa el depurador de tu navegador para ver qué devuelve exactamente en cada petición.

[edito]Acabo de ver dónde está el problema, así que añado la solución: USAR CONSTANTES. A ver si lo pillas.

Tú pones:
Código PHP:
<?php
  
if (file_exists("fichero.txt"))
    {       
    
$fa2 file("fichero,txt"); // leemos todo el fichero en un array
    
}
Yo hubiera puesto
Código PHP:
<?php
   
if (!file_exists ("fichero.txt")) die ('No existe el fichero.txt');
   
$fa2 file("fichero,txt"); // leemos todo el fichero en un array
   
if ($fa2 === FALSE) die ('No pude leer fichero.txt');
Antes de seguir, haz el cambio, tal cual, y mira lo que pasa. ¿Sorprendido? ¿Lo has visto?

La solución que propongo, y que en mi opinión habría que usar siempre, es esta:
Código PHP:
<?php
  define 
('ARCHIVO_DATOS''fichero.txt');

  if (!
file_exists(ARCHIVO_DATOS))
    die (
'<pre>no encuentro el fichero "'.ARCHIVO_DATOS.'".</pre>');
  
$fa2 file(ARCHIVO_DATOS); // <-- Aquí es donde estaba el fallo.
  
if ($fa2 === FALSE// <-- Con esta línea hubieras encontrado el problema.
    
die ('<pre>No pude leer el fichero "'.ARCHIVO_DATOS.'".</pre>');
...
  if (!isset (
$_GET['Control1']))
    die (
'<pre>No recibí nada por el parámetro "Control1".</pre>');
  if (!
is_numeric ($_GET['Control1']))
    die (
'<pre>El parámetro "Control1" debe ser un número.</pre>');
...
Es decir: comprueba los valores siempre.
[/edito]
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine

Última edición por Ñuño Martínez fecha: 16-01-2018 a las 13:24:25. Razón: Encontrado el problema y puesta la solución.
Responder Con Cita
  #3  
Antiguo 17-01-2018
jhonalone jhonalone is offline
Miembro
 
Registrado: Sep 2007
Ubicación: Madrid
Posts: 405
Poder: 11
jhonalone Va por buen camino
¡¡Muchas gracias ñuño!!
A veces... con las prisas nos olvidamos de las "buenas prácticas..."

El fichero existe, pues lo he comprobado vía ftp.

Sospecho que el problema está en la llamada
Código PHP:

$i3 
= ($_GET["Control1"]); 
Porque estoy haciendo la llamada desde la misma página sin recargar.

De todos modos, como mi intención era rellenar los datos de un formulario, con los obtenidos del fichero php y, puesto que no conseguía pasar la variable selectedIndex del <select>, busqué la solución a través de un array desde JavaScript.

La solución ha quedado de la siguiente manera, por si interesa a alguien:

Código PHP:
<script>

// creamos la matriz
function HazArray()
{
 datos = new Array (); 

<?php        
php
  define 
('ARCHIVO_DATOS''fichero.txt');

  if (!
file_exists(ARCHIVO_DATOS)) // Aviso si no encuentra el fichero
    
die ('<pre>no encuentro el fichero "'.ARCHIVO_DATOS.'".</pre>');
  
$fa2 file(ARCHIVO_DATOS); // leemos todo el fichero en un array php
  
if ($fa2 === FALSE// Aviso si no recibió los datos del fichero
    
die ('<pre>No pude leer el fichero "'.ARCHIVO_DATOS.'".</pre>');

    
$size count($fa2);    
    
for(
$i=0$i<$size$i++) 
    {        
    
$fa2[$i] = utf8_encode($fa2[$i]);
    
$text explode("|",rtrim($fa2[$i]));    
    
?>
    
    datos.push(<?php echo json_encode($text);?>);
    
    <?php    
    
}
?>                        
}

//El select queda así
 <select name="Nombres" size="50" id="Nombres" onChange="Rellenar()" > </select>

// Actualizamos los datos del formulario
function Rellenar()
{    
indice = (document.getElementById('Nombres')).selectedIndex;

document.encuesta.item01.value = datos[indice][0];
document.encuesta.item02.value = datos[indice][1];
document.encuesta.item03.value = datos[indice][2];
document.encuesta.item04.value = datos[indice][3];
document.encuesta.item05.value = datos[indice][4];
document.encuesta.item06.value = datos[indice][5];
document.encuesta.item07.value = datos[indice][6];
document.encuesta.item08.value = datos[indice][7];
document.encuesta.item09.value = datos[indice][8];
document.encuesta.MultiText1.value = datos[indice][9];
document.encuesta.MultiText2.value = datos[indice][10];
document.encuesta.MultiText3.value = datos[indice][11];
document.encuesta.email.value = datos[indice][13];
    
}

</script>
Sigo sin saber cómo pasar los datos desde JavaScript o de HTML a PHP en la misma página.
Comprendo que es complicado. Lo intenté con Ajax pero tampoco lo conseguí.
Ahora, (de momento), ya no me preocupa demasiado.

Saludos Ñuño. (Me gusta ésa reivindicación de nuestra Ñ)

Saludos a todos.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
  #4  
Antiguo 18-01-2018
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: Jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 5.718
Poder: 19
Ñuño Martínez Va camino a la famaÑuño Martínez Va camino a la fama
En realidad el fallo era que la segunda vez que escribes el nombre del archivo utilizaste la coma (,) en vez del punto (.). Un fallo tonto muy común. Por eso recomendé usar constantes, porque así sólo escribes el nombre una vez.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #5  
Antiguo 18-01-2018
jhonalone jhonalone is offline
Miembro
 
Registrado: Sep 2007
Ubicación: Madrid
Posts: 405
Poder: 11
jhonalone Va por buen camino
¡Toda la razón!
Gracias por tener tan buena vista y hacérmelo ver.
En realidad he perdido mucho tiempo con ésto.
Probablemente hubiera funcionado, pero ya que lo tengo resuelto, no voy a dedicarle más tiempo ahora.... quizá en un futuro.
Esta experiencia ha servido para encontrar una segunda alternativa. Quizá más elegante que andar mezclando HTML con JavaScript y con PHP juntos y además revueltos.

Gracias por todo tu esfuerzo y tu disposición de ayudar.
Un cordial saludo.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
cómo pasar valor de variable php a formulario html Casimiro Notevi PHP 29 16-10-2012 19:49:11
Pasar de HTML a PHP Nekane PHP 4 25-01-2008 20:42:24
Capturar valor Html lucasarts_18 HTML, Javascript y otros 8 02-01-2007 21:34:36
Aplicacion pasar de HTml a Excel Rabata Varios 0 07-06-2006 10:57:12
Componente pasa pasar de HTML a PDF´s TinkerBell Internet 0 04-04-2005 11:57:40


La franja horaria es GMT +2. Ahora son las 19:12:01.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi