Foros del Web » Programando para Internet » PHP »

Código correcto para realizar consultas.

Estas en el tema de Código correcto para realizar consultas. en el foro de PHP en Foros del Web. Hola, me gustaría saber si el código que presento contiene errores de sintaxis o de forma, o qué cambiarian ustedes. Estoy aprendiendo con el manual ...
  #1 (permalink)  
Antiguo 28/07/2011, 07:32
 
Fecha de Ingreso: julio-2008
Mensajes: 258
Antigüedad: 15 años, 9 meses
Puntos: 9
Código correcto para realizar consultas.

Hola, me gustaría saber si el código que presento contiene errores de sintaxis o de forma, o qué cambiarian ustedes. Estoy aprendiendo con el manual en mano izq, y teclado en la derecha. Perdonen las incoherencias del código...!

Código PHP:
<?
$link 
mysql_connect("host","usuario","pass");
mysql_select_db("basedatos",$link);


    
$nombre_equipo $_POST['nombre_equipo'];
    
$nombre1 $_POST['nombre1'];
    
$apellido1 $_POST['apellido1'];
    
$nombre2 $_POST['nombre2'];
    
$apellido2 $_POST['apellido2'];

INSERT INTO Equipo (nombreid_equipoVALUES ('$nombre_equipo','$id_equipo'),$link;

SELECT id_equipo FROM Equipo WHERE nombre '$nombre_equipo'
    
$equipo $result['id_equipo']; 

INSERT INTO Jugador (nombre1nombre2apellido1apellido2id_equipoVALUES (
'$nombre1''$apellido1''$nombre2' ,'$apellido2'"$equipo"),$link;

    
$my_error mysql_error($link);
    if(!empty(
$my_error)) {
            echo 
"Ha habido un error al insertar los valores. $my_error"
        } 
        else {
            echo 
"Los datos han sido introducidos satisfactoriamente";
        }
?>
__________________
"La diversidad de opiniones crean una perspectiva capaz de ver todas las caras del objeto"
  #2 (permalink)  
Antiguo 28/07/2011, 07:39
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Código correcto para realizar consultas.

para empezar te recomiendo que cambies el manual que estas leyendo.. se nota que es bastante antiguo...

las consultas las tienes mal... deben ir dentro de un string y ejecutarlas con mysql_query()

las etiquetas php te recomiendo cambiarlas a <?php

saludos.
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 28/07/2011, 07:41
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Código correcto para realizar consultas.

Además procura escribir con las dos manos, si no, no vas a llegar muy lejos.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 28/07/2011, 07:55
 
Fecha de Ingreso: julio-2008
Mensajes: 258
Antigüedad: 15 años, 9 meses
Puntos: 9
Respuesta: Código correcto para realizar consultas.

Cita:
Iniciado por Hidek1 Ver Mensaje
para empezar te recomiendo que cambies el manual que estas leyendo.. se nota que es bastante antiguo...

las consultas las tienes mal... deben ir dentro de un string y ejecutarlas con mysql_query()

las etiquetas php te recomiendo cambiarlas a <?php

saludos.
Sí, sí lo de las etiquetas de echo, en el script original lo tengo de esa forma. Y en cuanto a lo demás, podría decirse que la forma correcta como dices sería la que sigue??:

Código PHP:

<?php
$link 
mysql_connect("host","usuario","pass");
mysql_select_db("basedatos",$link);


    
$nombre_equipo $_POST['nombre_equipo'];
    
$nombre1 $_POST['nombre1'];
    
$apellido1 $_POST['apellido1'];
    
$nombre2 $_POST['nombre2'];
    
$apellido2 $_POST['apellido2'];

mysql_query ("INSERT INTO Equipo (nombre, id_equipo) VALUES ('$nombre_equipo'),$link)

SELECT id_equipo FROM Equipo WHERE nombre = '$nombre_equipo'"

$equipo $result['id_equipo']; 


mysql_query ("INSERT INTO Jugador (nombre1, nombre2, apellido1, apellido2, id_equipo) VALUES (
'$nombre1', '$apellido1', '$nombre2' ,'$apellido2', '$equipo')"
,$link)

    
$my_error mysql_error($link);
    if(!empty(
$my_error)) {
            echo 
"Ha habido un error al insertar los valores. $my_error"
        } 
        else {
            echo 
"Los datos han sido introducidos satisfactoriamente";
        }
?>
P.D: La parte de la consulta SELECT me tiene bastante liado. No se si será así exactamente. Quizás sea de esta otra manera:
Código:
$sql = "SELECT id_equipo FROM Equipo WHERE nombre = '$nombre_equipo'";  
$equipo = mysql_query($sql);
__________________
"La diversidad de opiniones crean una perspectiva capaz de ver todas las caras del objeto"

Última edición por winjose; 28/07/2011 a las 08:35
  #5 (permalink)  
Antiguo 28/07/2011, 09:01
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Código correcto para realizar consultas.

Ya te he respondido en el foro de mysql (xD)


Lo que yo suelo hacer, es
Código PHP:
$sql "Aqui mi consulta sql";
if(
mysql_query($sql$link)) {
    
//No hay errores en la sql
}
else {
    
//Hay errores en la sql


Después, cuando quieres saber la id de un registro insertado, tienes la función "mysql_insert_id".
  #6 (permalink)  
Antiguo 28/07/2011, 09:22
 
Fecha de Ingreso: julio-2008
Mensajes: 258
Antigüedad: 15 años, 9 meses
Puntos: 9
Respuesta: Código correcto para realizar consultas.

ASUNTO SOLUCIONADO. Para todos los que se incorporen y que tengan las misma dudas. El código correcto era:

Código PHP:
$link mysql_connect("host","usuario","pass");
mysql_select_db("basedatos",$link);


    
$nombre_equipo $_POST['nombre_equipo'];
    
$nombre1 $_POST['nombre1'];
    
$apellido1 $_POST['apellido1'];
    
$nombre2 $_POST['nombre2'];
    
$apellido2 $_POST['apellido2'];

mysql_query("INSERT INTO Equipo (nombre, id_equipo) VALUES ('$nombre_equipo', default)",$link);

    
$equipo mysql_insert_id(); //Te devuelve el ultimo id insertado!

mysql_query("INSERT INTO Jugador (nombre1, nombre2, apellido1, apellido2, id_equipo) VALUES (
'$nombre1', '$apellido1', '$nombre2' ,'$apellido2', $equipo)"
,$link);

    
$my_error mysql_error($link);
    if(!empty(
$my_error)) {
            echo 
"Ha habido un error al insertar los valores. $my_error"
        } 
        else {
            echo 
"Los datos han sido introducidos satisfactoriamente";
        }
?> 
Para las consultas, una opción sería:

Código PHP:
$sql "Aqui mi consulta sql";
if(
mysql_query($sql$link)) {
    
//No hay errores en la sql
}
else {
    
//Hay errores en la sql

PD: El karma no para mi, para Eleazan que es el que puso la solución.
__________________
"La diversidad de opiniones crean una perspectiva capaz de ver todas las caras del objeto"
  #7 (permalink)  
Antiguo 28/07/2011, 12:24
 
Fecha de Ingreso: julio-2008
Mensajes: 258
Antigüedad: 15 años, 9 meses
Puntos: 9
Pregunta Problema insertar datos mediante código php

Antes que nada, decir que este tema estaba en la parte de mySql pero lo expondré aquí pues es dónde opino que debería estar. Y bueno... les pondré toda la info que me es posible para que no hayan dudasy dejar el problema lo más simple posible:

Tenemos un form que me recoje los datos y que es:

Código HTML:
<form id="formularito" name="formularito" method="post" action="hola.php">

  <p>FORMULARIO DE PRUEBA</p>

Nombre de equipo:
    <input type="text" name="nombre_equipo" id="nombre_equipo" />
Jugador 1: 
    <input type="text" name="nombre1" id="nombre1" />
Apellido jugador 1:
    <input type="text" name="apellido1" id="apellido1" />
Sexo: 
    masculino
    <input type="radio" name="sexo" id="m" value="m">
    Femenino    </label>
    <input type="radio" name="sexo" id="radio" value="f"> 
El archivo que procesa los datos es:
Código PHP:
<?php
$link 
mysql_connect("XXX","XXXX","XXXXXX");
mysql_select_db("XXXXXXX",$link);


    
$nombre_equipo $_POST['nombre_equipo'];

    
$nombre1 $_POST['nombre1'];
    
$apellido1 $_POST['apellido1'];
    
$sexo $_POST['sexo'];

mysql_query("INSERT INTO Equipo (nombre_equipo, id_equipo) VALUES ('$nombre_equipo', default)",$link);

    
$equipo mysql_insert_id($link); //Te devuelve el ultimo id insertado!

mysql_query("INSERT INTO Jugador (nombre1, apellido1, sexo, id_equipo) VALUES (
'$nombre1', '$apellido1', '$sexo', $equipo)"
,$link);

    
$my_error mysql_error($link);
    if(!empty(
$my_error)) {
            echo 
"Ha habido un error al insertar los valores. $my_error"
        } 
        else {
            echo 
"Los datos han sido introducidos satisfactoriamente";
        }
?>
Y que lo que hace es inserta el nombre de un equipo en la db con un id específico. Posteriormente Ingresa jugadores cuyos id dependerán de a qué equipo pertenecen.

Las tablas Sql armadas son:

TABLA Equipo:
Código:
CREATE TABLE `Equipo` (
  `nombre_equipo` varchar(30) NOT NULL,
  `id_equipo` int(4) NOT NULL auto_increment,
  PRIMARY KEY  (`id_equipo`),
  UNIQUE KEY `nombre_equipo` (`nombre_equipo`)
TABLA Jugador:
Código:
CREATE TABLE `Jugador` (
  `nombre1` varchar(30) NOT NULL,
  `apellido1` varchar(30) NOT NULL,
  `sexo` varchar(30) NOT NULL,
  `id_equipo` int(4) NOT NULL
)

¿Y qué ocurre realmente? ¿Cual es el problema?

Pues que si meto 1 jugador de un equipo llamado pinpon, y luego hago otro registro de otro jugador diferente pero del mismo equipo, entonces ambos jugadores serian registrados con la misma id_equipo. Cosa que no ocurre como se muestra a continuación:

Por medio del form registro estos jugadores

Real madrid | Xavi | Fernandez | Masculino
Atletico | Raul | Perez | Masculino
Atlético | Alfonso | sanchez | Masculino

En la base de datos me sale en la tabla equipos

0 - Jose - Hernandez - Masculino
1 - Xavi - Fernandez - Masculino
0 - Raul - Perez - Masculino

¿ Alguien sabe a qué se debe que este último registro sea 0 y no 1 como habría de ser?
__________________
"La diversidad de opiniones crean una perspectiva capaz de ver todas las caras del objeto"

Última edición por winjose; 28/07/2011 a las 12:41
  #8 (permalink)  
Antiguo 28/07/2011, 12:52
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Problema insertar datos mediante código php

$equipo = mysql_insert_id($link); //Te devuelve el ultimo id insertado!

asegurate que que este sea realmente el ultimo id insertado

echo $equipo;

y si el equipo es autoincrement:
];

mysql_query("INSERT INTO Equipo (nombre_equipo) VALUES ('$nombre_equipo')",$link);
  #9 (permalink)  
Antiguo 28/07/2011, 13:38
Avatar de C2am  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 2.005
Antigüedad: 15 años, 2 meses
Puntos: 306
Respuesta: Problema insertar datos mediante código php

Me parece que esta mal encarado el tema.
Crea un select, con una lista de los equipos que tengas y al agregar un nuevo jugador solo debes elegir de esa lista el equipo correcto. Claro que para armar esa lista debes traer desde tu base de datos los datos del equipo como nombre e id, con lo cual ya obtienes el id y luego solo le pasas ese dato al php que guardará los datos del jugador.

Para nuevo equipos crea otro formulario para guardar nombre del equipo, etc.

Es decir yo tendría dos pasos y no uno como me parece que pretendes hacer.
1º GUARDO DATOS EN EQUIPO.
2º Guardo datos de los Jugadores de un equipo.

Si no entendí mal, lo que haces es GUARDAR el equipo y el nombre del Jugador cada vez que almacenas un jugador, lo cual no es demasido lógico ya que siempre tendras más jugadores que equipos. Y si es de futbol, estarias guardando al menos 11 veces "Atletico", cuando solo deberia ser una vez, más allá de que se almacene bajo el mismo id.

Espero que entiendas lo que digo.
Saludos
__________________
El mundo nada puede contra un hombre que canta en la miseria.
-- Ernesto Sábato--
  #10 (permalink)  
Antiguo 28/07/2011, 13:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Código correcto para realizar consultas.

Temas unidos por favor NO dupliques temas.
  #11 (permalink)  
Antiguo 28/07/2011, 14:21
 
Fecha de Ingreso: julio-2008
Mensajes: 258
Antigüedad: 15 años, 9 meses
Puntos: 9
Exclamación Respuesta: Código correcto para realizar consultas.

Buenas, gracias por contestar señores. Patriarka si hago echo $equipo me imprime en pantalla 0,1,2,3 s introuzco cada vez jugadores un equipo diferente PERO si por el contrario introduzco un jugador de un mismo equipo (equipo ya introducido anteriormente), en pantalla me sale siempre el valor 0.

Y sí, he comprobado que id_equipo sea autoincrement, como puedes ver en el code de las tablas sql.

Y C2am muchas gracias por tu ayuda y propuesta, pero desgraciadamente lo del select ya lo hemos discutido por aquí en el foro, y ésta es la manera más optima de lo que busco.

Lo que intento hacer es guardar en la base de datosj ugadores de un equipo, para posteriormente que estos mismo puedan ver los equipos inscritos, y si les apetecen, ver qué jugadores pertenecen a cada equipo.

Un saludo y a ver si alguien DESCIFRA el problema.
__________________
"La diversidad de opiniones crean una perspectiva capaz de ver todas las caras del objeto"
  #12 (permalink)  
Antiguo 28/07/2011, 14:32
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Código correcto para realizar consultas.

Cita:
Iniciado por winjose Ver Mensaje
[...] Un saludo y a ver si alguien DESCIFRA el problema.
Vaya, además de que duplicas temas; ignoras la llamada de atención, ahora nosotros tenemos que descifrar TU problema.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 28/07/2011, 14:44
 
Fecha de Ingreso: julio-2008
Mensajes: 258
Antigüedad: 15 años, 9 meses
Puntos: 9
Respuesta: Código correcto para realizar consultas.

Cita:
Iniciado por pateketrueke Ver Mensaje
Vaya, además de que duplicas temas; ignoras la llamada de atención, ahora nosotros tenemos que descifrar TU problema.
Ya recibí la llamada de atención por privado, dónde le expliqué al moderador qué habia ocurrido. Y aunque no he de explicarlo a nadie más que él, para evitar malentendidos como el anterior comentario lo haré.

No sabía como borrar temas (ahora se que no se pueden borrar), y pensaba que la mejor sección para mi problema era la de Php, por lo que decidí abrirlo aquí, pensando que el moderador borraría el iniciado en la sección de bases de datos.

Tampoco se que no debo continuar este tema (segú entiendo de pateketrueke en el mensaje anterior). Si es así Tema Cerrado!

Muchas gracias a aquellos que intentaron dar algún tipo de solución!.
Y siento las molestias causadas a todo al que le molestó mi infracción, la cometí sin ánimo para tal.
__________________
"La diversidad de opiniones crean una perspectiva capaz de ver todas las caras del objeto"
  #14 (permalink)  
Antiguo 28/07/2011, 15:08
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Código correcto para realizar consultas.

sabes lo que pasa winjose con tu modelo, es que cada ves que ingreses un equipo no vas a poder tener dos jugadores del mismo equipo por que los id vana aser siempre diferentes.
A menos que los relaciones por el nombre, aun asi por ejemplo: Barcelona y barcelona no serian lo mismo.
Hacele caso a c2am (que es un robot???) que te sugirio el select, no se en que piensan los miembros de tu equipo pero parecen no tener mucha idea de como relacionar datos.
Yo no soy el gran maestro, pero tu problema es mas que simple.

Yo te sugiero que en ves de un select hagas un COMBOBOX que es como un select pero te permite ingresar datos nuevos. asi se cumple lo dictado C2am

en cuanto al insert te sugiero que insistas con lo que te dije antes tambien hace esto:
$sql1="INSERT INTO Equipo (nombre_equipo, id_equipo) VALUES ('$nombre_equipo', default)";
echo $sql1;
mysql_query($sql1, $link);

$equipo = mysql_insert_id($link); //Te devuelve el ultimo id insertado!
var_dump($equipo);
$sqlQueTraeElProblema="INSERT INTO Jugador (nombre1, apellido1, sexo, id_equipo) VALUES (
'$nombre1', '$apellido1', '$sexo', $equipo)";
mysql_query($sqlQueTraeElProblema,$link);
  #15 (permalink)  
Antiguo 28/07/2011, 15:31
 
Fecha de Ingreso: julio-2008
Mensajes: 258
Antigüedad: 15 años, 9 meses
Puntos: 9
Respuesta: Código correcto para realizar consultas.

Cita:
Iniciado por Patriarka Ver Mensaje
sabes lo que pasa winjose con tu modelo, es que cada ves que ingreses un equipo no vas a poder tener dos jugadores del mismo equipo por que los id vana aser siempre diferentes.
A menos que los relaciones por el nombre, aun asi por ejemplo: Barcelona y barcelona no serian lo mismo.
Hacele caso a c2am (que es un robot???) que te sugirio el select, no se en que piensan los miembros de tu equipo pero parecen no tener mucha idea de como relacionar datos.
Yo no soy el gran maestro, pero tu problema es mas que simple.

Yo te sugiero que en ves de un select hagas un COMBOBOX que es como un select pero te permite ingresar datos nuevos. asi se cumple lo dictado C2am

en cuanto al insert te sugiero que insistas con lo que te dije antes tambien hace esto:
$sql1="INSERT INTO Equipo (nombre_equipo, id_equipo) VALUES ('$nombre_equipo', default)";
echo $sql1;
mysql_query($sql1, $link);

$equipo = mysql_insert_id($link); //Te devuelve el ultimo id insertado!
var_dump($equipo);
$sqlQueTraeElProblema="INSERT INTO Jugador (nombre1, apellido1, sexo, id_equipo) VALUES (
'$nombre1', '$apellido1', '$sexo', $equipo)";
mysql_query($sqlQueTraeElProblema,$link);
Continuo el tema (pensando que no sea una penalización el continuarlo). Y antes que nada darle gracias a patriarka, pero lo del combox no me convence. El sistema no lo hice ni yo ni mi grupo jeje, si no más bien fue gente de aquí del foro. Y realmente tiene sentido o al menos eso pensaba yo.

La cosa se ha complicado de mala manera, y yo pensaba que era simple, que inocencia la mia, entonces jeje.

Lo que pretendía era un sistema que permita a mis usuarios incsribirse a una actividad (futbol por ejemlo). Para ello deben inscribirse con el nombre de un equipo, y el de todos los componentes del mismo (imaginen que sean 8). Y bien dicho esto, luego que se puedan , ver todos los equipos inscritos, y si les interesa o quieren, seleccionar un equipo y ver sus componentes.

Espero que me haya explicado. Un saludo!
__________________
"La diversidad de opiniones crean una perspectiva capaz de ver todas las caras del objeto"
  #16 (permalink)  
Antiguo 28/07/2011, 15:52
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Código correcto para realizar consultas.

Mira, hasta yo entiendo perfectamente el problema.

Aquí la cuestión es que por cada nuevo ingreso en tu código estas creando un equipo también, lo cual ya está mal.

La idea es en primer instancia, si no existe el equipo nombrado se inserta y se persiste el ID de dicho registro.

Así ya podemos usar dicho ID en las inserciones subsecuentes.

Por eso es la idea de un <select/> -combobox o dropdown- para poder elegir de una lista de equipos ya registrados en caso de existir ya el equipo.

Espero que lo entiendas, por que de otro modo es complicado seguir prestando ayuda.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #17 (permalink)  
Antiguo 28/07/2011, 16:48
 
Fecha de Ingreso: julio-2008
Mensajes: 258
Antigüedad: 15 años, 9 meses
Puntos: 9
Respuesta: Código correcto para realizar consultas.

Cita:
Iniciado por pateketrueke Ver Mensaje
Mira, hasta yo entiendo perfectamente el problema.

Aquí la cuestión es que por cada nuevo ingreso en tu código estas creando un equipo también, lo cual ya está mal.

La idea es en primer instancia, si no existe el equipo nombrado se inserta y se persiste el ID de dicho registro.

Así ya podemos usar dicho ID en las inserciones subsecuentes.

Por eso es la idea de un <select/> -combobox o dropdown- para poder elegir de una lista de equipos ya registrados en caso de existir ya el equipo.

Espero que lo entiendas, por que de otro modo es complicado seguir prestando ayuda.
si, si entiendo, y gracias por la respuesta. Pero creo que no expliqué detalladamente antes, el objetivo.
Resulta que todos los jugadores se registran en el mismo form. bajo un mismo registro. O lo que es lo mismo, los equipos se registran con un formulario donde rellenarán el nombre del equipo y el de los jugadores. Y ahora es cuándo ustedes pensarán, ¿y porqué no haces un formulario sencillo y guardas en la db el nombre del equipo y el de los jugadores directamente, bajo el mismo registro (sin quebraderos de cabeza)?
Y eso es porque me gustaria en primera instancia imprimir sólo los nombre de los equipos, y en segunda instancia si a alguien le interesa ver el nombre de sus componentes que así sea.
__________________
"La diversidad de opiniones crean una perspectiva capaz de ver todas las caras del objeto"
  #18 (permalink)  
Antiguo 28/07/2011, 19:08
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Código correcto para realizar consultas.

No, señor, es muy mala idea guardar todos los nombres de los jugadores en un mismo registro, pero lo que no has entendido del todo es la forma de relacionar equipo con jugadores y, si no lo tienes claro desde el principio, tanto el diseño de las tablas como el desarrollo de tus scripts van a ser tremendamente complicados.

Imagino que si un mismo usuario registra dos veces los mismos jugadores, con el mismo nombre de equipo (o incluso aunque sea diferente) ya tendras serios problemas.

Sugiero que los jugadores tambien tengan una ID, de manera que si en un futuro deseas hacer algo mas que simplemente crear equipos, como sancionar, asignar puntuacion, etc., puedas lograrlo facilmente.

Tambien, antes de insertar un registro (de equipo o jugador):
1- Verifica si ya existe el nombre en la tabla correspondiente.
2- Si existe, simplemente obtienes la ID, para lo que sea necesario.
2- Si no existe, lo insertas y tambien obtienes la ID con mysql_last_insert_id

P.D. Sexo varchar(30)?... bueno, pueden escribir "Al menos tres veces por semana", cuatro ya no cabe.
__________________
- León, Guanajuato
- GV-Foto
  #19 (permalink)  
Antiguo 28/07/2011, 19:11
Avatar de elunicode  
Fecha de Ingreso: noviembre-2005
Mensajes: 66
Antigüedad: 18 años, 5 meses
Puntos: 2
Respuesta: Código correcto para realizar consultas.

