Foros del Web » Programando para Internet » PHP »

Funcion en JS con PHP

Estas en el tema de Funcion en JS con PHP en el foro de PHP en Foros del Web. Hola amigos, Sabeis por que haciendo esta funcion me pasa solo la primera vez al siguiente registro. Cada vez q le doy al boton tendria ...
  #1 (permalink)  
Antiguo 21/04/2006, 00:30
Avatar de unaiu  
Fecha de Ingreso: abril-2006
Mensajes: 139
Antigüedad: 18 años
Puntos: 0
Funcion en JS con PHP

Hola amigos,

Sabeis por que haciendo esta funcion me pasa solo la primera vez al siguiente registro.
Cada vez q le doy al boton tendria que pasar hacia delante y solo salta la primera.

function adelante()
{
<?php
$contador++;
if ($contador<mysql_num_rows($result))
{
?>
nombre.value = '<?php echo $matriz[$contador][0] ?>';
ap1.value = '<?php echo $matriz[$contador][1] ?>';
ap2.value = '<?php echo $matriz[$contador][2] ?>';
email.value = '<?php echo $matriz[$contador][3] ?>';
<?php
}
?>

}
  #2 (permalink)  
Antiguo 21/04/2006, 02:00
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 1
No será porque cada vez que das al boton se ejecuta desde cero?.. igual no es asi... pero si fuese el caso se podría devolver algun valor desde la funcion adelante() guardarlo en algun lado y cuando des al boton llamar a esa funcion pero con el parametro anterior --> adelante(old) por ejemplo... y dentro ya comparas, si es el dato que ya mostraste pasar al siguiente...

podría funcionar no...?
  #3 (permalink)  
Antiguo 21/04/2006, 02:05
Avatar de unaiu  
Fecha de Ingreso: abril-2006
Mensajes: 139
Antigüedad: 18 años
Puntos: 0
Hola,
Lo primero gracias por contestar , te lo agradezco mucho .

Tu me dices para devolver el valor del contador, guardarlo en algun sitio y luego cada vez que le doy al boton mandarlo otra vez, no??

No es mala idea , pero la variable esa es una variable de PHP y para hacerle el return y pa mandar tendre muchos problemas no???

Nose, si puedes contestame
GRACIAS
  #4 (permalink)  
Antiguo 21/04/2006, 02:21
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
Cita:
Sabeis por que haciendo esta funcion me pasa solo la primera vez al siguiente registro.
Cada vez q le doy al boton tendria que pasar hacia delante y solo salta la primera.
Cuando haces click en el botón, no se ejecuta código PHP, por lo que sólo se ejecuta una vez.

Cuando ves el resultado de tu navegador, haz click en ver código fuente y pégalo por aquí, p' ver cómo anda la cosa.

No es necesario todo, na' más lo que tiene que ver con esa función.
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #5 (permalink)  
Antiguo 21/04/2006, 02:38
Avatar de unaiu  
Fecha de Ingreso: abril-2006
Mensajes: 139
Antigüedad: 18 años
Puntos: 0
Holaaa,
Gracias por contestar. Ya , me dau cuenta de que el codigo php no se ejecuta ,cada vez que le doy al boton.
Creo que se ejecuta al principio y luego cada vez que le doy adelante();
como tiene el segundo registro siempre guardado , me aperece este mismo.

Nose si es asi pero .... Aqui te dejo el codigo que me saca al ejecutarlo.


<html>
<body>
</body>
</html>
<html>
<head>
<title>ProyectoPHP</title>

<script type="text/javascript">


function carga()
{
0;
nombre.value = 'Unai';
ap1.value = 'Uribe';
ap2.value = 'Aldekoa';
email.value = '[email protected]';
}

function adelante()
{
nombre.value = 'Asier';
ap1.value = 'Cosme';
ap2.value = 'Lopez';
email.value = '[email protected]';

}

