Autor Tema: Consulta MySql select where from usando variables PHP (sintaxis concatenar)  (Leído 44446 veces)

Jose Maldonado

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 16
    • Ver Perfil
Hola a todos.

En un intento por hacerme entender, explico mi problema de la siguiente manera:

1.- Escribí tres ficheros muy sencillos. Dos en html y uno en php.

2. Les envío el código de los tres ficheros (son muy claros para un experto, yo programaba hace mucho tiempo, pero la programación en web y moderna apenas la estoy tocando ahora, por eso estoy perdido).

2.- Dentro del fichero php escribo exactamente qué es lo que quiero lograr.

Código del primer fichero html (selecciona_actividad_6.html):

Código: [Seleccionar]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> Mi primera aplicación en la Web</title>
</head>
       <body>

  <h1> SELECCIÓN DE LA ACTIVIDAD A REALIZAR </h1>
  <hr size="8px" color="blue" />
  <hr size="8px" style="color: black; background-color: black; width:75%;" />
 
              <form method="get"action="sistema6.php">
                <br/> <br/>
Insertar un registro: <input name="actividad" value="insertar" type="radio"/>
<br/> <br/>
    Mostrar registros: <input name="actividad" value="mostrar" type="radio"/>
                <br/> <br/>
            Eliminar registros: <input name="actividad" value="eliminar" type="radio"/>
                <br/> <br/>
                Modificar: <input name="actividad" value="modificar" type="radio"/>
                <br/> <br/>
<input type="reset" value="Borrar la Selección" />
                <input value="Realizar" type="submit" />
<hr size="8px" color="blue" />
    <hr size="8px" style="color: black; background-color: black; width:75%;" />
             </form>

       </body>
</html>




Código del segundo fichero html (formulario_general.html):


Código: [Seleccionar]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> Para Insertar un Registro</title>
</head>
       <body>

  <h1> DATOS DEL REGISTRO </h1>
  <hr size="8px" color="blue" />
  <hr size="8px" style="color: black; background-color: black; width:75%;" />
 
              <form method="get"action="sistema6.php">
                <br/> <br/>
NOMBRE: <input name="nombre" value="" type="text"/>
<br/> <br/>
    APELLIDO: <input name="apellido" value="" type="text"/>
                <br/> <br/>
CÉDULA: <input name="cedula" value="" type="text"/>
                <br/> <br/>
                ASIGNATURA: <input name="asignatura" value="" type="text"/>
                <br/> <br/>
CALIFICACIÓN: <input name="nota" value="" type="text"/>
                <br/> <br/>
<input type="reset" value="LIMPIAR LOS CAMPOS" />
                <input value="ENVIAR" type="submit" />
<hr size="8px" color="blue" />
    <hr size="8px" style="color: black; background-color: black; width:75%;" />
             </form>

       </body>
</html>



Código del  fichero php (sistema6.php):

Código: [Seleccionar]
<html> //Ejemplo de un sistema simple programado en php
<body>
<title> La respuesta del interpretador Php</title>
<?php
//Recepción de los datos del primer formulario
echo '<br/><br/>';

$actividad= $_GET['actividad']; 

$link_BDmysql_connect("sql210.byethost13.com""b13_15246293""spikepiratakobey");
mysql_select_db("b13_15246293_LucianoBaseDeDatos"$link_BD);

if($actividad == "insertar")
//Insertar registros
?>

<a href="formulario_general.html" >Ir al formulario</a>
<?php
echo "¿cómo puedo hacer para obtener los datos del formulario de la línea 16 e insertarlos, pero no de manera implícita como en las líneas 19 y 20?";
mysql_query("INSERT INTO alumnos VALUES ('90845629', 'Luciano', 'Maldonado', 'Tópicos especiales en Estadística', 15)"$link_BD);
mysql_query("INSERT INTO alumnos VALUES ('20200238', 'Malvy', 'Alviarez', 'Embriología', 19)"$link_BD);


       if(
$actividad == "mostrar")
//Mostrar registros
?>


<a href="formulario_general.html" >Ir al formulario</a>

<?php
    echo "¿cómo puedo hacer para obtener los datos del formulario de la línea 27 y mostrar el registro correspondiente a un valor particular?";
