Foros del Web » Programando para Internet » PHP »

Principiante en PHP

Estas en el tema de Principiante en PHP en el foro de PHP en Foros del Web. Hola amigos me acabo de afiliar a este foro y me gustaria tocare le siguiente tema: 1.- Estoy trabajando de inicio con PHP y haciendo ...
  #1 (permalink)  
Antiguo 13/08/2004, 10:32
 
Fecha de Ingreso: agosto-2004
Mensajes: 32
Antigüedad: 13 años, 4 meses
Puntos: 0
Principiante en PHP

Hola amigos me acabo de afiliar a este foro y me gustaria tocare le siguiente tema:
1.- Estoy trabajando de inicio con PHP y haciendo ciertas pruebas.
2.- Quiero que mi programacion quede guardado en un proyecto prueba.php. eso esta OK.
4.- No he creado ningun formulario para manejarla.
3.- Quiero asignar ese proyecto para poderlo ver en mi pagina web, que esta alojada fuera de mi pais en un webhosting lejano.

RESUMEN: Deseo crear mi formulario con PHP y conectarlo con Mysql (base de datos manejada por nuestro webhosting)

4.- Como conecto ese formulario con mi base de datos?
NOta: tengo acceso al servidor FTP y a cualquier cambio y o diseño de paginas.

gracias por su pronta ayuda.
Jorge
  #2 (permalink)  
Antiguo 13/08/2004, 11:39
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No comprendo bien la situación que tienes .. pero te explico como debe ser:

Servidor con PHP y Mysql
Script.php de proceso .. este será el que conecte a tu BD para hacer las consultas pertinentes SQL a tu BD y obtener/insertar/modificar datos.


Tu formulario HTML .. puede estar o no en el mismo servidor que corre PHP y Mysql (es lo normal .. pero no necesario).
formulario.html ..

Ese formulario HTML lo puedes ejecutar desde tu própio navegador y estando ese formulario .html hasta en tu própio PC sin necesidad de servidor HTTP ni nada más extra.

Lo importante es que tu "action" del formulario va a apuntar al script.php de proceso esté donde esté .. Si es "remoto" (no en el mismo servidor que corrió la página del formulario ) tendrás que usar http://www.tal.tal/procesa.php como parte del action.

<form action="http://www.tal.tal/procesa.php" method="post">
etc ..
</form>

Ahora .. si dices esto:
Cita:
4.- Como conecto ese formulario con mi base de datos?
NOta: tengo acceso al servidor FTP y a cualquier cambio y o diseño de paginas.
¿Como vas a publicar en ese servidor (subir) tu procesa.php que vas hacer en PHP?. O sólo quieres conectar a tu BD (del servidor remoto) para trabajarla con otro tipo de aplicaciones (incluso con tu própio servidor HTTP con PHP en tu própio PC)?.

Si quieres hacer esto último .. tu servidor Mysql tendrá que permitir la conexión remota para el usuario que uses para conectarte e indicarlo todo ello en tus scripts PHP que usan Mysql bajo el grúpo de funciones:

mysql_xxxx() .. como por ejemplo la primera:

<?
mysql_connect("dominio.tal o IP","usuario de Msyql","contraseña de ese usuario")

y de ahí .. todo el resto que veras en www.php.net/mysql y en cualquier tutorial de PHP con capítulo sobre Mysql ...
?>

Un saludo,
  #3 (permalink)  
Antiguo 13/08/2004, 12:57
 
Fecha de Ingreso: agosto-2004
Mensajes: 32
Antigüedad: 13 años, 4 meses
Puntos: 0
Gracias amigo moderador, creo que estamos muy avanzado con el tema..jaja dejame agarrar el hilo.....

1.- Mi webhosting= webhost4life, ellos soportan PHP y Mysql. hasta aqui ok.
2.- Voy a diseñar un formulario que pida datos. hasta aqui entiendo, Ok.
3.- Voy a Subir ese formulario.html o php ? para ejecutarlo desde nuestro webhosting y no enrredarnos, hasta aqui, Ok.
4.- Donde programo ese supuesto script.php ???? en el formulario ???
5.- Como (segun ejemplo? esto como q si la entiendo porq es igual para llamar a cualquier pagina....) y donde programo la "Action"
<form action="http://www.tal.tal/procesa.php" method="post">
etc ..
</form>
para mi aplicaria asi
<form action="http://www.mensana.com.ve/formulario.php" method="post">
etc ..
</form>

