Foros del Web » Programando para Internet » PHP »

no entiendo que error hay en este script(formulario+agregar datos a bd mysql)ayuda!!

Estas en el tema de no entiendo que error hay en este script(formulario+agregar datos a bd mysql)ayuda!! en el foro de PHP en Foros del Web. bien, resulta que tengo estos dos sripts: uno es un formulario y envia los datos al otro formulario, el cual tiene que dejar esos datos ...
  #1 (permalink)  
Antiguo 28/04/2004, 09:52
Avatar de yeta  
Fecha de Ingreso: enero-2004
Mensajes: 148
Antigüedad: 20 años, 3 meses
Puntos: 0
no entiendo que error hay en este script(formulario+agregar datos a bd mysql)ayuda!!

bien, resulta que tengo estos dos sripts: uno es un formulario y envia los datos al otro formulario, el cual tiene que dejar esos datos en una tabla de una base de datos.
aqui os dejo esos dos scripts:

el formulario: crear_clan.php

Código PHP:
<?php
session_start
();

$titulo "Modificar contrase&ntilde;a";
require(
'cabecera.inc');

require(
'CreaConexion.inc');
if(!empty(
$_SESSION['usuario'])){
?>
<form method="POST" action="clan.php">

<center>
<table>
<tr>
    <td>Nombre del Clan:</td>
    <td><input type="text" name="nombreclan" value="" size="8"></td>
</tr>
<tr>
    <td>Tu Nick en el Clan:</td>
    <td><input type="text" name="nick" value="" size="20"></td>
</tr>
<tr>
    <td>Contraseña:<br>(confirmación)</td>
    <td><input type="password" name="contrasenya" value="" size="8"><br>
        <input type="password" name="confirmacion" value="" size="8"></td>
</tr>
<tr>
    <td>Tu E-Mail</td>
    <td><input type="text" name="email" value="" size="20"></td>
</tr>
</table>

<input type="submit" value="Alta">

<br><br>

</center>
<?
}
   else {

      
error("<li> Acceso denegado");
      require(
'pie.inc');
   }
require(
'pie.inc');
?>
el archivo que introduce los datos en la bd: clan.php

Código PHP:
<?php
session_start
();

$titulo "Modificar contrase&ntilde;a";
require(
'cabecera.inc');
require(
'CreaConexion.inc');
if(!empty(
$_SESSION['usuario'])){
$con=connect() or  die ("<li> No se pudo realizar la conexion (LINEA) ".__LINE__." (ARCHIVO) "__FILE__);
$sql="CREATE TABLE ".$_POST['nombreclan']." (
nick CHAR(8) NOT NULL,
contrasenya CHAR(8) NOT NULL,
email CHAR(20) NOT NULL,
PRIMARY KEY(nick)
);"
;
$sql="INSERT INTO ".$_POST['nombreclan']." VALUES(
    '$nick',
    '$contrasenya',
    '$email',
);"
;
$result=mysql_query($sql,$con);

mysql_close($con);
?>

<?
}
   else {

      
error("<li> Acceso denegado");
      require(
'pie.inc');
   }
require(
'pie.inc');
?>
porque no me crea la tabla que me tiene que crear, ni me introduce los datos en ella?
  #2 (permalink)  
Antiguo 28/04/2004, 10:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
La función mysql_query() sólo ejecuta una sentencia SQL por llamada a esta ... no sirve separar las intrucciones por comas ya que las discrimina ..

A su vez .. en tu ejemplo ni concatenas los $sql (con el punto) .. Por eso, lo que ejecutas es tu último $sql (el del insert) y .. como no está creada la tabla .. fallará el insert ..

el $result= .. asignado a una consulta tipo INSERT o CREATE table no es completamente necesario .. en tal caso estructuras tipo:

Código PHP:
mysql_query($sql) or die (mysql_error()); 
En tu caso tendrías que usar un mysql_query() por cada $sql que usas ..

$sql="blabla";
mysql_query($sql);
$sql="mas blabla";
mysql_query($sql);

etc ...

Pero, .. Lee bien el consejo que te doy (y ya te dí en otro mensaje). NOOO tiene sentido crear una tabla y un sólo registro en ella . .NO te servirá para nada esos datos para hacer busquedas comodamente y demás consultas SQL a la misma.!!!

CONSEJO:

** Crea tu tabla UNA SOLA VEZ .. lamala si quieres "clanes" (creala con phpMyadmin por ejemplo) y en ese código que usas .. crea -sólo- registros en esa tabla (tu INSERT que usas ..)