Si estás iniciando en la programación de bases de datos con php y mysql, te recomiendo encarecidamente que programes con mysqli
  #20 (permalink)  
Antiguo 29/07/2011, 02:59
 
Fecha de Ingreso: julio-2008
Mensajes: 258
Antigüedad: 15 años, 9 meses
Puntos: 9
Respuesta: Código correcto para realizar consultas.

Cita:
Iniciado por Triby Ver Mensaje
No, señor, es muy mala idea guardar todos los nombres de los jugadores en un mismo registro, pero lo que no has entendido del todo es la forma de relacionar equipo con jugadores y, si no lo tienes claro desde el principio, tanto el diseño de las tablas como el desarrollo de tus scripts van a ser tremendamente complicados.

Imagino que si un mismo usuario registra dos veces los mismos jugadores, con el mismo nombre de equipo (o incluso aunque sea diferente) ya tendras serios problemas.

Sugiero que los jugadores tambien tengan una ID, de manera que si en un futuro deseas hacer algo mas que simplemente crear equipos, como sancionar, asignar puntuacion, etc., puedas lograrlo facilmente.

Tambien, antes de insertar un registro (de equipo o jugador):
1- Verifica si ya existe el nombre en la tabla correspondiente.
2- Si existe, simplemente obtienes la ID, para lo que sea necesario.
2- Si no existe, lo insertas y tambien obtienes la ID con mysql_last_insert_id

