Download - Manual de programador sistema experto bovino online

Transcript
Page 1: Manual de programador   sistema experto bovino online

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

Page 2: Manual de programador   sistema experto bovino online

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

Page 3: Manual de programador   sistema experto bovino online

SEB-ONLINE

SISTEMA EXPERTO BOVINO – ONLINE

Page 4: Manual de programador   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

Page 5: Manual de programador   sistema experto bovino online

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.

Page 6: Manual de programador   sistema experto bovino 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?

Page 7: Manual de programador   sistema experto bovino online

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

Page 8: Manual de programador   sistema experto bovino online

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);

Page 9: Manual de programador   sistema experto bovino online

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"];

Page 10: Manual de programador   sistema experto bovino online

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();

Page 11: Manual de programador   sistema experto bovino online

?>

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.

Page 12: Manual de programador   sistema experto bovino online

$_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;

}

Page 13: Manual de programador   sistema experto bovino online

$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>'

;

}

Page 14: Manual de programador   sistema experto bovino online

?>

register_form:

<?

require_once("bovino_fns.php");

do_html_header("Registrar Usuario");

display_registration_form();

do_html_footer();

?>

Page 15: Manual de programador   sistema experto bovino online

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");

Page 16: Manual de programador   sistema experto bovino online

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>

';

}

?>

Page 17: Manual de programador   sistema experto bovino online

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.

Page 18: Manual de programador   sistema experto bovino online

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);

Page 19: Manual de programador   sistema experto bovino online

}

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>

<?

Page 20: Manual de programador   sistema experto bovino online

}

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">

Page 21: Manual de programador   sistema experto bovino online

<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="[email protected]" 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;

Page 22: Manual de programador   sistema experto bovino online

}

?>

<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>

Page 23: Manual de programador   sistema experto bovino online

</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">

Page 24: Manual de programador   sistema experto bovino online

<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)

Page 25: Manual de programador   sistema experto bovino online

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:

Page 26: Manual de programador   sistema experto bovino online

$_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

Page 27: Manual de programador   sistema experto bovino online

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();

?>

Page 28: Manual de programador   sistema experto bovino online

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>";

Page 29: Manual de programador   sistema experto bovino online

}

}

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>

Page 30: Manual de programador   sistema experto bovino online

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);

}

}

Page 31: Manual de programador   sistema experto bovino online

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();

Page 32: Manual de programador   sistema experto bovino online

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;

}

?>

Page 33: Manual de programador   sistema experto bovino online

_____________________________________________________________________ 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;

}

?>

____________________________________________________________________

Page 34: Manual de programador   sistema experto bovino online

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:

Page 35: Manual de programador   sistema experto bovino online

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;

}

}

Page 36: Manual de programador   sistema experto bovino online

}

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);

Page 37: Manual de programador   sistema experto bovino online

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;

}

?>

Page 38: Manual de programador   sistema experto bovino online

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.

Page 39: Manual de programador   sistema experto bovino online

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.

Page 40: Manual de programador   sistema experto bovino online

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();

?>