** Recoge las variables por su método . .si usastes POST en tu formulario . .USA POST en los $_POST['nick'] .. etc.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 28/04/2004, 11:00
Avatar de yeta  
Fecha de Ingreso: enero-2004
Mensajes: 148
Antigüedad: 20 años, 3 meses
Puntos: 0
oye tio muchas gracias!!
bueno, en principio perdona mi ignorancia sobre este tema, ya que soy nuevo en PHP...pero de la experiencia se aprende (supongo y creo...)
mira, te explico porque no quiero hacer una sola tabla:
cada persona que quiera crear un clan, tendra que rellenar ese formulario, y despues tendra que añadir gente dentro de ese clan. asi que (que yo sepa), si quiero añadir gente a ese clan, no me basta con una sola tabla

te parece convincente esto?

muchisimas gracias, ahora te dire si funciona
  #4 (permalink)  
Antiguo 28/04/2004, 11:21
Avatar de yeta  
Fecha de Ingreso: enero-2004
Mensajes: 148
Antigüedad: 20 años, 3 meses
Puntos: 0
ahora tengo otro error...


Código PHP:
<?php
session_start
();

$titulo "Modificar contrase&ntilde;a";
require(
'cabecera.inc');
require(
'CreaConexion.inc');
if(!empty(
$_SESSION['usuario'])){
$con=connect() or  die ("<li> No se pudo realizar la conexion (LINEA) ".__LINE__." (ARCHIVO) "__FILE__);
$sql="CREATE TABLE ".$_POST['nombreclan']." (
nick CHAR(8) NOT NULL,
contrasenya CHAR(8) NOT NULL,
email CHAR(20) NOT NULL,
PRIMARY KEY(nick)
);"
;
mysql_query($sql);
$sql="INSERT INTO ".$_POST['nombreclan']." VALUES(
    '$nick',
    '$contrasenya',
    '$email',
);"
;
mysql_query($sql);

mysql_close($con);
?>

<?
}
   else {

      
error("<li> Acceso denegado");
      require(
'pie.inc');
   }
require(
'pie.inc');
?>
ahora me crea la tabla pero no el usuario que tiene que crear en esa tabla...ahora como lo soluciono? :S
por favor contestad!!
gracias
  #5 (permalink)  
Antiguo 28/04/2004, 11:53
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Citando a Cluster:
Cita:
el $result= .. asignado a una consulta tipo INSERT o CREATE table no es completamente necesario .. en tal caso estructuras tipo:
Código PHP:
mysql_query($sql) or die ("Error $sql <br>MySQL dice ".mysql_error()); 
(modificado un pelin) y
Cita:
** Recoge las variables por su método . .si usastes POST en tu formulario . .USA POST en los $_POST['nick'] .. etc.
Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 28/04/2004, 11:59
Avatar de yeta  
Fecha de Ingreso: enero-2004
Mensajes: 148
Antigüedad: 20 años, 3 meses
Puntos: 0
yo no me entero...o me lo dices en castellano y que lo entienda...o catapum ximpum...
alguien me lo puede explicar¿?
  #7 (permalink)  
Antiguo 28/04/2004, 13:28
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
cada persona que quiera crear un clan, tendra que rellenar ese formulario, y despues tendra que añadir gente dentro de ese clan. asi que (que yo sepa), si quiero añadir gente a ese clan, no me basta con una sola tabla

te parece convincente esto?
No me convence .. pues eso se resuelve con "normalización" de tus base de datos donde vas a emplear más tablas para los datos de la gente que pertenece a ese clan. Ejemplo:

tabla clan
id_clan
nombre_clan
blabla

tabla componentes_clan
id_componente
id_clan <- clan que pertenece .. este es el campo "clave foránea"
nombre_componente
etc

Te insito una vez más .. DEBES leer algo sobre el tema antes de ponerte hacer NADA, .. Por ejemplo: de un buen modelo de datos (para tu BD) podrás hacer mas y mejores cosas con esos datos. Por eso ... las preguntas en este punto serían de "como plantear" el proyecto a realizar .. analizar que datos tienes y de ahí se verá como distribuirlos (en tablas) y creando las relaciones que mantengan entre ellas (por sus "claves foráneas").

Luego ya vendrá hacer las consultas SQL (Lenguaje Estructurado de consultas) a ese "modelo" de datos que creaste.

Y por último llegará PHP a "lanzar" (via sus funciones própias) esas sentencias SQL basadas en el "modelo" de datos que implementastes.

Por mi parte te pude recomendar una vez más que leas los tutoriales que encontraras en las FAQ's sobre PHP (y las própias FAQ's que están para ayudarte en tus inicios .. para que sepas cosas que tal vez te costaría mucho más tiempo hacer esas preguntas .. ).

Y . sobre base de datos (orientado a Msyql) LEE los tutoriales de:
www.mysql-hispano.com

Nadie nace sabiendo (así que no hay que disculparse por no saber)... pero nunca es tarde para aprender. Eso sí, hay que tener cierta metodología y constancia para apreder. Si vas en plan autodidacta .. como por ejemplo es mi caso y te comento por experiencia que de "picar" aquí y "allá" .. al final llegué a la conclusión que: cuanto más base tengo de lo que quiero hacer .. menos problemas tengo para resolver los problemas.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 09:17.