P.D. Sexo varchar(30)?... bueno, pueden escribir "Al menos tres veces por semana", cuatro ya no cabe.
Te refieres a algo como esto verdad?

Código PHP:
<?php
//Creamos el link de conexión
$link mysql_connect("XXXX","XXXX","XXXXXX");
mysql_select_db("XXXXXX",$link);


    
$nombre_equipo $_POST['nombre_equipo'];
    
$nombre1 $_POST['nombre1'];
    
$apellido1 $_POST['apellido1'];
    
$sexo $_POST['sexo'];

//Vemos si existe algún campo repetido
$sql_equipo mysql_query ("SELECT nombre_Equipo FROM Equipo WHERE nombre_equipo= '$nombre_equipo'");
$total_equipo mysql_num_rows($sql_equipo);
if(
$total_equipo 0) {$existe_equipo 1;} else {$existe_equipo=0;}

$sql_jugador mysql_query ("SELECT nombre1 FROM Jugador WHERE nombre1= '$nombre1'");
$total_jugador mysql_num_rows($sql_jugador);
if(
$total_jugador 0) {$existe_jugador 1;} else {$existe_jugador=0;}
//Si algún equipo o jugador existe, existe_equipo OR existe_jugador contendrán el calor 1. En caso contrario serán 0.