Saludos y gracias por la ayuda.....
  #4 (permalink)  
Antiguo 13/08/2004, 20:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
4.- Donde programo ese supuesto script.php ???? en el formulario ???
Puede ser en en la misma "página" que tengas tu formulario o en otro aparte (hablando de "archivos") .. eso es lo de menos. Para simplificar puedes usar "archivos" aparte .. tu formulario.html y tu script de proceso "proceso.php" que será donde apuntes tu action del formulario.

Cita:
5.- Como (segun ejemplo? esto como q si la entiendo porq es igual para llamar a cualquier pagina....) y donde programo la "Action"
<form action="http://www.tal.tal/procesa.php" method="post">
etc ..
</form>
para mi aplicaria asi
<form action="http://www.mensana.com.ve/formulario.php" method="post">
etc ..
</form>
Si tu script de proceso y el formulario lo vas a ejecutar todo en tu mismo servidor simplemente puedes usar:

<form action="proceso.php" method="post">

Debes comprender como funciona PHP .. PHP "procesa" todo lo que le envies y si lo requieres genera una "salida" (respuesta en forma de otra página HTML con Javascript y todo lo que requieras.

El script de proceso será el que capture tus variables que le envias desde tu formulario y por eso ahí en el "action" indicas que "archivo" .php será el que lo va a procesar. Tu script PHP ademas de "capturar" esas variables hará lo que corresponda con ellas .. ejemplo: atacar (consultar) tu Base de datos, enviar un e-mail .. o cualquier otro proceso.

El "formulario" es la parte "cliente" (donde tomas datos por parte de la iteracción con tu usuario .. o se los presentas) y el script de proceso la parte "servidor" del proceso: cliente-servidor que estás comenzando hacer.

Te recomiendo que leas cualquier manual/tutorial de PHP como los que veras en las FAQ's de este foro para que hagas ejemplos y veas como funciona todo eso. ..además de leer en un manual de HTML que es cada cosa que lo define ..

Un saludo,
  #5 (permalink)  
Antiguo 17/08/2004, 15:46
 
Fecha de Ingreso: agosto-2004
Mensajes: 32
Antigüedad: 13 años, 4 meses
Puntos: 0
Ok gracias amigo, la verdad entendi poco; porq tengo mi formulario diseñado solo figuras e imagenes y cuadros de texto1, text2, text3,etc..."formulario.php o htm"...., colocandole todo lo referente a la programacion que si negrita, alineada, etc....

entiendo lo del archivo Proceso.php (***<form action="proceso.php" method="post"****), esta linea de comando lleva al formulario diseñado para ejecutar las sentencias de insertar, consulta, modificar, etc. llamado "proceso.php" es decir es un link desde "Formulario.html o php" hasta el archivo "proceso.php", hasta este momento creo q voy bien.....PERO.....

ese archivito "proceso.php", es el q busco con ansias amigo, porq es el que tiene el codigo q a mi me intereza, porq todo lo q le envie como tu dices, lo hace........ESO ES LO QUE QUIERO, ME PUEDES ENVIAR ALGUN CODIGO PARA ELLO.........???????????????????????

si logro conseguir mis codigos despues q debo hacer...? algun boton que me indique "insertar", "consultar", "Modificar" o algo por q ya me duele la cabeza.jajaja....de tanto leer y nada.....es decir, como ejecuto o activo desde "formulario.htm" ese link "proceso.php" ?????? en donde programo la opcion de SUBMIT en pocas palabras.....

Gracias....
  #6 (permalink)  
Antiguo 17/08/2004, 17:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. es que eso de conseguir un código de "procesa.php" no lo vas a encontrar exactamente igual que lo que pretendes hacer y variables que usastes en tu formularo ... además que pretendes crear una Base de datos con todo esos datos.

En fin .. sólo te puedo recomendar que leas cualquier manual de PHP ahí empezaras a hacer tu "procesar.php" donde le primer paso será recoger tus variables de tu formulario que envias a donde indicas en el "action" del mismo (el famos "procesar.php") .. despues (en realidad esto se hace antes de tu "formulario") crear la tabla en tu Base de datos Msyql que va a almacenar eso datos .. más o menos la definición de campos de esta corresponderá a la que pides en tu formulario (datos) ..

Empieza leyendo las FAQ's de este foro, ahí tienes tutoriales sobre PHP + Mysql .. leelos haz tus pruebas y con algo más concreto que empieces hacer vemos los problemas que tengas.

Un saludo,
  #7 (permalink)  
Antiguo 17/08/2004, 17:26
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
www.rinconastur.com/php

www.php-hispano.net
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #8 (permalink)  
Antiguo 20/08/2004, 14:11
 
Fecha de Ingreso: agosto-2004
Mensajes: 32
Antigüedad: 13 años, 4 meses
Puntos: 0
Gracias amigos gereald y cluester......esa pagina rincoasturiano esta bien buiena solo que cuando intento hacer lo qmas me intereza q es insertar, consultar, eliminar y copiar.......no me lo hace......no lo muestra en la web...
tomo una copia fiel del codigo y reemplazo, nombre de tabla, servidor, etc todo de la conexion y aun nada.....a continuacion presento el codigo....ayuda por favor, en decirme q sera lo q estoy o esta mal....

<?
# recogemos en una variable el nombre de BASE DE DATOS
$base="mensana";

# recogemos en una variable el nombre de la TABLA
$tabla="clientes";

# establecemos la conexion con el servidor
$conexion=mysql_connect("localhost","Passwordreser vado","mensana");

#asiganamos la conexión a una base de datos determinada
mysql_select_db($base,$conexion);

# establecemos el criterio de SELECCION

$resultado= mysql_query("SELECT * FROM $tabla" ,$conexion);

# CREAMOS UNA CABECERA DE UNA TABLA (codigo HTML)

echo "<table align=center border=2>";

# establecemos un bucle que recoge en un array
# cada una de las LINEAS DEL RESULTADO DE LA CONSULTA
# utilizamos en esta ocasión «mysql_fetch_row»
# en vez de «mysql_fetch_array» para EVITAR DUPLICADOS
# recuerda que esta ultima función devuelve un array escalar
# y otro asociativo con los resultados

while ($registro = mysql_fetch_row($resultado)){

# insertamos un salto de línea en la tabla HTML

echo "<tr>";

# establecemos el bucle de lectura del ARRAY
# con los resultados de cada LINEA
# y encerramos cada valor en etiquetas <td></td>
# para que aparezcan en celdas distintas de la tabla

foreach($registro as $clave){
echo "<td>",$clave,"</td>";
}
}
echo "</table>";


# cerramos la conexion

mysql_close();

?>

esto es con datos reales de mi webhost es decir, claves y demas...
pienso q podria ser el encabezado de HTML....? de todas formas estoy probando...
Gracias... amigos por su pronta ayuda...ya q estoy pareciendo inutil.....q broma...
  #9 (permalink)  
Antiguo 25/08/2004, 15:03
 
Fecha de Ingreso: agosto-2004
Mensajes: 32
Antigüedad: 13 años, 4 meses
Puntos: 0
Buenas tardes amigos, reconosco que fui un "comodo" en pedirles que me evaluacen el antiguo correo con los codigos PERO YA ESTA LISTO menos mal.

a continuacion tengo una pequeña molestia a la hora de modificar algun registro, debido a que sigo algunos ejemplos, cambiando por supuesto servidor, campos, tablas, etc......pero resulta q mis campos y captura de datos son TEXT, pero resulta que cuando invoco alguna cedula y escribo "texto" en el campo que quiero modificar, no me guarda nada y da error, mientras cuando tipeo numeros (1.2, 555.555 etc,) con decimales SI guarda la informacion me gustaria saber que estaria ocurriendo.

La primera URL es para modificar un registro existente y alli podran probar que si se guarda en texto y numeros la diferencia.
La segunda URL es para consultar cuando ustedes ingresen los numeros y verifican que lo que esta alli fue el cambio que hicieron.

http://www.mensana.com.ve/itd/FormMRegistro.php
(Modificar un dato con solo dar una cedula existente en este caso 13793159)

http://www.mensana.com.ve/itd/FormCCondicional.php
(Consulta el monto o calificacion que modifico)

Espero una breve ayuda...

gracias..
Jorge.-
  #10 (permalink)  
Antiguo 26/08/2004, 07:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Deberías poner aquí en el foro la estructura de tus tablas empleadas (de tu BD) para ver que tipo de dato (campo de la tabla . no de tu "formulario HTML") es .. (por lo que dices parece que es un "FLOAT"? en lugar de un VARCHAR o similar).

Si tienes "errores" debes indicarlos en este mensaje (está bien colocar links .. pero es más rápido si nos haces un resumen del problema indicando los problemas y errores textuales que obtengas).

También el código que uses puede ser necesario.

En resumen: Aporta más datos para ver que sucede!.

Un saludo,
  #11 (permalink)  
Antiguo 26/08/2004, 08:59
 
Fecha de Ingreso: agosto-2004
Mensajes: 32
Antigüedad: 13 años, 4 meses
Puntos: 0
ok amigo gracias....

En realidad es q mi DB todos los campos estan como VARCHAR 20, menos las fechas q son DATE.......mi campo "cedula" esta como INDEX, de resto no es mas nada, todo esta basico......ademas cuando inserto algun registro lo graba bien como texto...pero es el codigo de "modificar" q esta dando el problema. eso fue un hibrido sacado de unos codigos q me consegui....y ese hibrido hablaba de numeros.....por eso debe aceptar solo numeros con decimales.....el detalle esta en que no veo donde hace referencia a "numeros" porq las variablkes segun el formulario las captura como TEXT......y mi DB estan como vachar........

Eso es lo q no entiendo....

Jorge...Gracias nuevamente
  #12 (permalink)  
Antiguo 26/08/2004, 10:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. sigues sin poner el código que usas y que tu mismo dices que te dá problemas ..

Un saludo,
  #13 (permalink)  
Antiguo 26/08/2004, 12:28
 
Fecha de Ingreso: agosto-2004
Mensajes: 32
Antigüedad: 13 años, 4 meses
Puntos: 0
ESTE ES EL CODIGO Q HACE LA UPDATE Y NO DEJA Q SEAN "TEXT" SINO "NUMEROS CON DECIMALES" (proceso.php) unas lineas antes de este codigo, estan las variables conexion, tabla, avisar etc., la unica variable q no esta declarada en este archivo es cedula, pero al parecer no es problema, el codigo que copie no la tenoia declarada...y la guarda igual.

$resultado=mysql_query("SELECT COUNT(Cedula) FROM $tabla WHERE (Cedula=$cedula)",$conexion);
$comprueba=mysql_fetch_array($resultado);

if($comprueba[0]==0) {$avisar="<h2>No existe nadie con Cedula ".$cedula. " en la base de datos<br>Su Modificacion anterior no ha sido procesada</h2>";
}else{
$avisar="";
}
$resultado=mysql_query("UPDATE $tabla SET Nombre=$valor WHERE (Cedula=$cedula)",$conexion);

if (mysql_errno($conexion)==0){echo " ";
}else{
if (mysql_errno($conexion)==1062){echo "<h2>No ha podido añadirse el registro<br>Ya existe un campo con este DNI</h2>";
}else{
$numerror=mysql_errno($conexion);
$descrerror=mysql_error($conexion);
echo "Se ha producido un error nº $numerror que corresponde a: $descrerror <br>";
}

}
mysql_close($conexion);

?>

<script language='JavaScript'>
<? echo "window.self.location='FormMRegistro.php?avisa=$av isar'" ?>
</script>


Saludos y gracias...
  #14 (permalink)  
Antiguo 26/08/2004, 13:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Deberías poner el código completo que usas de tus scripts PHP de proceso y del própio formulario ..

De las pruebas de tus ejemplos por ahí se ven errores como:

Cita:
Se ha producido un error nº 1064 que corresponde a: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE (Cedula=13793159)' at line 1
Y ese en concreto indica que tu $tabla (que no sé de donde sale) . no tiene valor:
$resultado=mysql_query("SELECT COUNT(Cedula) FROM $tabla WHERE (Cedula=$cedula)",$conexion);


En general debes usar comillas para los varlores de tus variables (en comparaciones) como los WHERE ... campo=valor ):