function atras()
{
nombre.value = 'Unai';
ap1.value = 'Uribe';
ap2.value = 'Aldekoa';
email.value = '[email protected]';

}
</script>
</head>


<body onLoad=carga();>

<CENTER>

Nombre:<input type="text" name="nombre" ><br><br>

1.Apellido: <input type="text" name="ap1" ><br><br>

2.Apellido: <input type="text" name="ap2" ><br><br>

E-Mail: <input type="text" name="email"><br><br>

<input type="button" name="btnAtras" value="<" onclick=atras();>
<input type="button" name="btnAdelante" value=">" onclick=adelante();>
<br><br>
<input type="button" name="btnGuardar" value="Guardar" onclick=guardar();>
<input type="button" name="btnNuevo" value="Nuevo" onclick=nuevo();>
<input type="button" name="btnCancelar" value="Cancelar" onclick=cancelar();>

</CENTER>



</body>

</html>

Gracias eee
  #6 (permalink)  
Antiguo 21/04/2006, 05:33
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 1
si.. lo de que no se ejecuta ya lo se... yo lo que decia era que se recargase la pagina pero pasandole ese valor del contador y la llamada a la funcion seria: adelante(<php? $_POST['elvalorpasado'] ?>);

tendrías que meter un formulario (que ahi en el codigo no te lo veo) que llamase a esa misma pagina php, y tener un input oculto <input name='elvalorpasado' ...> al que en el onclick del boton le pasas el parametro actual de la base de datos..

elvalorpasado puede ser el email, que el nombre puede ser repetido y sacar el mismo de antes; o sacar la id y pasarla..

algo asi..
<form name="form1" method="post" action="nombrepagina.php">
<input type="hidden" name="valoranterior" id="valor">
<input type="hidden" name="accion" id="accion">
<input type="button" name="btnAdelante" value=">" onclick=" document.getElementById("valor").value=email.value ;
document.getElementById("valor").value="adelante"; ">
</form>