if ($existe_equipo 0)
{
mysql_query("INSERT INTO Equipo (nombre_equipo, id_equipo) VALUES ('$nombre_equipo', default)",$link);

        if (
$existe_jugador 0) {
        
$equipo mysql_insert_id($link); //Te devuelve el ultimo id insertado!
        
$equipo $result['id_equipo']; 
        
mysql_query("INSERT INTO Jugador (nombre1, apellido1, sexo, id_equipo) VALUES ('$nombre1', '$apellido1', '$sexo', $equipo)",$link);
        }
        else { echo 
"Este jugador ya ha sido insertado en este equipo";}
}
else { echo 
"El equipo ya existe";}

$my_error mysql_error($link);
    
    if(!empty(
$my_error)) {echo "Ha habido un error al insertar los valores. $my_error";} 
    else {echo 
"Los datos han sido introducidos satisfactoriamente";}

?>
Pero degraciadamente no funciona, me dice siempre que el equipoya existe, aún sin existir éste ne la db.
__________________
"La diversidad de opiniones crean una perspectiva capaz de ver todas las caras del objeto"
  #21 (permalink)  
Antiguo 29/07/2011, 04:03
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Código correcto para realizar consultas.

Buenas,

Vamos a ver, winjose, una cosa es que te prestemos ayuda y otra cosa es que lleves una semana preguntando las mismas cosas en varios post diferentes y que, encima, pases de las soluciones que te prestamos en dichos posts. En este post estuvimos Eleazan y yo montándote prácticamente la base de datos y ahora la haces diferente (no pones id en la tabla jugador, por ejemplo).

Cita:
Iniciado por winjose Ver Mensaje
Y C2am muchas gracias por tu ayuda y propuesta, pero desgraciadamente lo del select ya lo hemos discutido por aquí en el foro, y ésta es la manera más optima de lo que busco.
Con respecto a esta frase, si nosotros te lo montamos así en su día es porque era la forma en que se ajustaba a lo que pedías en su día. Si ahora cambias las especificaciones, la solución que te dimos en su día no es óptima. Has rechazado las ideas de mis compañeros de foro porque ya lo trataste con nosotros, pero es que a nosotros nos diste otra idea, por eso te ofrecimos aquella solución, ahora no vale nada, porque lo planteas de otra forma.

No haces más que contradecirte, porque dices que vas a poner un único formulario para todos los miembros de un equipo, en el que se pongan los datos del equipo y los datos de cada uno de los jugadores, todo junto. Pero luego muestras el código y haces los ejemplos para probarlo de forma diferente. Ese es tu problema, si vas a meter todos los jugadores con un único formulario, para qué entonces haces una prueba metiendo un jugador y luego otro con el mismo equipo?

Tu problema es bien simple, si metes un jugador con equipo Barcelona se crea el registro en la tabla equipo y el registro en el jugador. Luego intentas meter otro jugador con Barcelona también, pero el campo nombre_Equipo es UNIQUE, por lo que no te lo va a insertar y el último id devuelto es 0 (que en este caso no significa que sea el id 0, sino que no se ha podido insertar) y tú lo utilizas para insertar el jugador, por eso te lo inserta con un equipo diferente.

Pero vamos, que ese es un problema menor, tu mayor problema es que no tienes claro ni tú lo que quieres. Tienes que llevar un orden y tener la idea clara, ojo, no sólo el objetivo (eso lo tienes muy claro, lo has repetido varias veces) sino la idea de cómo llegar a dicho objetivo. Tienes que plantear la base de datos pensando en los formularios que vas a montar y los formularios pensando en la estructura de la base de datos... Es decir, tienes que tener una idea general de cómo quieres que funcione todo una vez montado, si no, es imposible.

Espero que las recomendaciones te sirvan, parece que estás dispuesto a aprender y eso me gusta (nos gusta a todos), pero hay que poner más que eso, tienes que atender e intentar entender lo que te decimos, tienes que intentar tener una visión más global de las cosas y no pensar que las soluciones son independientes del planteamiento del problema y, sobre todo, tienes que hacernos caso, porque si te recomendamos algo no es precisamente para que te quede bonito escrito, sino porque es mejor para lo que planteas.

Un saludo y piensa detenidamente en todo lo que te he dicho.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #22 (permalink)  
Antiguo 29/07/2011, 04:26
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Código correcto para realizar consultas.

Sólo voy a añadir una cosa:

http://www.forosdelweb.com/f86/sql-r...5/#post3941127

xD
  #23 (permalink)  
Antiguo 29/07/2011, 08:19
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Código correcto para realizar consultas.

winJose, te di la logica, mas basico que eso es implosible, no tenes que ser cabeza dura.
A mi me gusta ayudar por mas que no sepas nada y te tengo toda la paciencia a vos y que quiera recibir mi ayuda.
presta atencion a lo que te decimos todos en el foro
y quizas lo que no entedes es esto:

"no existe una unica solucion para cada problema, sino que existen muchas!"
vos tenes que adaptar el tu sistema segun el problema en cuestion
Lo dijo el maestro Splinter!!!
  #24 (permalink)  
Antiguo 31/07/2011, 17:53
 
Fecha de Ingreso: julio-2008
Mensajes: 258
Antigüedad: 15 años, 9 meses
Puntos: 9
Respuesta: Código correcto para realizar consultas.

Tienen toda la razón. No obstante he cometido el error o mas bien la inutilidad de no haber expuesto el problema bien detallado desde un principio y en un único tema.
A Vgonga1986 (que ya me aprendí hasta tu nick) le doy la razón en practicamente todo... Es cierto que llegamos a la solución óptima dado mi problema, pero puesto que no funcionaba por el tema del "0" en el id_jugador, y tras exponerlo aquí, decidí aplicarle los cambios que me aconsejaban los compañeros en este post. Sin darme cuenta de que los nuevos cambios no desempeñarian el objetivo final qe buscaba. Bueno he estado releyendo todos los post, mios y vuestros. Y lo seguiré haciendo y buscando por google.

A patriarka le doy la razón en esa famosa frase que, aún sin haberla escuchado antes, si que la habia pensado.

Y a Eleazan, voy a permitirme el lujo de apartar "momentaneamente" tu idea. No te ofendas jeje. Pero el problema lo resuelvo sí o sí, ya es como objetivo personal en mi continuación de aprendizaje.

Y finalmente destacar mi ímpetu y "cabezadura" para resolverlo. Destacando que tras haber estado estos días leyendo y buscando info, voy a decidir aplicar otro método (teniendo en cuenta la forma de bases de datos que concluimos Eleleazan, Vgonga1986 y yo) para conseguir mi propósto.
Dicho método es el de la función INNER JOIN (Cominación interna de tablas).



Un saludo, gracias por la paciencia y perdonen mi ignorancia. Espero postear la solución jeje!!
__________________
"La diversidad de opiniones crean una perspectiva capaz de ver todas las caras del objeto"
  #25 (permalink)  
Antiguo 02/08/2011, 16:50
 
Fecha de Ingreso: julio-2008
Mensajes: 258
Antigüedad: 15 años, 9 meses
Puntos: 9
Respuesta: Código correcto para realizar consultas.

Asunto resuelto. Se los dije, que lo lograría. Si alguien tiene la misma duda, o busca mas o menos lo mismo, he posteado en un tema como se logra.

http://www.forosdelweb.com/f18/inter...8/#post3947430

MUCHAS GRACIAS por todo. y un saludo.
__________________
"La diversidad de opiniones crean una perspectiva capaz de ver todas las caras del objeto"
  #26 (permalink)  
Antiguo 03/08/2011, 06:40
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: Código correcto para realizar consultas.

Lo unico que quedo claro es que terminaste usando lo que nosotros te dijimos.
exactamente lo mismo, y vos lo adaptaste a tu sistemas, eso queriamos que entiendas.
si lo hiciste con select , textarea y cualquier cosa esta por que es tu sistema,
pero terminaste RELACIONANDO LAS TABALS COMO NOS CANSAMOS DE EXPLICARTE.

te aconsejo, para perfeccionarte, investigas sobre las FORMAS NORMALES y DISEÑO de base de datos.

Etiquetas: código, mediante, mysql, registro, sql, tabla, formulario
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

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 12:12.