Código PHP:
$resultado=mysql_query("UPDATE $tabla SET Nombre='$valor' WHERE Cedula='$cedula'",$conexion); 

Y .. ojo si $tabla por ejemplo tiene espacios (que no debería) o caracteres como ñ, acentos .. etc. Ahí tendrías que usar como nombre de "tabla" en ese $tabla ..

`$tabla`

Un saludo,
  #15 (permalink)  
Antiguo 26/08/2004, 16:28
 
Fecha de Ingreso: agosto-2004
Mensajes: 32
Antigüedad: 13 años, 4 meses
Puntos: 0
Gracias amigo pero ya corrobore q hay algo malo con las siguientes lines de codigo:
$comprueba=mysql_fetch_array($resultado);

if($comprueba[0]==0) {$avisar="<h2>No existe nadie con Cedula ".$cedula. " en la base de datos<br>Su Modificacion anterior no ha sido procesada</h2>";
}else{
$avisar="";
}

porq las deshabilite y me modifica mejor q nunca......ese $comprueba no me parece..........esa validacion de cedula existente o NO.....esta defectuosa....o al menos me parece aunque no tengo ni idea de como corroborar una cedula existente pero estos codigos estan defectuosos...

Gracias amigo y si tienes algun codigo q evalue una cedula existente permitemelo....
  #16 (permalink)  
