No se repitan los Nombres

Cordial saludo.
Hago un select y arroja la siguiente info:
Contrato Medico Procedimiento Cant
0001 a Sellante 4
0001 b Flúor 12
0012 a Detartraje 15
0012 a Control de placa 20
Y así sucesivamente con más contratos
Necesito que en la tabla quede:
Contrato 001
Medico Procedimiento Cant
a Sellante 4
b Flúor 12
Contrato 0012
Medico Procedimiento Cant
A Detartraje 15
Control de Placa 20
¿Hay alguna forma de lograrlo?
Intente haciéndolo como me ayudaste con lo de las fechas y Médicos no se si recuerdas; pero me sale una locura ya que esta dividido por Contratos.
Agradezco la ayuda que me puedas brindar.
Respuesta
1
La forma más sencilla de hacer esto es crear un formulario con los campos que tienes: Contrato, Medico, Procedimiento, Cant. Al rellenar ese formulario y enviarlo se obtiene por ejemplo:
Contrato Medico Procedimiento Cant
0001 a Sellante 4
Ahora tienes que introducir esos datos en una tabla de una base de datos. No es necesario que crees una tabla por cada contrato, con una única tabla para todos los contratos queda mejor y luego obtienes los datos que necesites mediante SQL de forma muy sencilla.
El formulario y el código para insertar los datos en una base de datos llamada "BaseDatosContratos", en la tabla "Contratos", sería el siguiente:
<html> <head> <title> Contratos </title> </head> <body>
<?php
if ( !isset($_POST['Contrato']) ) {
?>
<form name='formulario' method='POST'>
Contrato: <input type='text' name='contrato'> <br>
Medico: <input type='text' name='medico'> <br>
Procedimiento: <input type='text' name='procedimiento'> <br>
Cantidad: <input type='text' name='cant'> <br>
<input type='submit' value='Crear contrato'>
</form>
<?php
} else {
// $id = mysql_connect("localhost", "", "");
// mysql_select_db( "BaseDatosContratos", $id);
$consulta = "INSERT INTO Contratos (Contrato, Medico, Procedimiento, Cant) VALUES ('{$_POST['contrato']}', '{$_POST['medico']}', '{$_POST['procedimiento']}', '{$_POST['cant']}')" );
mysql_query($consulta, $id);
?>
</body>
</html>
Para obtener los datos de la base de datos necesitas el número de contrato. Por ejemplo, el siguiente código muestra todos los datos del contrato 001:
<?php
$contrato = 001;
// $id = mysql_connect("localhost", "", "");
// mysql_select_db( "BaseDatosContratos", $id);
$consulta = "SELECT * FROM Contratos WHERE Contrato = $contrato";
$datos = mysql_query($consulta, $id);
echo "Contrato: $contrato <br>";
echo "<table> <tr> <td> Medico </td> <td> Procedimiento </td> <td> Cant </td> </tr>";
while($fila = mysql_fetch_array($datos)) {
echo "<tr> <td> " . $fila['Medico'] . "</td><td>" . $fila['Procedimiento'] . "</td><td>" . $fila['Cant'] . "</td> </tr>";
}
echo "</table>";
?>
Saludos.
No me sirve de esa manera, porque no debo mostrar campos de texto porque es para impresión y debe ser totalmente plano.
Si no hay otra forma entonces cerrare la pregunta.
Agradezco la ayuda que me has brindado.
No entiendo bien lo que quieres hacer.
Tienes un formulario en el que rellenas campos, esos campos son: contrato, medico, procedimiento, cat. Vas rellenandolos y enviándolos, en total 4 veces y obtienes los siguientes datos:
0001 a Sellante 4
0001 b Flúor 12
0012 a Detartraje 15
0012 a Control de placa 20
Esos datos los vas almacenando en tu base de datos. En este caso te puede valer el código que te puse arriba para insertar datos en una base de datos.
Después, quieres obtener los datos de la base de datos, agruparlos por número de contrato e imprimirlos. Al obtener los datos de la base de datos puedes crear una página web con una tabla en la que irán los datos. No debe haber ningún problema por imprimir la página web aunque tenga una tabla, pero también puedes poner los datos sin ella. En cualquier caso el código que te puse arriba puede valer.
Suponiendo que prefieras que los datos no estén en una tabla, puedes sustituir el segundo script que te puse arriba por el siguiente:
<?php
$contrato = 001;
// $id = mysql_connect("localhost", "", "");
// mysql_select_db( "BaseDatosContratos", $id);
$consulta = "SELECT * FROM Contratos WHERE Contrato = $contrato";
$datos = mysql_query($consulta, $id);
echo "Contrato: $contrato <br>";
echo "Medico Procedimiento Cant <br>";
while($fila = mysql_fetch_array($datos)) {
echo $fila['Medico'] . " " . $fila['Procedimiento'] . " " . $fila['Cant'] . "</br>";
}
echo "</br>";
?>
Con este script la página web que se te genera quedaría de la siguiente forma:
Contrato 001
Medico Procedimiento Cant
a Sellante 4
B Flúor 12
Contrato 0012
Medico Procedimiento Cant
A Detartraje 15
Control de Placa 20
Espero que te sirva de esta forma. Sino, explciame con más detalle lo que necesitas hacer para que pueda darte una solución más acertada.
Saludos.
De la forma que me lo planteas me saca el nombre repetido del medico.
Ej:
Contrato 001
Medico Procedimiento cant
Juan Pola z123 4
Juan Pola z125 1
Juan Pola z163 2
Pilar Abg a098 3
contrato 001
Medico Procedimiento cant
Pilar Abg a091 3
Pilar Abg a090 2
Y quisiera que me quedara
Medico Procedimiento cant
Juan Pola z123 4
z125 1
z163 2
Pilar Abg a098 3
Contrato 001
Medico Procedimiento cant
Pilar Abg a091 3
a090 2
Espero haberme explicado mejor.
Agradezco tu tiempo y empeño.
Cierto, no me había percatado de ese detalle. El código que te puse muestra siempre el nombre del médico junto con el resto de los datos, lo único que mostraba separado era el contrato. No me di cuenta que solo querías mostrar el nombre una vez, ahora me ha quedado claro. Solo es necesario hacer una pequeña modificación al código que ya tenemos. Te lo pongo completo:
<?php
$contrato = 001; // igual que antes, a esta variable le tienes que asignar el numero de contrato que quieras
// $id = mysql_connect("localhost", "", "");
// mysql_select_db( "BaseDatosContratos", $id);
$consulta = "SELECT * FROM Contratos WHERE Contrato = $contrato";
$datos = mysql_query($consulta, $id);
$medico = "";
echo "Contrato: $contrato <br>";
echo "Medico Procedimiento Cant <br>";
while($fila = mysql_fetch_array($datos)) {
if( $medico != $fila['Medico']) {
echo $fila['Medico'] ." ";
$medico = $fila['Medico'];
}
echo $fila['Procedimiento'] . " " . $fila['Cant'] . "</br>";
}
echo "</br>";
?>
Esta vez si debe salir como necesitas. Disculpa mi despiste.
Saludos.
Que pena molestar otra vez pero he intentado colocarlo en una tabla pero me sale todo desfigurada esa tabla, le he dad vueltas y vueltas pero no llego a la meta.
¿Puedes aclararme como hacer esa tabla?
Agradezco la ayuda y tiempo que estas brindando.
Te pongo el mismo código que antes, pero modificado para mostrar los datos dentro de una tabla:
<?php
$contrato = 001;
// $id = mysql_connect("localhost", "", "");
// mysql_select_db( "BaseDatosContratos", $id);
$consulta = "SELECT * FROM Contratos WHERE Contrato = $contrato";
$datos = mysql_query($consulta, $id);
$medico = "";
echo "Contrato: $contrato <br>";
echo "<table> <tr> <td> <B> Medico </B> </td> <td> <b> Procedimiento </b> </td> <td> <b>Cant </b> </td> </tr>";
while($fila = mysql_fetch_array($datos)) {
echo "<tr>"
if( $medico != $fila['Medico']) {
echo "<td>" . $fila['Medico'] ." </td>";
$medico = $fila['Medico'];
} else {
echo "<td> </td>"
}
echo "<td> ". $fila['Procedimiento'] . "</td> <td>" . $fila['Cant'] . "</td>";
echo <"/td>"
}
echo "</table>";
?>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas