Foros del Web » Programando para Internet » PHP »

mezclar php y javascript... ayuda...

Estas en el tema de mezclar php y javascript... ayuda... en el foro de PHP en Foros del Web. Saludos a todos. En PHP para hacer cualquier cosa con un formulario hay que cargar o bien la misma pagina o bien otra (a la ...
  #1 (permalink)  
Antiguo 10/05/2004, 17:08
 
Fecha de Ingreso: noviembre-2003
Mensajes: 76
Antigüedad: 20 años, 4 meses
Puntos: 0
mezclar php y javascript... ayuda...

Saludos a todos.
En PHP para hacer cualquier cosa con un formulario hay que cargar o bien la misma pagina o bien otra (a la que apunte el action del form) y con javascript no es necesario porque podemos llamar a una funcion desde el boton de aceptar... y eso da ventajas, pero yo tengo mas conocimientos de PHP que de javascript y a veces los mezclo embebiendo el php dentro del javascript... pero ahora he intentado meter codigo php en una funcion javascript que llama el boton de un formulario y da error...
¿Alguien me puede dar alguna idea? ¿se puede hacer esto?
¿puedo solucionar en php lo de tener que cargar la pagina llamando a un cgi?
¿o puedo llamar desde el onClick del button a un fichero normal .php que tenga solo codigo y desde el cual podria manipular las variables del formulario o hacer una insercion en una base de datos??? es decir, que no se si se puede hacer...
Un poco de ayuda please...

Gracias de antemano.

Última edición por Pakelo; 10/05/2004 a las 17:19
  #2 (permalink)  
Antiguo 10/05/2004, 22:09
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 20 años, 5 meses
Puntos: 1
como generar HTML

con php puedes generar cualquier contenido textual, es decir, puedes generar cualquier código fuente de cualquier lenguaje de programación(creo), inlcuyendo Java Script, acabo de hacer un código para alguien que preguntaba sobre como cambiar las opciones de un select dependiendo de lo que el usuario seleccionara en otro select, sin necesidad de recargar la página, y que las opciones se tomaran de la base de datos... aqui esta la respuesta, checa el código, te va a dar ideas...

el ejemplo maneja alimentos, por ejemplo, si seleccionas en el primer combo box la opcion "verduras" en el segundo te apareceran solo verduras(zanahoria etc). Te incluyo la estructura de la base de datos que hice, la base se llama "alimentos"...

este código lo puedes copiar directamente en el espacio de consultas SQL de phpmyadmin....

CREATE TABLE nombres (
idNombre int(2) NOT NULL auto_increment,
idTipo int(2) NOT NULL default '0',
nombre varchar(200) NOT NULL default '',
UNIQUE KEY idNombre (idNombre),
UNIQUE KEY idNombre_2 (idNombre)
) TYPE=MyISAM;

CREATE TABLE tipos (
idTipo int(2) NOT NULL auto_increment,
tipo varchar(200) NOT NULL default '',
UNIQUE KEY idTipo (idTipo)
) TYPE=MyISAM;

listo, ya tienes tu base de datos, te incluyo el codigo PHP generar la página, no se como se vea aqui, pero mejor copialo y pegalo en un editor para que te resalte sintaxis:

<html>
<head>
<title>Cambio Select Option</title>
<?php
//me conecto a la base de datos, esto lo debes hacer con una función preferentemente para no hacerlo en cada página
$con = mysql_connect("localhost","root","") or die("Error al conectar...");
mysql_select_db("alimentos",$con);

//consulto las opciones principales
$sqlTipos = "SELECT * FROM tipos";

//los resultSet se duplican para mayor claridad, uno se usa para generar el html del combo box, el otro para el javascript
$rssTipos = mysql_query($sqlTipos,$con) or die(mysql_error($con));
$rssJsTipos = mysql_query($sqlTipos,$con) or die(mysql_error($con));

//genero el html para las opciones principales
$htmlTipos = "<option value=\"0\">Seleccione un Tipo de Alimento</option>\n";
while($tipos = mysql_fetch_object($rssTipos))
$htmlTipos .= "<option value=\"".$tipos->idTipo."\">".$tipos->tipo."</option>\n";
?>
<script language="JavaScript">
function cambiaOpciones()
{
tipo = document.getElementById("tipos").value;//obtengo el valor del primer select(opciones principales)
names = document.getElementById("nombres");//hago referencia a el select de nombres
cuantos = names.length;//obtegno su extensión(cuantas opciones tiene)
for(i = 0; i < cuantos; i++)
names.options.remove(0);//elimino las actuales
//dependiendo del tipo, se generan las opciones que le correspnden
//este switch es generado con PHP para que las cpciones correspondan a lo que hay en la base de datos
//te recomiendo que revises el código HTML generado al ejecutar esta página PHP para que veas como queda finalmente el JavaScript
switch(tipo)
{
<?php while($tipoJs = mysql_fetch_object($rssJsTipos)){ ?>//mientras haya tipos, genera opciones
case '<?php echo $tipoJs->idTipo; ?>':
<?php
$sqlOpciones = "SELECT * FROM nombres WHERE idTipo = ".$tipoJs->idTipo;
$rssOpciones = mysql_query($sqlOpciones,$con) or die(mysql_error($con));
while($opcion = mysql_fetch_object($rssOpciones)){
?>
opcion<?php echo $opcion->idNombre; ?> = document.createElement("option");
opcion<?php echo $opcion->idNombre; ?>.value = "<?php echo $opcion->idNombre; ?>";
opcion<?php echo $opcion->idNombre; ?>.text = "<?php echo $opcion->nombre; ?>";
names.options.add(opcion<?php echo $opcion->idNombre; ?> );
<?php } ?>
break;
<?php }?>
default://si no selecciono niguna, deja la opcion default
defaultOp = document.createElement("option");
defaultOp.text = "Primero seleccione Tipo de Alimento";
defaultOp.value = "0";
names.options.add(defaultOp);
break;
}
return true;//siempre es bueno que las funciones te devuelvan algun valor, aunque no tenga utilidad directa
}
</script>
</head>
<body bgcolor="#FFFFFF">
<form name="nombrecualquiera" action="cualquiera.php" method="post">
<table border="1" cellpadding="5" cellspacing="0" bordercolor="#000000">
<tr bordercolor="#FFFFFF">
<td colspan="2">Este formulario cambia la fuente del segundo select(combo box)</td>
</tr>
<tr bordercolor="#FFFFFF">
<td>Tipo de Alimento: </td>
<td><select name="tipos" onChange="cambiaOpciones();">
<?php echo $htmlTipos; ?>
</select></td>
</tr>
<tr bordercolor="#FFFFFF">
<td>Nombre del Alimento: </td>
<td><select name="nombres">
<option value="0">Primero Seleccione Tipo de Alimento</option>
</select></td>
</tr>
</table>
</form>
</body>
</html>

listo, saludos....
  #3 (permalink)  
Antiguo 11/05/2004, 00:27
 
Fecha de Ingreso: noviembre-2003
Mensajes: 76
Antigüedad: 20 años, 4 meses
Puntos: 0
muchas gracias...

Sism82 muchas gracias, estoy viendo tu codigo y aun no he sacado nada en claro (acabo de empezar) pero solo queria darte las gracias
  #4 (permalink)  
Antiguo 24/05/2004, 11:13
 
Fecha de Ingreso: mayo-2004
Mensajes: 1
Antigüedad: 19 años, 10 meses
Puntos: 0
Hola:

En cuanto al codigo anterior, ya obtuve resultados en la pagina, pero mi problema ahora es como puedo manipular los valores de las variables en php?.

Envio mi codigo para que lo observes


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<head>

<?
if(!$_POST) {
?>

<form name="altas" method=POST action="respindex.php">

<table bgcolor="#E9FFFF" align=center border=2>

<td align="right">Nombre completo : </td>
<td align="left"> <input type="text" name="nom" value="" size=35></td><tr>

<td align="right">Apellido paterno :&nbsp;&nbsp; </td>
<td align="left"> <input type="text" name="a_pa" value="" size=35></td><tr>

<td align="right">Apellido materno : </td>
<td align="left"> <input type="text" name="a_ma" value="" size=35></td><tr>

<td align="right">Sexo : </td>
<td align="left">
<SELECT name="h_m">
<option value="">------</option>
<option value=H>Hombre</option>
<option value=M>Mujer</option>
</select>
</td><tr>

<td align="right">Estado civil : </td>
<td align="left">
<SELECT name="e_civ" >
<option value="">---------</option>
<option value=01>Soltero(a)</option>
<option value=02>Casado(a)</option>
<option value=03>Viudo(a)</option>
<option value=04>Divorciado(a)</option>
<option value=05>No determinado</option>
</select>
</td><tr>

<td align="right">C.U.R.P. : </td>
<td align="left"> <input type="text" name="curp" value="" size=19></td><tr>

<td align="right">R.F.C. : </td>
<td align="left"> <input type="text" name="rfc" value="" size=14></td><tr>

<td align="right">Escribe la clave de elector: </td>
<td align="left"> <input type="text" name="elec" value="" size=18></td><tr>

<td align="right">Calle : </td>
<td align="left"> <input type="text" name="calle" value="" size=40></td><tr>

<td align="right">Numero exterior: </td>
<td align="left"> <input type="text" name="ext"
value="" size=10></td><tr>

<td align="right">Numero interior: </td>
<td align="left"> <input type="text" name="int" value="" size=10></td><tr>

<td align="right">Selecciona el estado donde reside: </td>
<td align="left">
<select name="clava">
<option value=""> --------------- </option>
<option value=01> AGUASCALIENTES </option>
<option value=02> BAJA CALIFORNIA </option>
<option value=03> BAJA CALIFORNIA SUR </option>
<option value=04> CAMPECHE </option>
<option value=05> COAHUILA DE ZARAGOZA </option>
<option value=06> COLIMA </option>
<option value=07> CHIAPAS </option>
<option value=08> CHIHUAHUA </option>
<option value=09> DISTRITO FEDERAL </option>
<option value=10> DURANGO </option>
<option value=11> GUANAJUATO </option>
<option value=12> GUERRERO </option>
<option value=13> HIDALGO </option>
<option value=14> JALISCO </option>
<option value=15> MEXICO </option>
<option value=16> MICHOACAN </option>
<option value=17> MORELOS </option>
<option value=18> NAYARIT </option>
<option value=19> NUEVO LEON </option>
<option value=20> OAXACA </option>
<option value=21> PUEBLA </option>
<option value=22> QUERETARO DE ARTEAGA </option>
<option value=23> QUINTANA ROO </option>
<option value=24> SAN LUIS POTOSI </option>
<option value=25> SINALOA </option>
<option value=26> SONORA </option>
<option value=27> TABASCO </option>
<option value=28> TAMAULIPAS </option>
<option value=29> TLAXCALA </option>
<option value=30> VERACRUZ-LLAVE </option>
<option value=31> YUCATAN </option>
<option value=32> ZACATECAS </option>
</select>
</td><tr>
<td align=center><input type=submit value="Siguiente"></td>
<td align=center><input type=reset value="Borrar"></td></span>
</table>
</form>

<?php
} Else {
?>

<form name="altas" method="POST" action=index2.php>
<head>
<?php
$clav =$_POST['clava'];
$cona= mysql_connect("127.0.0.1","root","");
$bdaa= mysql_select_db("artesanos");
$res1= mysql_query("select mun, nommun from cat_loc where ent=$clav group by mun", $cona);
$res2= mysql_query("select mun, nommun from cat_loc where ent=$clav group by mun", $cona);
$htm="<option value=\"0\">Municipio</option>\n";
while($tipoabajo = mysql_fetch_object($res1))
$htm.= "<option value=\"".$tipoabajo->mun."\">".$tipoabajo->nommun."</option>\n";
?>
<script language="JavaScript">
function cambiaopciones()
{
tipob = document.getElementById("tipoabajo").value;//obtengo el valor del primer select(opciones principales)
names = document.getElementById("nombres");//hago referencia a el select de nombres
cuantos = names.length;//obtegno su extensión(cuantas opciones tiene)
for(i = 0; i < cuantos; i++)
names.options.remove(0);//elimino las actuales
//dependiendo del tipo, se generan las opciones que le correspnden
//este switch es generado con PHP para que las cpciones correspondan a lo que hay en la base de datos
//te recomiendo que revises el código HTML generado al ejecutar esta página PHP para que veas como queda finalmente el JavaScript
switch(tipob)
{
<?php while($tipoJs = mysql_fetch_object($res2)){ ?>//mientras haya tipos, genera opciones
case '<?php echo $tipoJs->mun; ?>':
<?php
$sqlOpciones = "SELECT loc, nomloc FROM cat_loc WHERE ent=$clav and mun=$tipoJs->mun" ;
$rssOpciones = mysql_query($sqlOpciones,$cona) or die(mysql_error($cona));
while($opcion = mysql_fetch_object($rssOpciones)){
?>
opcion<?php echo $opcion->loc; ?> = document.createElement("option");
opcion<?php echo $opcion->loc; ?>.value = "<?php echo $opcion->loc; ?>";
opcion<?php echo $opcion->loc; ?>.text = "<?php echo $opcion->nomloc; ?>";
names.options.add(opcion<?php echo $opcion->loc; ?> );
<?php }?>
break;
<?php }?>
default://si no selecciono niguna, deja la opcion default
defaultOp = document.createElement("option");
defaultOp.text = "Primero seleccione un municipio";
defaultOp.value = "0";
names.options.add(defaultOp);
break;
}
return true;//siempre es bueno que las funciones te devuelvan algun valor, aunque no tenga utilidad directa
}
</script>

</head>
<body>
<?
echo "<br>Nombre : ".strtoupper($_POST['nom']).' '.strtoupper($_POST['a_pa']).' '.strtoupper($_POST['a_ma']);
echo "<br>Cred. de Elector :".$_POST['elec'] ;
echo "<br>Estado donde reside : ".$_POST['clava'] ;
$nom = $_POST['nom'];
$clav =$_POST['clava'];
$elec =$_POST['elec'];
$curp =$_POST['curp'];
echo "<br>Sexo :".$_POST['h_m'];
echo "<br>Calle :".$_POST['calle'];
echo "<br>Numero Exterior :".$_POST['ext'];
echo "<br>Numero Interior :".$_POST['int'];
echo "<br>Estado Civil :".$_POST['e_civ'];
echo "<br>C.U.R.P. :".strtoupper($_POST['curp']);
echo "<br>R.F.C. :".strtoupper($_POST['rfc']);

if ((empty($elec) and empty($curp))) {
echo "Debe especificar una clave de elector o una clave de CURP";
echo "</html></body> \n";
exit;
}
}
?>

<table bgcolor="#E9FFFF" align=center border=2>

<td align="right">Selecciona el Municipio donde reside el artesano : </td>
<td align="left">
<select name="tipoabajo" onChange="cambiaopciones();">
<?php echo $htm; ?>
</select>

<input type=hidden name="clava0" value= <? echo $clav; ?>>
<input type=hidden name="clava1" value= <? echo $tipoabajo; ?>>
<input type=hidden name="clava1" value= <? echo $nombres; ? >>


</td><tr>
<br>
<td align="right">Selecciona la localidad : </td>
<td align="left">
<select name="nombres" >
<option value="0">Primero Seleccione Tipo de Alimento</option>
</select>
</td><tr>

<td align=center><input type=submit value="Siguiente"></td>
<td align=center><input type=reset value="Borrar"></td></span>
</table>

</body>
</form>

</div>
</body>
</html>


Entonces, en otra pagina index2, quiero mostrar todos los valores ya capturados.

Lo que esta en rojo, es como intente pasar los valores de las variable, pero no funciono

Me puedes ayudar?

Última edición por oscarpang; 26/05/2004 a las 13:24
  #5 (permalink)  
Antiguo 02/05/2005, 21:39
 
Fecha de Ingreso: marzo-2002
Mensajes: 85
Antigüedad: 22 años
Puntos: 1
ya intentaste ponerle comillas para definir tus valores???

<input type=hidden name="clava0" value="<? echo $clav; ?>">
<input type=hidden name="clava1" value="<? echo $tipoabajo; ?>">
<input type=hidden name="clava1" value="<? echo $nombres; ? >">
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 22:02.