echo "Por ejemplo, en la línea 33 quiero usar el valor de cédula obtenido del formulario, pero no se ¿cómo obtener ese valor?";
echo "No quiero leer todos los registros sino uno en particular";
$registros_BD mysql_query("SELECT WHERE $cedula=cedula FROM alumnos"$link_BD);
// Lectura de cada uno de los registros existentes
while($fila mysql_fetch_array($registros_BD)) 
{// $fila es un arreglo con todos los campos existentes en la tabla
echo "<hr>";
echo "Cédula: ".$fila['cedula']."<br>";
echo "Nombre: ".$fila['nombre']."<br>";
echo "Apellidos: ".$fila['apellido']."<br>";
echo "Asignatura: ".$fila['asignatura']."<br>";
echo "Nota:".$fila['nota']."<br>";

mysql_free_result($registros_BD); // Liberamos los registros
echo "<hr>";


if($actividad == "eliminar")
{//Eliminar registros
?>

<a href="formulario_general.html" >Ir al formulario</a>
<?php
    echo "¿cómo puedo hacer para obtener los datos del formulario de la línea 51 y eliminar el registro correspondiente a un valor particular?";
echo "Sin colocar ese valor explícitamente como en la línea 55";
mysql_query("DELETE FROM alumnos WHERE nota=19"$link_BD);
}

if($actividad == "modificar")
//Consultar registros
?>

<a href="formulario_general.html" >Ir al formulario</a>
<?php
    echo "¿cómo puedo hacer para obtener los datos del formulario de la línea 61 y modificar un registro correspondiente a un valor particular?";
    echo "Sin colocar ese valor explícitamente como en las líneas 65 y 66";
mysql_query("UPDATE alumnos set  nota=19 WHERE nota=20"$link_BD);
mysql_query("UPDATE alumnos SET  nombre='Luciano' WHERE nombre='LUCIANO luciano'"$link_BD);
}

mysql_close($link_BD); // Cerramos la conexion con la base de datos
?>


</body>
</html>




Lo que estoy haciendo es una aplicación de prueba, es decir, los datos que estoy tratando no son reales.

Por favor, señalen sugerencias para lograr que trabaje esta pequeña aplicación y para entender  el mejor esquema de trabajo para estos casos.

Un saludo y mil gracias.

José Maldonado
« Última modificación: 25 de Febrero 2016, 09:50 por Mario R. Rancel »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2662
    • Ver Perfil
Re:Sigo con problemas para construir mi primer ejemplo de aplicación web.
« Respuesta #1 en: 11 de Septiembre 2014, 08:33 »
Hola Jose, te recomiendo que vayas por partes, es decir, que no trates de hacer inserciones, búsquedas, etc. todo al mismo tiempo, sino que primero resuelvas una cosa y cuando la tengas funcionando correctamente pases a la siguiente. Incluso así será más fácil ayudarte desde los foros.

En el código que has puesto hay errores en las sentencias de consulta. Por ejemplo en esta línea:

$registros_BD = mysql_query("SELECT WHERE $cedula=cedula FROM alumnos", $link_BD);

SELECT WHERE $cedula=cedula FROM alumnos no es una sintaxis correcta, por lo que el programa generará un error, o al menos no te dará los resultados deseados.

La sintaxis para estas consultas es de tipo:

$result = mysqli_query($link, "SELECT * FROM alumnos WHERE nombre='Pedro'"); si quisiéramos buscar al alumno de nombre Pedro.

Si el dato del nombre lo tenemos en una variable la sintaxis sería así:

$nombre = 'Pedro';
$result = mysqli_query($link, "SELECT * FROM alumnos WHERE nombre='".$nombre."'");

Si prestas atención verás que hay una mezcla entre comillas simples tipo ' con comillas dobles tipo "

Esto es un poco lioso porque el simple hecho de que falten o sobren unas comillas da lugar a un error. Hay que prestar mucha atención e ir con mucho detenimiento, hay que distinguir lo que son nombres de campos (columnas) de variables, etc.

Una vez tengas bien definida la consulta, puedes extraer los datos que desees tal y como se explica aquí: http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=612:php-consultas-mysql-mysqliconnect-selectdb-query-fetcharray-freeresult-close-ejemplos-cu00841b&catid=70:tutorial-basico-programador-web-php-desde-cero&Itemid=193

Salu2


Jose Maldonado

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 16
    • Ver Perfil
Re:Sigo con problemas para construir mi primer ejemplo de aplicación web.
« Respuesta #2 en: 12 de Septiembre 2014, 02:23 »
Gracias por su tiempo Ogramar,

precisamente quiero dar un paso adelante.  Yo ya se insertar, mostrar, eliminar y modificar registros con datos explícitos, TAL COMO LES MUESTRO EN LOS DOS FICHEROS QUE LES ENVÍO A CONTINUACIÓN.

(La instrucción que comentaste la escribí así para que me la corrigieran y me indicaran cómo hacerlo capturando el valor desde el formulario, porque repito, lo se hacer con valores particulares colocándolos directamente en la instrucción.)

formulario selecciona_actividad_3.html

Código: [Seleccionar]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> Mi primera aplicación en la Web</title>
</head>
       <body>

  <h1> SELECCIÓN DE LA ACTIVIDAD A REALIZAR </h1>
  <hr size="8px" color="blue" />
  <hr size="8px" style="color: black; background-color: black; width:75%;" />
 
              <form method="get"action="sistema3.php">
                <br/> <br/>
Insertar un registro: <input name="actividad" value="insertar" type="radio"/>
<br/> <br/>
    Mostrar registros: <input name="actividad" value="mostrar" type="radio"/>
                <br/> <br/>
            Eliminar registros: <input name="actividad" value="eliminar" type="radio"/>
                <br/> <br/>
                Modificar: <input name="actividad" value="modificar" type="radio"/>
                <br/> <br/>
