SlideShare una empresa de Scribd logo
1 de 40
Descargar para leer sin conexión
UNIVERSIDAD DEL TOLIMA
IDEAD PROGRAMA INGENIERIA DE SISTEMAS POR CICLOS
PROYECTO:
DIAGNOSTICACION DE ENFERMEDADES EN EL GANADO BOVINO ASISTIDO
POR UN SOFTWARE DE SISTEMA EXPERTO.
MANUAL DEL PROGRAMADOR
PROYECTO FIN DE CARRERA
REALIZADO POR: EDWIN GEOVANNY SANCHEZ JARAMILLO
GIOVANNI ALEJANDRO GONZALEZ GARAVITO
HENRY MAURICIO ARENAS CANIZALES
OSCAR ANIBAL BERNAL GARCIA
DIRIGIDO POR EL TUTOR: ANGEL ALBERTO CANO
INGENIERO DE SISTEMAS
Ibagué 23 de junio 2013
SOFTWARE DE GESTION Y DIAGNOSTICO VIRTUAL DE TRATAMIENTO DE
ENFERMEDADES EN EL GANADO BOVINO
Trabajo presentado como requisito para proyecto de investigación formativa
CICLO PROFESIONAL
EDWIN GEOVANNY SANCHEZ JARAMILLO
GIOVANNI ALEJANDRO GONZALEZ GARAVITO
HENRY MAURICIO ARENAS CANIZALES
OSCAR ANIBAL BERNAL GARCIA
UNIVERSIDAD DEL TOLIMA
INSTITUTO DE EDUCACION A DISTANCIA IDEAD
INGENIERIA DE SISTEMAS POR CICLOS
IBAGUE -TOLIMA
2013
SEB-ONLINE
SISTEMA EXPERTO BOVINO – ONLINE
INDICE (MANUAL DEL PROGRAMADOR)
1. INTRODUCCION AL MANUAL DEL PROGRAMADOR………………….1
1.- Introducción…………………………………………....1
2. PROGRAMACION………………………….…………………………………2
1.- Fundamentos de Programación……………………..1
2.- Programación del Programa Principal.....……….....2
1. INTRODUCCIO AL MANUAL DEL PROGRAMADOR.
1.- Introducción.
El propósito de este manual del programador, es dar a conocer al lector los
códigos fuentes del programa realizado. Para ello tratamos de forma amena y
concisa cada uno de los códigos junto con la programación utilizada en el
desarrollo del software, esto con el fin de que el usuario pueda modificar a gusto
alguno de los valores y parámetros de las funciones que se encuentran expuestas
en la programación del SBE-ONLINE.
2. PROGRAMACION
1.- Fundamentos de programación.
Para inicial el programa se utilizan dos opciones esenciales, primero registrarse, y
segundo después de estar registrado, Loguearse.
Hemos incluido un ejemplo que ilustrara fácilmente la iniciación de los dos pasos
anteriormente enunciados, esto será utilizado para que los usuarios nuevos se
enteren de cómo se da inicio o arranque al programa.
Primero Registrarse:
Damos clic en, ¿no estas registrado?
Segundo paso: al introducir el usuario y la contraseña creada el programa nos da
la bienvenida mostrándonos un menú donde encontraremos las diferentes
funciones que nos ofrece el servicio del programa.
Lo presentado anteriormente es únicamente la forma de inicio necesario para el
programa, la cual es la forma estándar de inicio.
De esta manera estamos dentro del
formulario de registro de usuario
Luego de llenar los espacios damos
registrar
Registros Consultas Diagnostico
2.- Programación del programa principal
user_auth_fns:
mysqli_query:
Realiza una consulta o busqueda(query) en la base de datos.
Para consultas que no sean DML (distintas de INSERT, UPDATE o
DELETE), esta funcion es similar a invocar a mysqli_real_query()
seguida de mysqli_use_result() o mysqli_store_result().
<?
require_once("db_fns.php");
$error;
function register($username, $email, $password, $nombre,
$apellido,$celular)
{
if ($conn = db_connect()) {
// check if username is unique
$result=mysqli_query($conn,"select * from user where
username='$username'");
if (!$result){
global $error;
$error="No se pudo ejecutar la petición";
return false;
exit;
}else{
$num=mysqli_num_rows($result);
if($num > 0) {
global $error;
$error= "Ese nombre de usuario ya esta ocupado -
vuelve y elige otro.";
return false;
exit;
}else{
$result=mysqli_query($conn,"insert into user
(username, pass, email, nombre, apellido, celular) values
('$username',
SHA1('$password'), '$email','$nombre','$apellido','$celular')");
if (!$result) {
global $error;
$error="No has podido ser registrado en
la base de datos - por favor inténtalo más tarde.";
return false;
}else return true;
}
}
}
else {
global $error;
$error= "No se puede conectar al servidor de la base de
datos - por favor inténtalo más tarde.";
return false;
}
}
function login($username, $password)
{
if ($conn = db_connect()){
// check if username is unique
$result = mysqli_query($conn,"select * from user where
username='$username' and pass = SHA1('$password')");
$num=mysqli_num_rows($result);
if ($num > 0)
return true;
else
return false;
}
}
function check_valid_user()
// see if somebody is logged in and notify them if not
{
if (isset($_SESSION["valid_user"]))
{
$valid_user = $_SESSION["valid_user"];
echo "Logged in como $valid_user";
echo "<br>";
}
else
{
// they are not logged in
do_html_heading("Problema:");
echo "No estás logged in.<br>";
do_html_url("index.php", "Login");
do_html_footer();
exit;
}
}
?>
show_med
<?
require("bovino_fns.php");
session_start();
do_html_header("Medicamentos");
check_valid_user();
$med_array = get_meds($_GET["cod]);
display_meds($med_array);
do_html_footer();
?>
register_new:
Nota:
ECHO no es realmente una función (es una construcción del
lenguaje), por lo que no es necesario utilizar paréntesis con él.
Echo (a diferencia de algunas otras construcciones de lenguaje)
no se comporta como una función, por lo que no siempre puede
ser utilizado en el contexto de una función. Además, si usted
desea pasar más de un parámetro de eco, los parámetros no
deben estar encerrados entre paréntesis.
$_POST:
Un array asociativo de variables pasadas al script actual a través
del método HTTP POST.
$HTTP_POST_VARS contiene la misma información inicial, pero
no es una superglobal. (Nótese que $HTTP_POST_VARS y
$_POST son diferentes variables y que PHP las trata de forma
distinta)
<?
require_once("bovino_fns.php");
session_start();
if(isset($_POST) && !empty($_POST))
{
if(filled_out($_POST)){
var_dump($_POST);
$pass = $_POST["pass"];
if (strlen($pass)<6 || strlen($pass) >100)
{
do_html_header("Problema:");
echo "Tu contraseña debe tener minimo 6
caracteres y max 100 ."
."Por favor vuelve e inténtalo de nuevo.";
do_html_footer();
exit;
}
if ($pass != $_POST["passwd2"])
{
do_html_heading("Problema:");
echo "La contraseña que has entrado no concuerda
- por favor vuelve"
." e inténtalo de nuevo.";
do_html_url("register_form.php", "atras");
do_html_footer();
exit;
}
if (!valid_email($_POST["email"]))
{
do_html_header("Problema:");
echo "No es una dirección email válida. Por
favor vuelve "
." e inténtalo de nuevo.";
do_html_footer();
exit;
}
$celular = $_POST["celular"];
if (!valid_cel($celular))
{
do_html_header("Problema:");
echo "No es un numero celular válido. Por favor
vuelve "
." e inténtalo de nuevo.";
do_html_footer();
exit;
}
if (strlen($celular)<10)
{
do_html_header("Problema:");
echo "Tu celular debe tener 10 numeros ."
."Por favor vuelve e inténtalo de nuevo.";
do_html_footer();
exit;
}
$reg_result = register($_POST["username"],
$_POST["email"],
$pass,$_POST["nombre"],$_POST["apellido"],$celular);
if ($reg_result){
$valid_user = $_POST["username"];
$_SESSION["valid_user"] = $valid_user;
do_html_header("Registro correcto");
echo "Tu registro se ha hecho correctamente.";
display_user_menu();
do_HTML_URL("member.php", "Ir a la página de
miembros");
do_html_footer();
exit;
}else{
do_html_header("Problema:");
echo"no se pudo registrar el usuario ";
echo $GLOBALS['error'];
do_html_footer();
exit;
}
}else{
do_html_header("Problema:");
echo "No has cubierto el formulario correctamente
- Por favor vuelve e inténtalo de nuevo. ";
do_html_footer();
exit;
}
}
else
{
echo '<script
text="text/javascript">location.href="register_form.php"</script>'
;
}
?>
register_form:
<?
require_once("bovino_fns.php");
do_html_header("Registrar Usuario");
display_registration_form();
do_html_footer();
?>
register_ani:
$GLOBALS — Hace referencia a todas las variables disponibles
en el ámbito global
Descripción:
Es un array asociativo que contiene las referencias a todas la
variables que están definidas en el ámbito global del script. Los
nombres de las variables son las claves del array.
<?
require_once("bovino_fns.php");
session_start();
if(isset($_POST) && !empty($_POST))
{
if(filled_out($_POST)){
$username= $_SESSION["valid_user"];
$reg_result = registerAnimal($username,
$_POST["nomanimal"], $_POST["estatura"], $_POST["peso"],
$_POST["color"], $_POST["raza"], $_POST["sexo"],
$_POST["nacimiento"]);
if ($reg_result){
do_html_header("Registro correcto");
echo "Tu registro se ha hecho
correctamente.";
display_user_menu();
do_html_footer();
exit;
}else{
do_html_header("Problema:");
echo"no se pudo registrar el animal. ";
echo $GLOBALS['error'];
display_user_menu();
do_html_footer();
exit;
}
}else{
do_html_header("Problema:");
echo "No has cubierto el formulario correctamente
- Por favor vuelve e inténtalo de nuevo.";
do_html_footer();
exit;
}
}
else
{
echo '<script
text="text/javascript">location.href="ani_regis_form.php"</script>
';
}
?>
output_fn:
<INPUT>
La tag <input> define la introducción de variables. Junto a esta
tag encontraremos los siguientes atributos:
type="" Indicará el tipo de variable a introducir.
text Indica que el campo a introducir será un texto. Sus atributos:
maxlenght="" Seguido de un valor que limitará el número máximo
de carácteres a introducir en ese campo.
size="" Seguido de un valor que limitará el numero de carácteres
a mostrar en pantalla.
value="" Indica que no hay valor inicial del campo.
Password Indica que el campo a introducir será una palabra de
paso. Mostrará asteriscos en lugar de letras escritas. Sus
atributos serán los mismos que para text.
Checkbox El campo se elegirá marcando de entre varias opciones
una casilla cuadrada.
value="" Entre comillas se indicará el valor de la casilla.
checked La casilla aparecerá marcada por defecto.
Radio El campo se elegirá marcando de entre varias opciones una
casilla circular.
value="" Entre comillas se indicará el valor de la casilla.
Image El campo contendrá el valor en coordenadas del punto de
la imagen que haya pinchado. Atributo obligatorio:
src="" Entre comillas escribiremos el nombre del archivo de
imagen.
hidden El visitante no puede modificar su valor ya que no está
visible. Se manda siempre junto al atributo value= seguido de su
valor entre comillas.
Name="" Indicará el nombre que se asigna a un determinado
campo.
<?php
function do_html_header($title)
{
// print an HTML header
?>
<!DOCTYPE HTML>
<html lang="es">
<head>
<title><?=$title?></title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-
scale=1, maximum-scale=1">
<link rel="stylesheet" href="js/jquery.mobile.structure.css"
/>
<link rel="stylesheet" href="css/jquery.mobile.css" />
<script src="js/jquery.js"></script>
<script src="js/jquery.mobile.js"></script>
<style type="text/css">
li.centrado, h1.centrado,p.centrado{text-align:center;}
</style>
</head>
<body>
<div data-role="page">
<?
if($title)
do_html_heading($title);
}
function do_html_footer()
{
// print an HTML footer
?>
</div><!--page-->
</body>
</html>
<?
}
function do_html_heading($heading)
{
// print heading
?>
<header data-role="header">
<h1><?=$heading?></h1>
<a href="#" data-rel="back">atras</a>
<a href="info.php">info</a>
</header>
<?
}
function display_user_menu()
{
// display the menu options on this page
?>
<footer data-role="footer" data-position="fixed">
<nav data-role="navbar">
<ul>
<li><a href="member.php" data-icon="home">Inicio</a></li>
<li><a href="ani_regis_form.php" data-icon="edit">Registrar
animal</a></li>
<li><a href="ani_query_form.php" data-
icon="search">Consultar animales</a></li>
<li><a href="diag_form.php" data-
icon="grid">Diagnosticar</a></li>
<li><a href="logout.php" data-icon="back">Logout</a></li>
</ul>
</nav>
</footer>
<?
}
function do_html_URL($url, $name)
{
// output URL as link and br
?>
<br><a href="<?=$url?>"><?=$name?></a><br>
<?
}
function display_site_info()
{
// display some marketing info
?>
<section>
<p class="centrado">
Registra tus animales!
diagnostica sus enfermedades!
</p>
</section>
<?
}
function display_login_form()
{
?>
<article data-role="content">
<h1>Login</h1>
<a href="register_form.php" data-
transition="slidedown">¿No estas registrado?</a>
<form action="member.php" method="post">
<table>
<tr>
<td>Usuario:</td>
<td><input type="text" name=username required
></td>
</tr>
<tr>
<td>Contraseña:</td>
<td><input type="password" name=pass
required></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="conectar"></td>
</tr>
</table>
</form>
</article>
<?
}
function display_registration_form()
{
?>
<article data-role="content">
<form action="register_new.php" method="post" >
<table>
<tr>
<td>Nombre usuario<br>(max 20 caract):</td>
<td><input type=text name=username size=16 maxlength=20
required></td></tr>
<tr>
<td>Contraseña <br>(min 6 caract):</td>
<td ><input type=password name=pass size=16 maxlength=16
required></td></tr>
<tr>
<td>Confirmar contraseña:</td>
<td><input type=password name=passwd2 size=16
maxlength=16 required></td></tr>
<tr>
<td>Direccion email:</td>
<td><input type=email name=email
placeholder="usuario@dominio.com" size=30 maxlength=100
required></td></tr>
<tr>
<td>Nombre:</td>
<td><input type=text name=nombre size=30 maxlength=50
required></td></tr>
<tr>
<td>Apellido:</td>
<td><input type=text name=apellido size=30 maxlength=50
required></td></tr>
<tr>
<td>celular:</td>
<td><input type=text name=celular size=10 maxlength=10
required></td></tr>
<tr>
<td colspan=2 align=center>
<input type=submit value="Registrar"></td></tr>
</table>
</form>
</article>
<?
}
function display_animal($resultado)
{
$num=mysqli_num_rows($resultado);
if($num == 0){
echo "No has registrado animales";
display_user_menu();
do_html_footer();
exit;
}
?>
<article data-role="content">
<ul data-role="listview" data-filter="true">
<?
for($i=0; $i<$num; $i++){
$row=mysqli_fetch_array($resultado);
echo "<li>";
echo "<strong>Nombre: </strong> ";
echo stripslashes($row[0]);
echo "<br>";
echo "<strong>Estatura: </strong> ";
echo stripslashes($row[1])." cm";
echo "<br>";
echo "<strong>Peso: </strong> ";
echo stripslashes($row[2])." Kg";
echo "<br>";
echo "<strong>Color: </strong> ";
echo stripslashes($row[3]);
echo "<br>";
echo "<strong>Raza: </strong> ";
echo stripslashes($row[4]);
echo "<br>";
echo "<strong>Sexo: </strong> ";
echo stripslashes($row[5]);
echo "<br>";
echo "<strong>Edad: </strong> ";
echo stripslashes($row[6]);
echo "</li>n";
}
?>
</ul>
</article>
<?
}
function display_add_ani_form()
{
// display the form for people to ener a new animal in
?>
<article data-role="content">
<form action="register_ani.php" method="post" >
<!--<form action="probador.php" method="post" > -->
<table>
<tr>
<td>Nombre bovino:</td>
<td><input type=text name=nomanimal size=20 maxlength=50
required></td>
</tr>
<tr>
<td>Estatura(cm):</td>
<td><input type=number min=0 name=estatura size=10
maxlength=10 required></td></tr>
<tr>
<td>Peso(Kg):</td>
<td><input type=number min=0 name=peso size=10
maxlength=10 required></td></tr>
<tr>
<td>Color:</td>
<td><input type=text name=color size=10 maxlength=30
required></td></tr>
<tr>
<td>Raza:</td>
<td><input type=text name=raza size=10 maxlength=30
required></td></tr>
<tr>
<td>Sexo:</td>
<td><input type=radio name=sexo value=m
checked="checked"/>M
<input type=radio name=sexo value=f/>F
</td>
</tr>
<tr>
<td>Nacimiento:</td>
<td><input type=date name=nacimiento value="2013-01-29"
size=10 maxlength=10 required></td></tr>
<tr>
<td colspan=2 align=center>
<input type=submit value="Registrar"></td></tr>
</table>
</form>
</article>
<?
}
function display_diag_form()
{
?>
<article data-role="content">
<form method=post action="diag_query.php">
<fieldset data-role="fieldcontain">
<label for="sin1">Sintoma:</label>
<input id="sin1" type="text" name=sin1 size="30" required>
</fieldset>
<fieldset data-role="fieldcontain">
<label for="sin2">Sintoma:</label>
<input id="sin2" type="text" name=sin2 size="30">
</fieldset>
<fieldset data-role="fieldcontain">
<label for="sin3">Sintoma:</label>
<input id="sin3" type="text" name=sin3 size="30">
</fieldset>
<fieldset data-role="fieldcontain">
<label for="sin4">Sintoma:</label>
<input id="sin4" type="text" name=sin4 size="30">
</fieldset>
<input type=submit data-role="button" value="Consultar" >
</form>
</article>
<?
}
function display_diag($resultado)
{
//$array = mysqli_fetch_all($resultado);
$num=mysqli_num_rows($resultado);
if($num == 0) {
echo "No hay coincidencias, cambia los terminos de consulta";
display_user_menu();
do_html_footer();
exit;
}
?>
<article data-role="content">
<ul data-role="listview" data-filter="true" data-inset="true">
<?
for($i=0; $i<$num; $i++){
$row=mysqli_fetch_array($resultado);
echo "<li>";
echo "<strong>Enfermedad: </strong> ";
echo stripslashes($row[0]);
echo "<br>";
echo "<strong>coincidencias: </strong> ";
echo stripslashes($row[1]);
$url="show_med.php?cod=".($row[2]);
do_html_url($url,"medicamentos");
echo "</li>";
}
?>
</ul>
</article>
<?
}
function display_meds($resultado){
$num=mysqli_num_rows($resultado);
if ($num==0)
echo "No hay medicamentos disponibles<br>";
else {
?>
<article data-role="content">
<ul data-role="listview" data-inset="true">
<?
for($i=0; $i<$num; $i++){
$row=mysqli_fetch_array($resultado);
echo "<li>";
echo stripslashes($row[0]);
echo "</li>";
}
?>
</ul>
</article>
<?
}
}
?>
_____________________________________________________________________
Member:
$_SESSION:
Las sesiones son una forma sencilla de almacenar datos para
usuarios de manera individual usando un ID de sesión único. Esto
se puede usar para hacer persistente la información de estado
entre peticiones de páginas. Los ID de sesiones normalmente son
enviados al navegador mediante cookies de sesión, y el ID se usa
para recuperar los datos de sesión existente. La ausencia de un
ID o una cookie de sesión permite saber a PHP para crear una
nueva sesión y generar un nuevo ID de sesión.
Las sesiones siguen un flujo de trabajo sencillo. Cuando una
sesión se inicia, PHP recuperará una sesión existente usando el
ID pasado (normalmente desde una cookie de sesión) o, si no se
pasa una sesión, se creará una sesión nueva. PHP rellenará la
variable superglobal $_SESSION con cualesquiera datos de
sesión de que se inicie la seisón. Cuando PHP se cierra,
automáticamente toma el contenido de la variable superglobal
$_SESSION, la serializa, y la envía para almacenarla usando el
gestor de almacenamiento de sesiones.
<?
// include function files for this application
require_once("bovino_fns.php");
session_start();
if (isset($_POST["username"])) {
$username = $_POST["username"];
$pass = $_POST["pass"];
if (login($username, $pass))
{
// if they are in the database register the user id
$valid_user = $username;
$_SESSION["valid_user"]=$username;
}
else
{
// unsuccessful login
do_html_header("Problema:");
echo "No has podido hacer logged in. Debes estar logged in
para ver esta p�gina.";
do_html_url("index.php", "Login");
do_html_footer();
exit;
}
}
do_html_header("Menu");
check_valid_user();
?>
<article data-role="content">
<h1 class="centrado">Bienvenidos al sistema experto bovino
online</h1>
</article>
<?
// give menu of options*/
display_user_menu();
do_html_footer();
?>
Logout:
<?
// include function files for this application
require_once("bovino_fns.php");
session_start();
// start output html
do_html_header("Logging Out");
if (!empty($_SESSION["valid_user"]))
{
unset($_SESSION["valid_user"]);
$result_dest = session_destroy();
if ($result_dest)
{
// if they were logged in and are now logged out
echo "chao, vuelve pronto<br>";
do_html_url("index.php", "Login");
}
else
{
// they were logged in and could not be logged out
echo "No hemos podido hacer Log Out.<br>";
}
}
else
{
// if they weren't logged in but came to this page somehow
echo "No te encuentras logged in, así que no hemos podido hacer
logged out.<br>";
do_html_url("index.php", "Login");
}
do_html_footer();
?>
Info:
<?
// include function files for this application
require_once("bovino_fns.php");
// start output html
do_html_header("Info");
?>
<ul data-role="listview" data-inset="true">
<li class="centrado">Sistema experto bovino virtual V 1.0<br>
Proyecto de investigacion formativa<br>
Universidad del Tolima<br>
Ibague<br>
2013
</li>
</ul>
<?
do_html_footer();
?>
Index:
<?php
require_once("bovino_fns.php");
do_html_header("Sistema experto bovino online");
display_site_info();
display_login_form();
do_html_footer();
?>
diag_query:
<?
require_once("bovino_fns.php");
session_start();
do_html_header("Diagnostico");
check_valid_user();
if (isset($_POST["sin1"])) {
$var1=prepararsintoma($_POST["sin1"]);
$var2=prepararsintoma($_POST["sin2"]);
$var3=prepararsintoma($_POST["sin3"]);
$var4=prepararsintoma($_POST["sin4"]);
$cod1=codificarsintoma($var1);
$cod2=codificarsintoma($var2);
$cod3=codificarsintoma($var3);
$cod4=codificarsintoma($var4);
if($resultado=get_enfermedad($cod1,$cod2,$cod3,$cod4)){
display_diag($resultado);
}
}
else
echo '<script
text="text/javascript">location.href="diag_form.php"</script>';
display_user_menu();
do_html_footer();
?>
_____________________________________________________________________
diag_form:
<?
// include function files for this application
require_once("bovino_fns.php");
session_start();
// start output html
do_html_header("Diagnosticar enfermedad");
check_valid_user();
display_diag_form();
display_user_menu();
do_html_footer();
?>
db_fns:
Arrays
Un array en PHP es realmente un mapa ordenado. Un mapa es un
tipo de datos que asocia valores con claves. Este tipo es
optimizado para varios usos diferentes; puede ser usado como
una matriz real, una lista (vector), una tabla asociativa (una
implementación de un mapa), diccionario, colección, pila, cola, y
posiblemente más. Ya que los valores de un array pueden ser
otros arrays, árboles y también son posibles arrays
multidimensionales.
<?
function db_connect()
{
//$connect = mysqli_connect("localhost", "observat_bovino",
"*1085*sb","observat_sebovino");
$connect = mysqli_connect("localhost", "root", "","login");
if (!$connect){
echo "error al conectar: ".mysqli_connect_error();
return false;
}else
return $connect;
}
function db_result_to_array($result)
{
$res_array = ();
for ($count=0; $row = @mysql_fetch_array($result); $count++)
$res_array[$count] = $row;
return $res_array;
}
?>
_____________________________________________________________________
data_valid_fns:
foreach:
El constructor foreach proporciona un modo sencillo de iterar
sobre arrays. foreach funciona sólo sobre arrays y objetos, y
emitirá un error al intentar usarlo con una variable de un tipo
diferente de datos o una variable no inicializada.
<?
function filled_out($form_vars)
{
$flag=true;
foreach ($form_vars as $key => $value)
{
if (empty($value)) {
$flag=false;
}
}
return $flag;
}
function valid_email($address)
{
// check an email address is possibly valid
if (preg_match("#^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-
.]+$#", $address))
return true;
else
return false;
}
function valid_cel($cel){
if (preg_match("#[0-9.]#", $cel))
return true;
else
return false;
}
function valid_string($str){
if (preg_match("#[a-zA-Z]#", $str))
return true;
else
return false;
}
?>
____________________________________________________________________
bovino_fns:
<?
// We can include this file in all our files
// this way, every file will contain all our functions
require_once("data_valid_fns.php");
require_once("db_fns.php");
require_once("user_auth_fns.php");
require_once("output_fns.php");
require_once("animal_fns.php");
?>
animal_fns:
trigger_error — Generar un mensaje de error/advertencia/aviso de
nivel de usuario
Se usa para provocar una condición de error de usuario, se puede
utilizar junto con el gestor de errores interno o con una función
definida por el usuario que ha sido establecida como el nuevo
gestor de errores.
Esta función es útil cuando se necesita generar una respuesta en
particular a una excepción en tiempo de ejecución
<?
require_once("db_fns.php");
$error;
function registerAnimal($username, $nomanimal, $estatura, $peso,
$color, $raza, $sexo, $nacimiento){
// connect to db
if ($conn = db_connect()) {
// check if nomanimal is unique
$result=mysqli_query($conn,"select * from animal where
username='$username' and nomanimal='$nomanimal'");
if (!$result) {
global $error;
$error= "No se pudo ejecutar la peticion";
return false;
exit;
}else{
$num=mysqli_num_rows($result);
if($num > 0) {
global $error;
$error="Ese nombre de animal ya esta ocupado - vuelve y
elige otro.";
return false;
exit;
}else{
$resultado=mysqli_query($conn,"insert into animal
(username, nomanimal, estatura, peso, color, raza,sexo,nacimiento)
values ('$username','$nomanimal',
'$estatura','$peso','$color','$raza','$sexo','$nacimiento')");
if (!$resultado) {
global $error;
$error= "No has podido hacer el registro en
la base de datos - por favor intentalo mas tarde.";
return false;
}else return true;
}
}
}
else {
global $error;
$error="No se ha podido conectar a la base datos";
return false;
}
}
function get_animal($username)
{
//extract from the database all the animals this user has stored
if ($conn = db_connect()) {
$sql="select
nomanimal,estatura,peso,color,raza,sexo,(YEAR(CURDATE())-
YEAR(nacimiento)) - (RIGHT(CURDATE(),5)<RIGHT(nacimiento,5)) as
edad from animal where username = '$username'";
/* $result = $conn->query( "select
nomanimal,estatura,peso,color,raza,sexo,(YEAR(CURDATE())-
YEAR(nacimiento)) - (RIGHT(CURDATE(),5)<RIGHT(nacimiento,5)) as
edad from animal where username = '$username'");*/
$result=mysqli_query($conn,$sql);
if (!$result)
return false;
}
return $result;
};
function get_enfermedad($sin1,$sin2="",$sin3="",$sin4=""){
if ($conn = db_connect()) {
$sql="SELECT e.nombre, count(d.cod_s) as coincide,e.codigo
from enfermedad as e, detalle as d
where e.codigo=d.cod_e
and d.cod_s in('$sin1','$sin2','$sin3','$sin4')
group by e.nombre
order by count(d.cod_s) desc
limit 3";
//$result = $conn->query($sql);
$result=mysqli_query($conn,$sql);
if(!$result)
return false;
return $result;
}
else return false;
}
function get_cod_sin($s){
if ($conn = db_connect()) {
$sql="select codigo_s from sintomas where nombre_s='$s'";
//$result = $conn->query($sql);
$result=mysqli_query($conn,$sql);
if (!$result)
return false;
return $result;
}
else
return false;
}
function prepararsintoma($value){
if(!empty($value)){
$value=strip_tags(trim($value));
$valor=addslashes($value);
return $valor;
}
else return false;
}
function codificarsintoma($x){
if($codigo = get_cod_sin($x)){
$array = mysqli_fetch_assoc($codigo);
if(count($array) > 0)
return $array['codigo_s'];
else
return false;
}
else
return false;
}
function get_meds($cod){
if ($conn = db_connect()) {
$sql = "select m.nom_med as nombre
from medicamento as m, tratamiento as t
where t.cod_enf='$cod' and
t.cod_med=m.cod_med";
//$result = $conn->query($sql);
$result=mysqli_query($conn,$sql);
if (!$result)
return false;
//$array = mysqli_fetch_all($result);
if(mysqli_num_rows($result) == 0)
return false;
return $result;
}
else return false;
}
?>
ani_regis_form:
session_start — Iniciar una nueva sesión o reanudar la existente
session_start() crea una sesión o reanuda la actual basada en un
identificador de sesión pasado mediante una petición GET o
POST, o pasado mediante una cookie.
Cuando session_start() es llamada o cuando se auto inicia una
sesión, PHP llamará a los gestores de almacenamiento de
sesiones open y read. Éstos serán un gestor de almacenamiento
proporcionado por omisión o por extensiones de PHP (como
SQLite o Memcached); o pueden ser un gestor personalizado
como está definido en session_set_save_handler(). La llamada de
retorno read recuperará cualquier información se de sesión
existente (almacenada en un formato serializado especial) y será
deserializada y usada para rellenar automáticamente la variable
superglobal $_SESSION cuando la llamada de retorno read
devuelva la información de sesión guardada a la gestión de
sesiones de PHP.
Para usar una sesión nominada llame a session_name() antes de
llamar a session_start().
<?
// include function files for this application
require_once("bovino_fns.php");
session_start();
// start output html
do_html_header("Registrar Animal");
check_valid_user();
display_add_ani_form();
display_user_menu();
do_html_footer();
?>
_____________________________________________________________________
ani_query_form:
start output: Esta función activará el almacenamiento en búfer de
salida. Mientras dicho almacenamiento esté activo, no se enviará
ninguna salida desde el script (aparte de cabeceras), en su lugar
la salida se almacenará en un búfer interno.
El contenido de este búfer interno se puede copiar a una variable
de tipo string usando ob_get_contents(). Para producir la salida
de lo almacenado en el búfer interno se ha de usar
ob_end_flush(). De forma alternativa, ob_end_clean() desechará
de manera silenciosa el contenido del búfer.
<?
// include function files for this application
require_once("bovino_fns.php");
session_start();
// start output html
do_html_header("Consultar animales");
check_valid_user();
if ($ani_array = get_animal($_SESSION["valid_user"])){
display_animal($ani_array);
}
display_user_menu();
do_html_footer();
?>

Más contenido relacionado

La actualidad más candente (19)

Php
PhpPhp
Php
 
Solucion laboratorio uml
Solucion laboratorio umlSolucion laboratorio uml
Solucion laboratorio uml
 
Tareas agrupadas
Tareas agrupadasTareas agrupadas
Tareas agrupadas
 
Introducción a los hooks
Introducción a los hooksIntroducción a los hooks
Introducción a los hooks
 
2 3 arrays_php
2 3 arrays_php2 3 arrays_php
2 3 arrays_php
 
Php
PhpPhp
Php
 
Customizer: configurando un sitio en tiempo real
Customizer: configurando un sitio en tiempo realCustomizer: configurando un sitio en tiempo real
Customizer: configurando un sitio en tiempo real
 
Procesar estado
Procesar estadoProcesar estado
Procesar estado
 
Crear modulos
Crear modulosCrear modulos
Crear modulos
 
Procesar estado
Procesar estadoProcesar estado
Procesar estado
 
Prac 2 nequiz
Prac 2 nequizPrac 2 nequiz
Prac 2 nequiz
 
Introducción a DJango
Introducción a DJangoIntroducción a DJango
Introducción a DJango
 
Introducción a Flask
Introducción a FlaskIntroducción a Flask
Introducción a Flask
 
Practica utilizacion de beans en jsp
Practica  utilizacion de beans en jspPractica  utilizacion de beans en jsp
Practica utilizacion de beans en jsp
 
Tema2[php]
Tema2[php]Tema2[php]
Tema2[php]
 
Aplicaciones para sistemas distribuidos slide
Aplicaciones para sistemas distribuidos slideAplicaciones para sistemas distribuidos slide
Aplicaciones para sistemas distribuidos slide
 
89 Php. Tablas Inno Db
89 Php. Tablas Inno Db89 Php. Tablas Inno Db
89 Php. Tablas Inno Db
 
Guiapractica de bd completa
Guiapractica de bd completaGuiapractica de bd completa
Guiapractica de bd completa
 
2 4 formularios_php
2 4 formularios_php2 4 formularios_php
2 4 formularios_php
 

Destacado

Manuales Sistemas de Información
Manuales Sistemas de InformaciónManuales Sistemas de Información
Manuales Sistemas de InformaciónBENHUR B G
 
Manual de usuario programacion
Manual de usuario programacionManual de usuario programacion
Manual de usuario programacionCisne Jum
 
Manual del programador
Manual del programadorManual del programador
Manual del programadorCRISSTHOFER
 
Manual oracle forms 6i
Manual oracle forms 6iManual oracle forms 6i
Manual oracle forms 6iUMSA
 
Sistemas de información
Sistemas de informaciónSistemas de información
Sistemas de informaciónguestd49fa4
 
Spot Libqual 2 Angers 2011
Spot Libqual 2 Angers 2011Spot Libqual 2 Angers 2011
Spot Libqual 2 Angers 2011Nicolas Alarcon
 
Metro paristrafic
Metro paristraficMetro paristrafic
Metro paristraficpungApps
 
Quel temps fait il?
Quel temps fait il?Quel temps fait il?
Quel temps fait il?rebenico2000
 
Presentacion de la cancion numeros copia
Presentacion de la cancion numeros   copiaPresentacion de la cancion numeros   copia
Presentacion de la cancion numeros copiaYeye Olave
 
Vieux Marseille Avec Gabin
Vieux Marseille Avec GabinVieux Marseille Avec Gabin
Vieux Marseille Avec Gabintopofthepop84
 
Correlation between physical physical & virtual life.
Correlation between physical physical & virtual life.Correlation between physical physical & virtual life.
Correlation between physical physical & virtual life.Geoffrey Dorne
 

Destacado (20)

Manuales Sistemas de Información
Manuales Sistemas de InformaciónManuales Sistemas de Información
Manuales Sistemas de Información
 
Manual de usuario programacion
Manual de usuario programacionManual de usuario programacion
Manual de usuario programacion
 
Manual del programador
Manual del programadorManual del programador
Manual del programador
 
Clases de php
Clases de phpClases de php
Clases de php
 
Practica form builder
Practica form builderPractica form builder
Practica form builder
 
Forms 6i guide
Forms 6i guideForms 6i guide
Forms 6i guide
 
Opentaps
OpentapsOpentaps
Opentaps
 
Manual oracle forms 6i
Manual oracle forms 6iManual oracle forms 6i
Manual oracle forms 6i
 
Sistemas de información
Sistemas de informaciónSistemas de información
Sistemas de información
 
Ishibumi
IshibumiIshibumi
Ishibumi
 
Formation accueil modif 22 mai 2016
Formation accueil modif 22 mai 2016Formation accueil modif 22 mai 2016
Formation accueil modif 22 mai 2016
 
Caricaturaa
CaricaturaaCaricaturaa
Caricaturaa
 
Spot Libqual 2 Angers 2011
Spot Libqual 2 Angers 2011Spot Libqual 2 Angers 2011
Spot Libqual 2 Angers 2011
 
Metro paristrafic
Metro paristraficMetro paristrafic
Metro paristrafic
 
Memorias Módulo Social
Memorias Módulo SocialMemorias Módulo Social
Memorias Módulo Social
 
Quel temps fait il?
Quel temps fait il?Quel temps fait il?
Quel temps fait il?
 
Presentacion de la cancion numeros copia
Presentacion de la cancion numeros   copiaPresentacion de la cancion numeros   copia
Presentacion de la cancion numeros copia
 
Caraicattuuuraa
CaraicattuuuraaCaraicattuuuraa
Caraicattuuuraa
 
Vieux Marseille Avec Gabin
Vieux Marseille Avec GabinVieux Marseille Avec Gabin
Vieux Marseille Avec Gabin
 
Correlation between physical physical & virtual life.
Correlation between physical physical & virtual life.Correlation between physical physical & virtual life.
Correlation between physical physical & virtual life.
 

Similar a SEB-ONLINE: Sistema experto bovino en línea

Similar a SEB-ONLINE: Sistema experto bovino en línea (20)

Documentación de pruebas del software
Documentación de pruebas del softwareDocumentación de pruebas del software
Documentación de pruebas del software
 
Informe grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuencaInforme grupal f_arinango_ cuenca
Informe grupal f_arinango_ cuenca
 
EXAMEN
EXAMENEXAMEN
EXAMEN
 
Documentación de pruebas del software
Documentación de pruebas del softwareDocumentación de pruebas del software
Documentación de pruebas del software
 
Módulo de PHP
Módulo de PHPMódulo de PHP
Módulo de PHP
 
¿Cómo mantener tu javascript?: Buenas prácticas
¿Cómo mantener tu javascript?: Buenas prácticas¿Cómo mantener tu javascript?: Buenas prácticas
¿Cómo mantener tu javascript?: Buenas prácticas
 
Introducción a TDD y PHPUnit
Introducción a TDD y PHPUnitIntroducción a TDD y PHPUnit
Introducción a TDD y PHPUnit
 
4.Programación con PHP y MySQL
4.Programación con PHP y MySQL4.Programación con PHP y MySQL
4.Programación con PHP y MySQL
 
Sistema experto bovino online
Sistema experto bovino onlineSistema experto bovino online
Sistema experto bovino online
 
9.laravel
9.laravel9.laravel
9.laravel
 
Introducción a AngularJS
Introducción a AngularJS Introducción a AngularJS
Introducción a AngularJS
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGR
 
Php Basico
Php BasicoPhp Basico
Php Basico
 
Manual Basico De Struts
Manual Basico De StrutsManual Basico De Struts
Manual Basico De Struts
 
Php1
Php1Php1
Php1
 
Php1 sesión 6
Php1 sesión 6Php1 sesión 6
Php1 sesión 6
 
Clase 1 Programacion Android
Clase 1 Programacion AndroidClase 1 Programacion Android
Clase 1 Programacion Android
 
APIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptxAPIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptx
 
Semana 1 Estructuras de Datos en Java
Semana 1   Estructuras de Datos en JavaSemana 1   Estructuras de Datos en Java
Semana 1 Estructuras de Datos en Java
 
Tallerprogramacion
TallerprogramacionTallerprogramacion
Tallerprogramacion
 

SEB-ONLINE: Sistema experto bovino en línea

  • 1. UNIVERSIDAD DEL TOLIMA IDEAD PROGRAMA INGENIERIA DE SISTEMAS POR CICLOS PROYECTO: DIAGNOSTICACION DE ENFERMEDADES EN EL GANADO BOVINO ASISTIDO POR UN SOFTWARE DE SISTEMA EXPERTO. MANUAL DEL PROGRAMADOR PROYECTO FIN DE CARRERA REALIZADO POR: EDWIN GEOVANNY SANCHEZ JARAMILLO GIOVANNI ALEJANDRO GONZALEZ GARAVITO HENRY MAURICIO ARENAS CANIZALES OSCAR ANIBAL BERNAL GARCIA DIRIGIDO POR EL TUTOR: ANGEL ALBERTO CANO INGENIERO DE SISTEMAS Ibagué 23 de junio 2013
  • 2. SOFTWARE DE GESTION Y DIAGNOSTICO VIRTUAL DE TRATAMIENTO DE ENFERMEDADES EN EL GANADO BOVINO Trabajo presentado como requisito para proyecto de investigación formativa CICLO PROFESIONAL EDWIN GEOVANNY SANCHEZ JARAMILLO GIOVANNI ALEJANDRO GONZALEZ GARAVITO HENRY MAURICIO ARENAS CANIZALES OSCAR ANIBAL BERNAL GARCIA UNIVERSIDAD DEL TOLIMA INSTITUTO DE EDUCACION A DISTANCIA IDEAD INGENIERIA DE SISTEMAS POR CICLOS IBAGUE -TOLIMA 2013
  • 4. INDICE (MANUAL DEL PROGRAMADOR) 1. INTRODUCCION AL MANUAL DEL PROGRAMADOR………………….1 1.- Introducción…………………………………………....1 2. PROGRAMACION………………………….…………………………………2 1.- Fundamentos de Programación……………………..1 2.- Programación del Programa Principal.....……….....2
  • 5. 1. INTRODUCCIO AL MANUAL DEL PROGRAMADOR. 1.- Introducción. El propósito de este manual del programador, es dar a conocer al lector los códigos fuentes del programa realizado. Para ello tratamos de forma amena y concisa cada uno de los códigos junto con la programación utilizada en el desarrollo del software, esto con el fin de que el usuario pueda modificar a gusto alguno de los valores y parámetros de las funciones que se encuentran expuestas en la programación del SBE-ONLINE.
  • 6. 2. PROGRAMACION 1.- Fundamentos de programación. Para inicial el programa se utilizan dos opciones esenciales, primero registrarse, y segundo después de estar registrado, Loguearse. Hemos incluido un ejemplo que ilustrara fácilmente la iniciación de los dos pasos anteriormente enunciados, esto será utilizado para que los usuarios nuevos se enteren de cómo se da inicio o arranque al programa. Primero Registrarse: Damos clic en, ¿no estas registrado?
  • 7. Segundo paso: al introducir el usuario y la contraseña creada el programa nos da la bienvenida mostrándonos un menú donde encontraremos las diferentes funciones que nos ofrece el servicio del programa. Lo presentado anteriormente es únicamente la forma de inicio necesario para el programa, la cual es la forma estándar de inicio. De esta manera estamos dentro del formulario de registro de usuario Luego de llenar los espacios damos registrar Registros Consultas Diagnostico
  • 8. 2.- Programación del programa principal user_auth_fns: mysqli_query: Realiza una consulta o busqueda(query) en la base de datos. Para consultas que no sean DML (distintas de INSERT, UPDATE o DELETE), esta funcion es similar a invocar a mysqli_real_query() seguida de mysqli_use_result() o mysqli_store_result(). <? require_once("db_fns.php"); $error; function register($username, $email, $password, $nombre, $apellido,$celular) { if ($conn = db_connect()) { // check if username is unique $result=mysqli_query($conn,"select * from user where username='$username'"); if (!$result){ global $error; $error="No se pudo ejecutar la petición"; return false; exit; }else{ $num=mysqli_num_rows($result);
  • 9. if($num > 0) { global $error; $error= "Ese nombre de usuario ya esta ocupado - vuelve y elige otro."; return false; exit; }else{ $result=mysqli_query($conn,"insert into user (username, pass, email, nombre, apellido, celular) values ('$username', SHA1('$password'), '$email','$nombre','$apellido','$celular')"); if (!$result) { global $error; $error="No has podido ser registrado en la base de datos - por favor inténtalo más tarde."; return false; }else return true; } } } else { global $error; $error= "No se puede conectar al servidor de la base de datos - por favor inténtalo más tarde."; return false; } } function login($username, $password) { if ($conn = db_connect()){ // check if username is unique $result = mysqli_query($conn,"select * from user where username='$username' and pass = SHA1('$password')"); $num=mysqli_num_rows($result); if ($num > 0) return true; else return false; } } function check_valid_user() // see if somebody is logged in and notify them if not { if (isset($_SESSION["valid_user"])) { $valid_user = $_SESSION["valid_user"];
  • 10. echo "Logged in como $valid_user"; echo "<br>"; } else { // they are not logged in do_html_heading("Problema:"); echo "No estás logged in.<br>"; do_html_url("index.php", "Login"); do_html_footer(); exit; } } ?> show_med <? require("bovino_fns.php"); session_start(); do_html_header("Medicamentos"); check_valid_user(); $med_array = get_meds($_GET["cod]); display_meds($med_array); do_html_footer();
  • 11. ?> register_new: Nota: ECHO no es realmente una función (es una construcción del lenguaje), por lo que no es necesario utilizar paréntesis con él. Echo (a diferencia de algunas otras construcciones de lenguaje) no se comporta como una función, por lo que no siempre puede ser utilizado en el contexto de una función. Además, si usted desea pasar más de un parámetro de eco, los parámetros no deben estar encerrados entre paréntesis.
  • 12. $_POST: Un array asociativo de variables pasadas al script actual a través del método HTTP POST. $HTTP_POST_VARS contiene la misma información inicial, pero no es una superglobal. (Nótese que $HTTP_POST_VARS y $_POST son diferentes variables y que PHP las trata de forma distinta) <? require_once("bovino_fns.php"); session_start(); if(isset($_POST) && !empty($_POST)) { if(filled_out($_POST)){ var_dump($_POST); $pass = $_POST["pass"]; if (strlen($pass)<6 || strlen($pass) >100) { do_html_header("Problema:"); echo "Tu contraseña debe tener minimo 6 caracteres y max 100 ." ."Por favor vuelve e inténtalo de nuevo."; do_html_footer(); exit; } if ($pass != $_POST["passwd2"]) { do_html_heading("Problema:"); echo "La contraseña que has entrado no concuerda - por favor vuelve" ." e inténtalo de nuevo."; do_html_url("register_form.php", "atras"); do_html_footer(); exit; } if (!valid_email($_POST["email"])) { do_html_header("Problema:"); echo "No es una dirección email válida. Por favor vuelve " ." e inténtalo de nuevo."; do_html_footer(); exit; }
  • 13. $celular = $_POST["celular"]; if (!valid_cel($celular)) { do_html_header("Problema:"); echo "No es un numero celular válido. Por favor vuelve " ." e inténtalo de nuevo."; do_html_footer(); exit; } if (strlen($celular)<10) { do_html_header("Problema:"); echo "Tu celular debe tener 10 numeros ." ."Por favor vuelve e inténtalo de nuevo."; do_html_footer(); exit; } $reg_result = register($_POST["username"], $_POST["email"], $pass,$_POST["nombre"],$_POST["apellido"],$celular); if ($reg_result){ $valid_user = $_POST["username"]; $_SESSION["valid_user"] = $valid_user; do_html_header("Registro correcto"); echo "Tu registro se ha hecho correctamente."; display_user_menu(); do_HTML_URL("member.php", "Ir a la página de miembros"); do_html_footer(); exit; }else{ do_html_header("Problema:"); echo"no se pudo registrar el usuario "; echo $GLOBALS['error']; do_html_footer(); exit; } }else{ do_html_header("Problema:"); echo "No has cubierto el formulario correctamente - Por favor vuelve e inténtalo de nuevo. "; do_html_footer(); exit; } } else { echo '<script text="text/javascript">location.href="register_form.php"</script>' ; }
  • 15. register_ani: $GLOBALS — Hace referencia a todas las variables disponibles en el ámbito global Descripción: Es un array asociativo que contiene las referencias a todas la variables que están definidas en el ámbito global del script. Los nombres de las variables son las claves del array. <? require_once("bovino_fns.php"); session_start(); if(isset($_POST) && !empty($_POST)) { if(filled_out($_POST)){ $username= $_SESSION["valid_user"]; $reg_result = registerAnimal($username, $_POST["nomanimal"], $_POST["estatura"], $_POST["peso"], $_POST["color"], $_POST["raza"], $_POST["sexo"], $_POST["nacimiento"]); if ($reg_result){ do_html_header("Registro correcto");
  • 16. echo "Tu registro se ha hecho correctamente."; display_user_menu(); do_html_footer(); exit; }else{ do_html_header("Problema:"); echo"no se pudo registrar el animal. "; echo $GLOBALS['error']; display_user_menu(); do_html_footer(); exit; } }else{ do_html_header("Problema:"); echo "No has cubierto el formulario correctamente - Por favor vuelve e inténtalo de nuevo."; do_html_footer(); exit; } } else { echo '<script text="text/javascript">location.href="ani_regis_form.php"</script> '; } ?>
  • 17. output_fn: <INPUT> La tag <input> define la introducción de variables. Junto a esta tag encontraremos los siguientes atributos: type="" Indicará el tipo de variable a introducir. text Indica que el campo a introducir será un texto. Sus atributos: maxlenght="" Seguido de un valor que limitará el número máximo de carácteres a introducir en ese campo. size="" Seguido de un valor que limitará el numero de carácteres a mostrar en pantalla. value="" Indica que no hay valor inicial del campo. Password Indica que el campo a introducir será una palabra de paso. Mostrará asteriscos en lugar de letras escritas. Sus atributos serán los mismos que para text.
  • 18. Checkbox El campo se elegirá marcando de entre varias opciones una casilla cuadrada. value="" Entre comillas se indicará el valor de la casilla. checked La casilla aparecerá marcada por defecto. Radio El campo se elegirá marcando de entre varias opciones una casilla circular. value="" Entre comillas se indicará el valor de la casilla. Image El campo contendrá el valor en coordenadas del punto de la imagen que haya pinchado. Atributo obligatorio: src="" Entre comillas escribiremos el nombre del archivo de imagen. hidden El visitante no puede modificar su valor ya que no está visible. Se manda siempre junto al atributo value= seguido de su valor entre comillas. Name="" Indicará el nombre que se asigna a un determinado campo. <?php function do_html_header($title) { // print an HTML header ?> <!DOCTYPE HTML> <html lang="es"> <head> <title><?=$title?></title> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial- scale=1, maximum-scale=1"> <link rel="stylesheet" href="js/jquery.mobile.structure.css" /> <link rel="stylesheet" href="css/jquery.mobile.css" /> <script src="js/jquery.js"></script> <script src="js/jquery.mobile.js"></script> <style type="text/css"> li.centrado, h1.centrado,p.centrado{text-align:center;} </style> </head> <body> <div data-role="page"> <? if($title) do_html_heading($title);
  • 19. } function do_html_footer() { // print an HTML footer ?> </div><!--page--> </body> </html> <? } function do_html_heading($heading) { // print heading ?> <header data-role="header"> <h1><?=$heading?></h1> <a href="#" data-rel="back">atras</a> <a href="info.php">info</a> </header> <? } function display_user_menu() { // display the menu options on this page ?> <footer data-role="footer" data-position="fixed"> <nav data-role="navbar"> <ul> <li><a href="member.php" data-icon="home">Inicio</a></li> <li><a href="ani_regis_form.php" data-icon="edit">Registrar animal</a></li> <li><a href="ani_query_form.php" data- icon="search">Consultar animales</a></li> <li><a href="diag_form.php" data- icon="grid">Diagnosticar</a></li> <li><a href="logout.php" data-icon="back">Logout</a></li> </ul> </nav> </footer> <? } function do_html_URL($url, $name) { // output URL as link and br ?> <br><a href="<?=$url?>"><?=$name?></a><br> <?
  • 20. } function display_site_info() { // display some marketing info ?> <section> <p class="centrado"> Registra tus animales! diagnostica sus enfermedades! </p> </section> <? } function display_login_form() { ?> <article data-role="content"> <h1>Login</h1> <a href="register_form.php" data- transition="slidedown">¿No estas registrado?</a> <form action="member.php" method="post"> <table> <tr> <td>Usuario:</td> <td><input type="text" name=username required ></td> </tr> <tr> <td>Contraseña:</td> <td><input type="password" name=pass required></td> </tr> <tr> <td></td> <td><input type="submit" value="conectar"></td> </tr> </table> </form> </article> <? } function display_registration_form() { ?> <article data-role="content">
  • 21. <form action="register_new.php" method="post" > <table> <tr> <td>Nombre usuario<br>(max 20 caract):</td> <td><input type=text name=username size=16 maxlength=20 required></td></tr> <tr> <td>Contraseña <br>(min 6 caract):</td> <td ><input type=password name=pass size=16 maxlength=16 required></td></tr> <tr> <td>Confirmar contraseña:</td> <td><input type=password name=passwd2 size=16 maxlength=16 required></td></tr> <tr> <td>Direccion email:</td> <td><input type=email name=email placeholder="usuario@dominio.com" size=30 maxlength=100 required></td></tr> <tr> <td>Nombre:</td> <td><input type=text name=nombre size=30 maxlength=50 required></td></tr> <tr> <td>Apellido:</td> <td><input type=text name=apellido size=30 maxlength=50 required></td></tr> <tr> <td>celular:</td> <td><input type=text name=celular size=10 maxlength=10 required></td></tr> <tr> <td colspan=2 align=center> <input type=submit value="Registrar"></td></tr> </table> </form> </article> <? } function display_animal($resultado) { $num=mysqli_num_rows($resultado); if($num == 0){ echo "No has registrado animales"; display_user_menu(); do_html_footer(); exit;
  • 22. } ?> <article data-role="content"> <ul data-role="listview" data-filter="true"> <? for($i=0; $i<$num; $i++){ $row=mysqli_fetch_array($resultado); echo "<li>"; echo "<strong>Nombre: </strong> "; echo stripslashes($row[0]); echo "<br>"; echo "<strong>Estatura: </strong> "; echo stripslashes($row[1])." cm"; echo "<br>"; echo "<strong>Peso: </strong> "; echo stripslashes($row[2])." Kg"; echo "<br>"; echo "<strong>Color: </strong> "; echo stripslashes($row[3]); echo "<br>"; echo "<strong>Raza: </strong> "; echo stripslashes($row[4]); echo "<br>"; echo "<strong>Sexo: </strong> "; echo stripslashes($row[5]); echo "<br>"; echo "<strong>Edad: </strong> "; echo stripslashes($row[6]); echo "</li>n"; } ?> </ul> </article> <? } function display_add_ani_form() { // display the form for people to ener a new animal in ?> <article data-role="content"> <form action="register_ani.php" method="post" > <!--<form action="probador.php" method="post" > --> <table> <tr> <td>Nombre bovino:</td> <td><input type=text name=nomanimal size=20 maxlength=50 required></td>
  • 23. </tr> <tr> <td>Estatura(cm):</td> <td><input type=number min=0 name=estatura size=10 maxlength=10 required></td></tr> <tr> <td>Peso(Kg):</td> <td><input type=number min=0 name=peso size=10 maxlength=10 required></td></tr> <tr> <td>Color:</td> <td><input type=text name=color size=10 maxlength=30 required></td></tr> <tr> <td>Raza:</td> <td><input type=text name=raza size=10 maxlength=30 required></td></tr> <tr> <td>Sexo:</td> <td><input type=radio name=sexo value=m checked="checked"/>M <input type=radio name=sexo value=f/>F </td> </tr> <tr> <td>Nacimiento:</td> <td><input type=date name=nacimiento value="2013-01-29" size=10 maxlength=10 required></td></tr> <tr> <td colspan=2 align=center> <input type=submit value="Registrar"></td></tr> </table> </form> </article> <? } function display_diag_form() { ?> <article data-role="content"> <form method=post action="diag_query.php"> <fieldset data-role="fieldcontain"> <label for="sin1">Sintoma:</label> <input id="sin1" type="text" name=sin1 size="30" required> </fieldset> <fieldset data-role="fieldcontain"> <label for="sin2">Sintoma:</label> <input id="sin2" type="text" name=sin2 size="30"> </fieldset> <fieldset data-role="fieldcontain">
  • 24. <label for="sin3">Sintoma:</label> <input id="sin3" type="text" name=sin3 size="30"> </fieldset> <fieldset data-role="fieldcontain"> <label for="sin4">Sintoma:</label> <input id="sin4" type="text" name=sin4 size="30"> </fieldset> <input type=submit data-role="button" value="Consultar" > </form> </article> <? } function display_diag($resultado) { //$array = mysqli_fetch_all($resultado); $num=mysqli_num_rows($resultado); if($num == 0) { echo "No hay coincidencias, cambia los terminos de consulta"; display_user_menu(); do_html_footer(); exit; } ?> <article data-role="content"> <ul data-role="listview" data-filter="true" data-inset="true"> <? for($i=0; $i<$num; $i++){ $row=mysqli_fetch_array($resultado); echo "<li>"; echo "<strong>Enfermedad: </strong> "; echo stripslashes($row[0]); echo "<br>"; echo "<strong>coincidencias: </strong> "; echo stripslashes($row[1]); $url="show_med.php?cod=".($row[2]); do_html_url($url,"medicamentos"); echo "</li>"; } ?> </ul> </article> <? } function display_meds($resultado){ $num=mysqli_num_rows($resultado); if ($num==0)
  • 25. echo "No hay medicamentos disponibles<br>"; else { ?> <article data-role="content"> <ul data-role="listview" data-inset="true"> <? for($i=0; $i<$num; $i++){ $row=mysqli_fetch_array($resultado); echo "<li>"; echo stripslashes($row[0]); echo "</li>"; } ?> </ul> </article> <? } } ?> _____________________________________________________________________ Member:
  • 26. $_SESSION: Las sesiones son una forma sencilla de almacenar datos para usuarios de manera individual usando un ID de sesión único. Esto se puede usar para hacer persistente la información de estado entre peticiones de páginas. Los ID de sesiones normalmente son enviados al navegador mediante cookies de sesión, y el ID se usa para recuperar los datos de sesión existente. La ausencia de un ID o una cookie de sesión permite saber a PHP para crear una nueva sesión y generar un nuevo ID de sesión. Las sesiones siguen un flujo de trabajo sencillo. Cuando una sesión se inicia, PHP recuperará una sesión existente usando el ID pasado (normalmente desde una cookie de sesión) o, si no se pasa una sesión, se creará una sesión nueva. PHP rellenará la variable superglobal $_SESSION con cualesquiera datos de sesión de que se inicie la seisón. Cuando PHP se cierra, automáticamente toma el contenido de la variable superglobal $_SESSION, la serializa, y la envía para almacenarla usando el gestor de almacenamiento de sesiones. <? // include function files for this application require_once("bovino_fns.php"); session_start(); if (isset($_POST["username"])) { $username = $_POST["username"]; $pass = $_POST["pass"]; if (login($username, $pass)) { // if they are in the database register the user id $valid_user = $username; $_SESSION["valid_user"]=$username; } else { // unsuccessful login
  • 27. do_html_header("Problema:"); echo "No has podido hacer logged in. Debes estar logged in para ver esta p�gina."; do_html_url("index.php", "Login"); do_html_footer(); exit; } } do_html_header("Menu"); check_valid_user(); ?> <article data-role="content"> <h1 class="centrado">Bienvenidos al sistema experto bovino online</h1> </article> <? // give menu of options*/ display_user_menu(); do_html_footer(); ?>
  • 28. Logout: <? // include function files for this application require_once("bovino_fns.php"); session_start(); // start output html do_html_header("Logging Out"); if (!empty($_SESSION["valid_user"])) { unset($_SESSION["valid_user"]); $result_dest = session_destroy(); if ($result_dest) { // if they were logged in and are now logged out echo "chao, vuelve pronto<br>"; do_html_url("index.php", "Login"); } else { // they were logged in and could not be logged out echo "No hemos podido hacer Log Out.<br>";
  • 29. } } else { // if they weren't logged in but came to this page somehow echo "No te encuentras logged in, así que no hemos podido hacer logged out.<br>"; do_html_url("index.php", "Login"); } do_html_footer(); ?> Info: <? // include function files for this application require_once("bovino_fns.php"); // start output html do_html_header("Info"); ?> <ul data-role="listview" data-inset="true"> <li class="centrado">Sistema experto bovino virtual V 1.0<br>
  • 30. Proyecto de investigacion formativa<br> Universidad del Tolima<br> Ibague<br> 2013 </li> </ul> <? do_html_footer(); ?> Index: <?php require_once("bovino_fns.php"); do_html_header("Sistema experto bovino online"); display_site_info(); display_login_form(); do_html_footer(); ?> diag_query: <? require_once("bovino_fns.php"); session_start(); do_html_header("Diagnostico"); check_valid_user(); if (isset($_POST["sin1"])) { $var1=prepararsintoma($_POST["sin1"]); $var2=prepararsintoma($_POST["sin2"]); $var3=prepararsintoma($_POST["sin3"]); $var4=prepararsintoma($_POST["sin4"]); $cod1=codificarsintoma($var1); $cod2=codificarsintoma($var2); $cod3=codificarsintoma($var3); $cod4=codificarsintoma($var4); if($resultado=get_enfermedad($cod1,$cod2,$cod3,$cod4)){ display_diag($resultado); } }
  • 31. else echo '<script text="text/javascript">location.href="diag_form.php"</script>'; display_user_menu(); do_html_footer(); ?> _____________________________________________________________________ diag_form: <? // include function files for this application require_once("bovino_fns.php"); session_start(); // start output html do_html_header("Diagnosticar enfermedad"); check_valid_user(); display_diag_form(); display_user_menu();
  • 32. do_html_footer(); ?> db_fns: Arrays Un array en PHP es realmente un mapa ordenado. Un mapa es un tipo de datos que asocia valores con claves. Este tipo es optimizado para varios usos diferentes; puede ser usado como una matriz real, una lista (vector), una tabla asociativa (una implementación de un mapa), diccionario, colección, pila, cola, y posiblemente más. Ya que los valores de un array pueden ser otros arrays, árboles y también son posibles arrays multidimensionales. <? function db_connect() { //$connect = mysqli_connect("localhost", "observat_bovino", "*1085*sb","observat_sebovino"); $connect = mysqli_connect("localhost", "root", "","login"); if (!$connect){ echo "error al conectar: ".mysqli_connect_error(); return false; }else return $connect; } function db_result_to_array($result) { $res_array = (); for ($count=0; $row = @mysql_fetch_array($result); $count++) $res_array[$count] = $row; return $res_array; } ?>
  • 33. _____________________________________________________________________ data_valid_fns: foreach: El constructor foreach proporciona un modo sencillo de iterar sobre arrays. foreach funciona sólo sobre arrays y objetos, y emitirá un error al intentar usarlo con una variable de un tipo diferente de datos o una variable no inicializada. <? function filled_out($form_vars) { $flag=true; foreach ($form_vars as $key => $value) { if (empty($value)) { $flag=false; } } return $flag; } function valid_email($address) { // check an email address is possibly valid if (preg_match("#^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9- .]+$#", $address)) return true; else return false; } function valid_cel($cel){ if (preg_match("#[0-9.]#", $cel)) return true; else return false; } function valid_string($str){ if (preg_match("#[a-zA-Z]#", $str)) return true; else return false; } ?> ____________________________________________________________________
  • 34. bovino_fns: <? // We can include this file in all our files // this way, every file will contain all our functions require_once("data_valid_fns.php"); require_once("db_fns.php"); require_once("user_auth_fns.php"); require_once("output_fns.php"); require_once("animal_fns.php"); ?> animal_fns:
  • 35. trigger_error — Generar un mensaje de error/advertencia/aviso de nivel de usuario Se usa para provocar una condición de error de usuario, se puede utilizar junto con el gestor de errores interno o con una función definida por el usuario que ha sido establecida como el nuevo gestor de errores. Esta función es útil cuando se necesita generar una respuesta en particular a una excepción en tiempo de ejecución <? require_once("db_fns.php"); $error; function registerAnimal($username, $nomanimal, $estatura, $peso, $color, $raza, $sexo, $nacimiento){ // connect to db if ($conn = db_connect()) { // check if nomanimal is unique $result=mysqli_query($conn,"select * from animal where username='$username' and nomanimal='$nomanimal'"); if (!$result) { global $error; $error= "No se pudo ejecutar la peticion"; return false; exit; }else{ $num=mysqli_num_rows($result); if($num > 0) { global $error; $error="Ese nombre de animal ya esta ocupado - vuelve y elige otro."; return false; exit; }else{ $resultado=mysqli_query($conn,"insert into animal (username, nomanimal, estatura, peso, color, raza,sexo,nacimiento) values ('$username','$nomanimal', '$estatura','$peso','$color','$raza','$sexo','$nacimiento')"); if (!$resultado) { global $error; $error= "No has podido hacer el registro en la base de datos - por favor intentalo mas tarde."; return false; }else return true; } }
  • 36. } else { global $error; $error="No se ha podido conectar a la base datos"; return false; } } function get_animal($username) { //extract from the database all the animals this user has stored if ($conn = db_connect()) { $sql="select nomanimal,estatura,peso,color,raza,sexo,(YEAR(CURDATE())- YEAR(nacimiento)) - (RIGHT(CURDATE(),5)<RIGHT(nacimiento,5)) as edad from animal where username = '$username'"; /* $result = $conn->query( "select nomanimal,estatura,peso,color,raza,sexo,(YEAR(CURDATE())- YEAR(nacimiento)) - (RIGHT(CURDATE(),5)<RIGHT(nacimiento,5)) as edad from animal where username = '$username'");*/ $result=mysqli_query($conn,$sql); if (!$result) return false; } return $result; }; function get_enfermedad($sin1,$sin2="",$sin3="",$sin4=""){ if ($conn = db_connect()) { $sql="SELECT e.nombre, count(d.cod_s) as coincide,e.codigo from enfermedad as e, detalle as d where e.codigo=d.cod_e and d.cod_s in('$sin1','$sin2','$sin3','$sin4') group by e.nombre order by count(d.cod_s) desc limit 3"; //$result = $conn->query($sql); $result=mysqli_query($conn,$sql); if(!$result) return false; return $result; } else return false; } function get_cod_sin($s){ if ($conn = db_connect()) { $sql="select codigo_s from sintomas where nombre_s='$s'"; //$result = $conn->query($sql); $result=mysqli_query($conn,$sql);
  • 37. if (!$result) return false; return $result; } else return false; } function prepararsintoma($value){ if(!empty($value)){ $value=strip_tags(trim($value)); $valor=addslashes($value); return $valor; } else return false; } function codificarsintoma($x){ if($codigo = get_cod_sin($x)){ $array = mysqli_fetch_assoc($codigo); if(count($array) > 0) return $array['codigo_s']; else return false; } else return false; } function get_meds($cod){ if ($conn = db_connect()) { $sql = "select m.nom_med as nombre from medicamento as m, tratamiento as t where t.cod_enf='$cod' and t.cod_med=m.cod_med"; //$result = $conn->query($sql); $result=mysqli_query($conn,$sql); if (!$result) return false; //$array = mysqli_fetch_all($result); if(mysqli_num_rows($result) == 0) return false; return $result; } else return false; } ?>
  • 38. ani_regis_form: session_start — Iniciar una nueva sesión o reanudar la existente session_start() crea una sesión o reanuda la actual basada en un identificador de sesión pasado mediante una petición GET o POST, o pasado mediante una cookie. Cuando session_start() es llamada o cuando se auto inicia una sesión, PHP llamará a los gestores de almacenamiento de sesiones open y read. Éstos serán un gestor de almacenamiento proporcionado por omisión o por extensiones de PHP (como SQLite o Memcached); o pueden ser un gestor personalizado como está definido en session_set_save_handler(). La llamada de retorno read recuperará cualquier información se de sesión existente (almacenada en un formato serializado especial) y será deserializada y usada para rellenar automáticamente la variable superglobal $_SESSION cuando la llamada de retorno read devuelva la información de sesión guardada a la gestión de sesiones de PHP.
  • 39. Para usar una sesión nominada llame a session_name() antes de llamar a session_start(). <? // include function files for this application require_once("bovino_fns.php"); session_start(); // start output html do_html_header("Registrar Animal"); check_valid_user(); display_add_ani_form(); display_user_menu(); do_html_footer(); ?> _____________________________________________________________________ ani_query_form: start output: Esta función activará el almacenamiento en búfer de salida. Mientras dicho almacenamiento esté activo, no se enviará ninguna salida desde el script (aparte de cabeceras), en su lugar la salida se almacenará en un búfer interno.
  • 40. El contenido de este búfer interno se puede copiar a una variable de tipo string usando ob_get_contents(). Para producir la salida de lo almacenado en el búfer interno se ha de usar ob_end_flush(). De forma alternativa, ob_end_clean() desechará de manera silenciosa el contenido del búfer. <? // include function files for this application require_once("bovino_fns.php"); session_start(); // start output html do_html_header("Consultar animales"); check_valid_user(); if ($ani_array = get_animal($_SESSION["valid_user"])){ display_animal($ani_array); } display_user_menu(); do_html_footer(); ?>