Antiguo 26/08/2004, 20:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No recuerdo si COUNT() (de SQL) requiere el nombre del campo .. pero lo que sí sé que hace es contar registros .. así que el nombre del campo no tiene más relevancia. Por mi parte simpre he usado COUNT(*) .. De todas formas puedes corroborarlo en el manual oficial de Mysql: www.mysql.com

A todo esto ..sabiendo que el resultado va a ser un único registro (que es lo que devuelve COUNT() con el "total" de registros que cumplan tu condición: WHERE ....) puedes usar mysql_result() en lugar de tu mysql_array() para acceder directo al único resultado esperado.

Prueba:

Código PHP:
$resultado=mysql_query("SELECT COUNT(*) FROM $tabla WHERE Cedula='$cedula'",$conexion); 
$comprueba=mysql_result($resultado,0); 

if(
$comprueba==0) {$avisar="<h2>No existe nadie con Cedula ".$cedula" en la base de datos<br>Su Modificacion anterior no ha sido procesada</h2>"
}else{ 
Un saludo,
  #17 (permalink)  
Antiguo 01/09/2004, 15:34
 
Fecha de Ingreso: agosto-2004
Mensajes: 32
Antigüedad: 13 años, 4 meses
Puntos: 0
Cita:
Iniciado por Cluster
No recuerdo si COUNT() (de SQL) requiere el nombre del campo .. pero lo que sí sé que hace es contar registros .. así que el nombre del campo no tiene más relevancia. Por mi parte simpre he usado COUNT(*) .. De todas formas puedes corroborarlo en el manual oficial de Mysql: www.mysql.com

A todo esto ..sabiendo que el resultado va a ser un único registro (que es lo que devuelve COUNT() con el "total" de registros que cumplan tu condición: WHERE ....) puedes usar mysql_result() en lugar de tu mysql_array() para acceder directo al único resultado esperado.

Prueba:

Código PHP:
$resultado=mysql_query("SELECT COUNT(*) FROM $tabla WHERE Cedula='$cedula'",$conexion); 
$comprueba=mysql_result($resultado,0); 

if(
$comprueba==0) {$avisar="<h2>No existe nadie con Cedula ".$cedula" en la base de datos<br>Su Modificacion anterior no ha sido procesada</h2>"
}else{ 
Un saludo,
Gracias amigo Cluster
estuve observando en las recomendaciones q me enviaste con anterioridad y observo q SET Nombre='$valor'. Porq digo esto? porq observo lo q me acabas de enviar y comparo con el codigo original y veo que cuando coloco la variable $valor asi como esta, es cuando me da el grandisimo error....porq con lo ultimo que me enviaste empece a probar sin ciertas partes de codigo y llegue fue a ese....

De todas formas muchas gracias, ya me lo habias enviado y lo hice pero no se porq no servio ........como dice un amigo hagalo todo otra vez no empiecen a modificar nada.......pero como no conosco mucho de esto....prefiero a recurrir a los q saben.....

gracias...amigo y por cualquier cosa.....pego un grito..
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 15:02.