<input type="reset" value="Borrar la Selección" />
                <input value="Realizar" type="submit" />
<hr size="8px" color="blue" />
    <hr size="8px" style="color: black; background-color: black; width:75%;" />
             </form>

       </body>
</html>





sistema3.php


Código: [Seleccionar]
<html> //Ejemplo de un sistema simple programado en php
<body>
<title> La respuesta del interpretador Php</title>
<?php
//Recepción de los datos del primer formulario
echo '<br/><br/>';
$actividad= $_GET['actividad']; 


if($actividad == "insertar")
//Insertar registros
$link_BDmysql_connect("sql210.byethost13.com""b13_15246293""spikepiratakobey");
mysql_select_db("b13_15246293_LucianoBaseDeDatos"$link_BD);
mysql_query("INSERT INTO alumnos VALUES ('90845629', 'Luciano', 'Maldonado', 'Tópicos especiales en Estadística', 15)"$link_BD);
mysql_query("INSERT INTO alumnos VALUES ('20200238', 'Malvy', 'Alviarez', 'Embriología', 19)"$link_BD);
mysql_close($link_BD); // Cerramos la conexion con la base de datos

       if(
$actividad == "mostrar")
//Mostrar registros
$link_BD mysql_connect("sql210.byethost13.com""b13_15246293""spikepiratakobey");
mysql_select_db("b13_15246293_LucianoBaseDeDatos"$link_BD);
$registros_BD mysql_query("SELECT * FROM alumnos"$link_BD);
// Lectura de cada uno de los registros existentes
while($fila mysql_fetch_array($registros_BD)) 
{// $fila es un arreglo con todos los campos existentes en la tabla
echo "<hr>";
echo "Cédula: ".$fila['cedula']."<br>";
echo "Nombre: ".$fila['nombre']."<br>";
echo "Apellidos: ".$fila['apellido']."<br>";
echo "Asignatura: ".$fila['asignatura']."<br>";
echo "Nota:".$fila['nota']."<br>";

mysql_free_result($registros_BD); // Liberamos los registros
mysql_close($link_BD); // Cerramos la conexion con la base de datos
echo "<hr>";

if($actividad == "eliminar")
{//Eliminar registros
$link_BD mysql_connect("sql210.byethost13.com""b13_15246293""spikepiratakobey");
mysql_select_db("b13_15246293_LucianoBaseDeDatos"$link_BD);
mysql_query("DELETE FROM alumnos WHERE nota=19"$link_BD);
mysql_close($link_BD); // Cerramos la conexion con la base de datos
}
if($actividad == "modificar")
//Consultar registros
$link_BD mysql_connect("sql210.byethost13.com""b13_15246293""spikepiratakobey");
mysql_select_db("b13_15246293_LucianoBaseDeDatos"$link_BD);
mysql_query("UPDATE alumnos set  nota=19 WHERE nota=20"$link_BD);
mysql_query("UPDATE alumnos SET  nombre='Luciano' WHERE nombre='LUCIANO luciano'"$link_BD);
mysql_close($link_BD); // Cerramos la conexion con la base de datos
}
?>

</body>
</html>



Espero que leyendo estos dos ficheros si me entiendan. Quiero aprender a recibir datos de distintos formularios, en diferentes etapas de la ejecución de un programa, y no de un sólo formulario.

Un saludo y mil gracias

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2662
    • Ver Perfil
Re:Sigo con problemas para construir mi primer ejemplo de aplicación web.
« Respuesta #3 en: 12 de Septiembre 2014, 08:29 »
Sí, lo que te comentaba es que tú por ejemplo tienes el valor de cédula que te viene porque ha llegado a través de un formulario, y ese valor lo almacenas en una variable denominada $cedula

Pero tú has escrito:

$registros_BD = mysql_query("SELECT WHERE $cedula=cedula FROM alumnos", $link_BD);

Y esto tiene una sintaxis incorrecta que te generará un error.

La sintaxis correcta sería:

$registros_BD = mysql_query("SELECT * FROM alumnos WHERE cedula='".$cedula."'", $link_BD);

También te comentaba que en el código has puesto muchas dudas o preguntas y lo recomendable para que podamos responderte es que simplifiques las preguntas de modo que no incluyan muchas dudas sino sólo una, de modo que la persona que quiera ayudar respondiendo pueda centrarse en resolver un problema concreto sin tener que revisar un archivo entero con diferentes problemas.

También indicarte que estás usando instrucciones no recomendadas en el código. Aquí puedes ver la recomendación (usar sintaxis mysqli): http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=612:php-consultas-mysql-mysqliconnect-selectdb-query-fetcharray-freeresult-close-ejemplos-cu00841b&catid=70:tutorial-basico-programador-web-php-desde-cero&Itemid=193

Saludos

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".