al comienzo de la pagina meter:
<?php
if (isset($_POST['accion'])
{
switch($_POST['accion']
{
case "adelante": //ejecutar codigo de adelante();
break;
case "atras": //ejecutar codigo de atras();
break;
//..... resto de casos
}
}


lo estoy escribiendo sin probarlo asi que no se si tirará.. pero sería algo asi... al menos tal y como yo lo tengo en mente
  #7 (permalink)  
Antiguo 21/04/2006, 05:43
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
Cita:
Hola amigos,

Sabeis por que haciendo esta funcion me pasa solo la primera vez al siguiente registro.
Cada vez q le doy al boton tendria que pasar hacia delante y solo salta la primera.

function adelante()
{
<?php
$contador++;
if ($contador<mysql_num_rows($result))
{
?>
nombre.value = '<?php echo $matriz[$contador][0] ?>';
ap1.value = '<?php echo $matriz[$contador][1] ?>';
ap2.value = '<?php echo $matriz[$contador][2] ?>';
email.value = '<?php echo $matriz[$contador][3] ?>';
<?php
}
?>

}

Es que no lo tiene guardado en ningún lado, es simplemente una confusión. Verás, todo lo que encierres en código PHP se va a ejecutar/generar en el servidor, y nada más.

En ese ejemplo que pongo arriba (y que tú enviaste), estás incrementando el valor de $contador (que si no la habías mencionado antes, ahora tiene ya, después de incrementarse, el valor de 1), luego haces una comparación entre lo que te arroja una consulta y ese 1.

Y como resulta cierta esa comparación, entonces se entra dentro del if y hasta ahí vas bien.

Lo que no está bien es que pienses que cuando entras a la función adelante() desde Javascript (desde el cliente - ya no estás en el servidor) se va a incrementar ese contador (pero ese contador ya no existe, se quedó en el servidor, es más, esa variable ya se destruyó).
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #8 (permalink)  
Antiguo 21/04/2006, 06:05
Avatar de unaiu  
Fecha de Ingreso: abril-2006
Mensajes: 139
Antigüedad: 18 años
Puntos: 0
ola buenas,

Gracias por contestarme, la verdad que nose por donde empezar.

E probado tu codigo pero me da errores supongo que abra algo que falla.
Trankilo que no pasa nada solo me gustaria saber , bueno que me explicases, lo del onClick.

Es decir el codigo que as puesto en el onclick, es que no lo entiendo mu bien.

El valor que pasa que es "$valor" o "$accion".

Gracias por la ayuda , poco a poco boy comprendiendo

Gracias otra vez
  #9 (permalink)  
Antiguo 21/04/2006, 06:14
Tew
 
Fecha de Ingreso: enero-2006
Mensajes: 1.562
Antigüedad: 18 años, 3 meses
Puntos: 17
Y pk no lo haces todo en PHP? Se trata de un formulario para registrar el nombre los apellidos y el email de los usuarios, y supongo ke lo guardaras en alguna bd, no? Pues eso con PHP lo tienes bastante facil. Incluso para mostrar la lista de todos los registrados.
  #10 (permalink)  
Antiguo 21/04/2006, 06:14
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 1
si bueno.. tambien es que yo me explico fatal jeje:

cuando das al boton del formulario te va a enviar todos los datos, inputs, selects etc... lo unico es que los que estan hidden no los ves.. pero estan ahi y al dar al boton se var a cargar con el valor que les pasas; mediante el metodo getElementById() seleccionas el elemento del formulario que tiene la id que pides:
para seleccionar <input type="hidden" name="valoranterior" id="valor"> se pone: document.getElementById("valor") y para modificar su value :
document.getElementById("valor").value y a ese value le pasas el valor actual del email (el que estas mostrando, que es email.value, del input: E-Mail: <input type="text" name="email">

cuando haces el onclick segun el codigo que pusé antes haces tres cosas: le pasas el valor del email al input "valor:

onclick=" document.getElementById("valor").value=email.value ;

le pasas el valor "adelante" al input "accion" (que ahi es donde me equivoqué.. corté y pegue y no modifique el id):

document.getElementById("accion").value="adelante"; ">

y eso te lo manda a la pagina indicada en el post de form:
<form name="form1" method="post" action="nombrepagina.php">

que como es la misma pagina te cargará esa pagina pero con los valores que tenia el email y con accion="adelante"

luego ya se ejecuta el codigo php, seleccionando con el switch entre las diferentes opciones

Cita:
<?php
if (isset($_POST['accion'])
{
switch($_POST['accion']
{
case "adelante": //ejecutar codigo de adelante();
break;
case "atras": //ejecutar codigo de atras();
break;
//..... resto de casos
}
}
isset($_POST['accion']) comprueba que hay un valor enviado y el switch ya selecciona un camino u otro dependiendo del valor de ese post. tu tendrías que programar lo de (//ejecutar codigo )

y dentro de ese codigo obtienes el valor del email anterior con $_POST['valor'] del input oculto anterior, luego haces el bucle con los valores de la base de datos, mientras no sea ese valor realizas el bucle y en cuanto encuentre ese valor cojes el siguiente..
  #11 (permalink)  
Antiguo 21/04/2006, 06:21
Avatar de unaiu  
Fecha de Ingreso: abril-2006
Mensajes: 139
Antigüedad: 18 años
Puntos: 0
Muchas gracias a todos soys la ostia,:)

Ahora me toca ami , aber si hay suerte y soy capaz de hacerlo.

Muxas gracias otra vez
  #12 (permalink)  
Antiguo 21/04/2006, 06:29
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 19 años, 5 meses
Puntos: 1
de nada hombre.. a ver si te conseguí ayudar en algo y te funciona
  #13 (permalink)  
Antiguo 24/04/2006, 01:55
Avatar de unaiu  
Fecha de Ingreso: abril-2006
Mensajes: 139
Antigüedad: 18 años
Puntos: 0
Una pequeña pregunta, los botones que ejecutan el onclick(); no deberian de ser submit????

Es que puesto hasi no me da ningun error, pero tampoco me hace nada .

Por favor si sabes algo por favor contestame.
  #14 (permalink)  
Antiguo 24/04/2006, 02:02
Avatar de unaiu  
Fecha de Ingreso: abril-2006
Mensajes: 139
Antigüedad: 18 años
Puntos: 0
Y como pondria el valor que me llega $_POST['valor'] en un cuadro de texto
del formulario????

Espero que no os moleste tanta preguntit, Gracias a todos
  #15 (permalink)  
Antiguo 24/04/2006, 02:32
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
Y como pondria el valor que me llega $_POST['valor'] en un cuadro de texto
del formulario????
www.php.net/variables.external
Tan simple como:
Código PHP:
<input type="text" value="<?php echo $_POST['valor'?>">
Eso es HTML... antes de PHP.

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #16 (permalink)  
Antiguo 24/04/2006, 02:50
Avatar de unaiu  
Fecha de Ingreso: abril-2006
Mensajes: 139
Antigüedad: 18 años
Puntos: 0
si eso si , pero cuando yo ago un submit y boy a codigo PHP y llamo a la misma pagina en la cual hay ya 4 cuadros de texto.Como aria referencia a los cuadro de textos que ya existen de antes .

Ejem:

<?php


if (isset($_POST['accion']) )
{

switch($_POST['accion'])
{
case "adelante": $valor= $_POST['valor'];
$contador=0;
while ($contador<mysql_num_rows($result))
{
if ($valor==$matriz[$contador][3])
{
**********-****************** ***Aqui como aria referencia a los
de abajo.****************
*********************

}
$contador++;
}
break;
}
}
?>

Nombre:<input type="text" name="nombre" ><br><br>

1.Apellido: <input type="text" name="ap1" ><br><br>

2.Apellido: <input type="text" name="ap2" ><br><br>

E-Mail: <input type="text" name="email"><br><br>




<form name="form1" method="post" action="proyectoPHP(prueba7)submit.php">

<input type="hidden" name="valoranterior" id="valor">
<input type="hidden" name="accion" id="accion">


<input type="submit" name="btnAdelante" value=">" onclick=" document.getElementById("valor").value=email.value ; document.getElementById("accion").value="adelante" ;">
  #17 (permalink)  
Antiguo 24/04/2006, 03:00
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
Como aria referencia a los cuadro de textos que ya existen de antes .
Tú misma(o) lo dices: $_POST['valor']... "valor" correspondería al name por recojer.

Lee el enlace que dejé.
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #18 (permalink)  
Antiguo 24/04/2006, 03:04
Avatar de unaiu  
Fecha de Ingreso: abril-2006
Mensajes: 139
Antigüedad: 18 años
Puntos: 0
Ya lo siento pero no te entiendo.
$_POST['valor'] tiene el valor del cuadro de texto email.(email.value) que
uso para saber donde esta el registro en cada momento.

No entiendo lo del name por recoger.

lo siento,

gracias por contestar,
  #19 (permalink)  
Antiguo 24/04/2006, 03:07
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
$_POST['nombre']
$_POST['api1']
$_POST['api2']
$_POST['email']

edito:

Vi tu código y está muy desorganizado. Trata de mantener tu código más limpio, comentado, sangrado. Eso te ayudará a realizar aplicaciones más complejas.
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #20 (permalink)  
Antiguo 24/04/2006, 03:23
Avatar de unaiu  
Fecha de Ingreso: abril-2006
Mensajes: 139
Antigüedad: 18 años
Puntos: 0
OK, perdona ,es que soy incapaz de hacer que me funcione, en fin muchas gracias otra vez.
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 13:45.