<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
--></style>
</head>
<body class='hmmessage'>
Probe con (cin.getline) pero nunca me toma los espacios en blanco la base de datos porq no recojo los datos con (cin) sino que los SETEO derecho..... y cada vez q hago un espacio solo guarda lo ultimo despues del espacio..... aca les dejo el codigo si alguien me puede decir como puedo hacer se lo agradeceria mucho!!!<br><br>#include <iostream><br>#include <C:\Documents and Settings\Emilio\Escritorio\PRODUCTO_ADMIN_FINAL2\Pro.h><br>#include "SQLdb.h"<br>#include <string><br>#include <conio.h><br>#include <stdio.h><br><br>using namespace std;<br><br>sql_db obj_mysql("localhost", "root", "root", "productos");<br><br>void leerMenu(int *);<br>void hacerMenu(int);<br>void agregarProducto();<br>void insertar(Pro p);<br>void modificarProducto();<br>void actualizar(Pro p, string nombre);<br>void actualizar2(Pro p, string nombre, string proveedor);<br>void buscarProducto();<br>void buscarProductoNombre();<br>void buscarProductoProveedor();<br>void buscarProductoCodigo();<br>void listarProductos();<br>void eliminarProducto();<br><br>void menuPrincipal();<br><br>int main(){<br> system("CLS");<br> menuPrincipal();<br> return 0;<br>}<br><br>void menuPrincipal(){<br> <br> int opcion;<br> system("CLS");<br> cout << "========================================================"<<endl;<br> cout << "| SANITARIOS RIKI |"<< endl;<br> cout << "| ADMINISTRADOR |"<<endl;<br> cout << "========================================================"<<endl;<br> cout << "| |"<< endl;<br> cout << "\n------------------------- MENU -----------------------" << endl;<br> cout << "1- Agregar Nuevo Producto" << endl;<br> cout << "2- Modificar un Producto" << endl;<br> cout << "3- Buscar un Producto" << endl;<br> cout << "4- Mostrar los Productos" << endl;<br> cout << "5- Eliminar un Producto" << endl;<br> cout << "6- Salir" << endl;<br> cout << "\n------------------------------------------------------\n" << endl;<br> leerMenu(&opcion);<br> hacerMenu(opcion);<br> cout << endl;<br> <br> system("PAUSE");<br>}<br><br>void leerMenu(int *opcion){<br> cout << "\nIngrese la opcion deseada: ";<br> cin.getline >> *opcion;<br>}<br><br>void hacerMenu(int opcion){<br> do{<br> switch(opcion){<br> case 1: agregarProducto(); menuPrincipal(); break;<br> case 2: modificarProducto(); menuPrincipal(); break;<br> case 3: buscarProducto(); menuPrincipal(); break;<br> case 4: listarProductos(); menuPrincipal(); break;<br> case 5: eliminarProducto(); menuPrincipal(); break;<br> case 6: exit(1);<br> default: cout << "\nError: Debe seleccionar una opcion entre 1 y 6\n\n"; system("PAUSE"); main();<br> }<br> }while(opcion>0 && opcion<7);<br>}<br>class Utilidades{ <br> public:<br> static bool validarIngreso(char*, char*, char[]); <br> static bool Numeros(char[]); <br> static bool Letras(char[]); <br> <br> <br>};<br><br>bool Utilidades::validarIngreso(char* tipo, char* mensaje, char ingreso[100]){<br> bool continua=false;<br> while(continua==false){<br> cout<<endl<<mensaje;cin>>ingreso;<br> if(tipo=="Numeros"){<br> continua=Utilidades::Numeros(ingreso);<br> }<br> else if(tipo=="Letras"){<br> continua=Utilidades::Letras(ingreso);<br> }<br> else if(tipo=="letrasYNumeros"){<br> continua=true;<br> }<br> }<br> <br> return continua; <br>}<br>bool Utilidades::Numeros(char ingreso[]){<br> int cont=0;<br> for(int i=0;i<strlen(ingreso);i++){<br> char numero=ingreso[i];<br> if(isalpha(numero)>0){<br> cont++;<br> }<br> } <br> if(cont==0){<br> return true;<br> }<br> else{<br> cout<<"Error debe ingresar numeros"<<endl<<endl;<br> return false;<br> }<br>}<br><br>bool Utilidades::Letras(char ingreso[]){<br> int cont=0;<br> for(int i=0;i<strlen(ingreso);i++){<br> char letra=ingreso[i];<br> if(isdigit(letra)>0){<br> cont++;<br> }<br> } <br> if(cont==0){<br> return true;<br> }<br> else{<br> cout<<"Error debe ingresar letras"<<endl<<endl; <br> return false;<br> }<br>}<br><br><br><br>void agregarProducto(){<br> system("CLS");<br> Pro p;<br> <br> char atrib[100];<br> if(Utilidades::validarIngreso("Letras", "Nombre: ", atrib)){<br> (p).setNombre(atrib);<br> cout<<endl;<br> }<br> char atrib2[100];<br> if(Utilidades::validarIngreso("Letras", "Proveedor: ", atrib2)){<br> (p).setProveedor(atrib2);<br> cout<<endl;<br> }<br> char atrib3[100];<br> if(Utilidades::validarIngreso("Numeros", "Codigo: ", atrib3)){<br> (p).setCodigo(atrib3);<br> cout<<endl;<br> }<br> char atrib4[100];<br> if(Utilidades::validarIngreso("Numeros", "Stock: ", atrib4)){<br> (p).setStock(atrib4);<br> cout<<endl;<br> }<br> char atrib5[100];<br> if(Utilidades::validarIngreso("Numeros", "Precio: ", atrib5)){<br> (p).setPrecio(atrib5);<br> cout<<endl;<br> }<br> <br> insertar(p);<br> <br> cout << "\nNuevo Producto Agregado Exitosamente\n" << endl;<br> cout << endl;<br> <br> system("PAUSE");<br> <br>}<br><br>void insertar(Pro p){<br> char *nom = strdup(p.getNombre());<br> char *prv = strdup(p.getProveedor());<br> char *cod = strdup(p.getCodigo());<br> char *sto = strdup(p.getStock());<br> char *pre = strdup(p.getPrecio()); <br> char *consulta;<br> char sentencia[] = "INSERT INTO pro(nombre, proveedor, codigo, stock, precio) VALUES (\'%s\', \'%s\', \'%s\', \'%s\', \'%s\')";<br> <br> consulta = new char[strlen(sentencia)+100];<br> sprintf(consulta, sentencia, nom, prv, cod, sto, pre);<br><br> obj_mysql.ejecutar_sql(consulta);<br>}<br> <br><br>void listarProductos(){<br> system("CLS");<br> MYSQL_RES *res;<br> MYSQL_ROW row;<br> int filas;<br> int columnas;<br> <br> res = obj_mysql.ejecutar_sql("SELECT *FROM pro");<br> filas = obj_mysql.numero_filas(res);<br> columnas = obj_mysql.numero_columnas(res);<br> <br> cout << "\n PRODUCTOS GUARDADOS " << endl;<br> cout << "\nCantidad de Productos en el Administrador: " << filas << endl;<br> cout << endl;<br> <br> for(int j=0; j<columnas; j++)<br> cout << obj_mysql.nombre_columna(res, j) << "\t ";<br> cout << endl;<br> <br> while(row = obj_mysql.obtener_fila(res)){<br> for(int j=0; j<columnas; j++){<br> cout << row[j] << "\t ";<br> }<br> cout << endl;<br> }<br> cout << endl;<br> system("PAUSE");<br>}<br><br>void buscarProducto(){<br> int opcion1;<br> system("CLS");<br> cout << "\n BUSCAR PRODUCTOS " << endl;<br> cout << "\n**************************************************************\n" << endl;<br> cout << "1- Buscar por Nombre" << endl;<br> cout << "2- Buscar por Proveedor" << endl;<br> cout << "3- Buscar por Codigo" << endl;<br> cout << "4- Salir" << endl;<br> cout << "\n**************************************************************\n" << endl;<br> <br> cout << "\nIngrese la Opcion Deseada: ";<br> cin.getline >> opcion1;<br> <br> do{<br> switch(opcion1){<br> case 1: buscarProductoNombre(); menuPrincipal(); break;<br> case 2: buscarProductoProveedor(); menuPrincipal(); break;<br> case 3: buscarProductoCodigo(); menuPrincipal(); break;<br> case 4: menuPrincipal();<br> default: cout << "\nError: Debe seleccionar una opcion entre 1 y 4\n\n"; system("PAUSE"); buscarProducto();<br> }<br> }while(opcion1>0 && opcion1<5);<br>}<br><br>void buscarProductoNombre(){<br> system("CLS");<br> char nombre[20];<br> char *consulta;<br> char sentencia[] = "SELECT *FROM pro WHERE nombre = \'%s\'";<br> MYSQL_RES *res;<br> MYSQL_ROW row;<br> int filas;<br> int columnas;<br> <br> cout << "Ingrese el Nombre a Buscar: ";<br> cin.getline >> nombre;<br> <br> system("CLS");<br> consulta = new char[strlen(sentencia)+strlen(nombre)];<br> sprintf(consulta, sentencia, nombre);<br> res = obj_mysql.ejecutar_sql(consulta);<br> filas = obj_mysql.numero_filas(res);<br> columnas = obj_mysql.numero_columnas(res);<br> <br> if(obj_mysql.filas_afectadas()>0){<br> for(int j=0; j<columnas; j++)<br> cout << obj_mysql.nombre_columna(res, j) << "\t ";<br> cout << endl;<br> <br> while(row = obj_mysql.obtener_fila(res)){<br> for(int j=0; j<columnas; j++){<br> cout << row[j] << "\t ";<br> }<br> cout << endl;<br> }<br> }else<br> cout << "El Contacto No Existe" << endl;<br> cout << endl;<br> system("PAUSE");<br>}<br><br>void buscarProductoProveedor(){<br> system("CLS");<br> char proveedor[20];<br> char *consulta;<br> char sentencia[] = "SELECT *FROM pro WHERE proveedor = \'%s\'";<br> MYSQL_RES *res;<br> MYSQL_ROW row;<br> int filas;<br> int columnas;<br> <br> cout << "Ingrese el Proveedor a Buscar: ";<br> cin.getline >> proveedor;<br> <br> system("CLS");<br> consulta = new char[strlen(sentencia)+strlen(proveedor)];<br> sprintf(consulta, sentencia, proveedor);<br> res = obj_mysql.ejecutar_sql(consulta);<br> filas = obj_mysql.numero_filas(res);<br> columnas = obj_mysql.numero_columnas(res);<br> <br> if(obj_mysql.filas_afectadas()>0){<br> for(int j=0; j<columnas; j++)<br> cout << obj_mysql.nombre_columna(res, j) << "\t ";<br> cout << endl;<br> <br> while(row = obj_mysql.obtener_fila(res)){<br> for(int j=0; j<columnas; j++){<br> cout << row[j] << "\t ";<br> }<br> cout << endl;<br> }<br> }else<br> cout << "El Producto No Existe" << endl;<br> cout << endl;<br> system("PAUSE");<br>}<br><br>void buscarProductoCodigo(){<br> system("CLS");<br> char codigo[10];<br> char *consulta;<br> char sentencia[] = "SELECT *FROM pro WHERE codigo = \'%s\'";<br> MYSQL_RES *res;<br> MYSQL_ROW row;<br> int filas;<br> int columnas;<br> <br> cout << "Ingrese el Codigo a Buscar: ";<br> cin.getline >> codigo;<br> <br> system("CLS");<br> consulta = new char[strlen(sentencia)+strlen(codigo)];<br> sprintf(consulta, sentencia, codigo);<br> res = obj_mysql.ejecutar_sql(consulta);<br> filas = obj_mysql.numero_filas(res);<br> columnas = obj_mysql.numero_columnas(res);<br> <br> if(obj_mysql.filas_afectadas()>0){<br> for(int j=0; j<columnas; j++)<br> cout << obj_mysql.nombre_columna(res, j) << "\t ";<br> cout << endl;<br> <br> while(row = obj_mysql.obtener_fila(res)){<br> for(int j=0; j<columnas; j++){<br> cout << row[j] << "\t ";<br> }<br> cout << endl;<br> }<br> }else<br> cout << "El Producto No Existe" << endl;<br> cout << endl;<br> system("PAUSE");<br>}<br><br>void eliminarProducto(){<br> system("CLS");<br> char nombre[20];<br> char proveedor[20];<br> char codigo[6];<br> char *consulta;<br> char sentenciaBuscar[] = "SELECT *FROM pro WHERE nombre = \'%s\'";<br> char sentenciaEliminar[] = "DELETE FROM pro WHERE nombre = \'%s\'";<br> char sentenciaEliminar2[] = "DELETE FROM pro WHERE nombre = \'%s\' AND proveedor = \'%s\'";<br> char sentenciaBuscar2[] = "SELECT *FROM pro WHERE nombre = \'%s\' AND proveedor = \'%s\'";<br> char sentenciaBuscar3[] = "SELECT *FROM pro WHERE nombre = \'%s\' AND proveedor = \'%s\' AND codigo = \'%s\'";<br> char sentenciaEliminar3[] = "DELETE FROM pro WHERE nombre = \'%s\' AND proveedor = \'%s\' AND codigo = \'%s\'";<br> MYSQL_RES *res;<br> MYSQL_ROW row;<br> int columnas;<br> <br> cout << "Ingrese el Nombre a Eliminar: ";<br> cin.getline >> nombre;<br> <br> consulta = new char[strlen(sentenciaBuscar)+strlen(nombre)];<br> sprintf(consulta, sentenciaBuscar, nombre);<br> res = obj_mysql.ejecutar_sql(consulta);<br> <br> if(obj_mysql.filas_afectadas()>0){<br> if(obj_mysql.filas_afectadas()==1){<br> row = obj_mysql.obtener_fila(res);<br> consulta = new char[strlen(sentenciaEliminar)+sizeof(nombre)]; <br> sprintf(consulta, sentenciaEliminar, nombre);<br> obj_mysql.ejecutar_sql(consulta);<br> cout << "\nEl Producto Fue Eliminado Exitosamente\n" << endl; <br> }else<br> if(obj_mysql.filas_afectadas()>1){<br> cout << "\nHay mas de un Producto con el Nombre " << nombre << endl;<br> <br> system("PAUSE");<br> system("CLS");<br> <br> cout << "Ingrese el Proveedor a Eliminar: ";<br> cin.getline >> proveedor;<br> <br> consulta = new char[strlen(sentenciaBuscar2)+strlen(nombre)+strlen(proveedor)];<br> sprintf(consulta, sentenciaBuscar2, nombre, proveedor);<br> res = obj_mysql.ejecutar_sql(consulta);<br> row = obj_mysql.obtener_fila(res);<br> <br> if(obj_mysql.filas_afectadas()>0){<br> if(obj_mysql.filas_afectadas()==1){<br> row = obj_mysql.obtener_fila(res);<br> consulta = new char[strlen(sentenciaEliminar2)+sizeof(nombre)+sizeof(proveedor)]; <br> sprintf(consulta, sentenciaEliminar2, nombre, proveedor);<br> obj_mysql.ejecutar_sql(consulta);<br> cout << "\nEl Producto Fue Eliminado Exitosamente\n" << endl;<br> }else<br> if(obj_mysql.filas_afectadas()>1){<br> cout << "\nHay mas de un Producto con el Proveedor " << proveedor << endl;<br> <br> system("PAUSE");<br> system("CLS");<br> <br> cout << "Ingrese el Codigo a Eliminar: ";<br> cin.getline >> codigo;<br> <br> consulta = new char[strlen(sentenciaBuscar3)+strlen(nombre)+strlen(proveedor)+strlen(codigo)];<br> sprintf(consulta, sentenciaBuscar3, nombre, proveedor, codigo);<br> res = obj_mysql.ejecutar_sql(consulta);<br> row = obj_mysql.obtener_fila(res);<br> <br> if(obj_mysql.filas_afectadas()>0){<br> row = obj_mysql.obtener_fila(res);<br> consulta = new char[strlen(sentenciaEliminar3)+sizeof(nombre)+sizeof(proveedor)+sizeof(codigo)]; <br> sprintf(consulta, sentenciaEliminar3, nombre, proveedor, codigo);<br> obj_mysql.ejecutar_sql(consulta);<br> cout << "\nEl Producto Fue Eliminado Exitosamente\n" << endl;<br> }else<br> cout << "El Producto No Existe\n" << endl;<br> }<br> }else<br> cout << "El Producto No Existe\n" << endl;<br> }<br> }else<br> cout << "\nEl Producto No Existe\n" << endl;<br> system("PAUSE");<br>}<br><br>void modificarProducto(){<br> system("CLS");<br> char nombre[20];<br> char proveedor[20];<br> char *consulta;<br> char sentencia[] = "SELECT *FROM pro WHERE nombre = \'%s\'";<br> char sentencia2[] = "SELECT *FROM pro WHERE nombre = \'%s\' AND proveedor = \'%s\'";<br> MYSQL_RES *res;<br> MYSQL_ROW row; <br> Pro p;<br> string a;<br> <br> cout << "Ingrese el Nombre del Producto a Modificar: ";<br> cin.getline >> nombre;<br> <br> consulta = new char[strlen(sentencia)+strlen(nombre)]; <br> sprintf(consulta, sentencia, nombre);<br> res = obj_mysql.ejecutar_sql(consulta);<br><br> if(obj_mysql.filas_afectadas()>0){<br> if(obj_mysql.filas_afectadas()==1){<br> row = obj_mysql.obtener_fila(res);<br> system("CLS");<br> char atrib[100];<br> if(Utilidades::validarIngreso("Letras", "Nombre: ", atrib)){<br> (p).setNombre(atrib);<br> cout<<endl;<br> }<br> char atrib2[100];<br> if(Utilidades::validarIngreso("Letras", "Proveedor: ", atrib2)){<br> (p).setProveedor(atrib2);<br> cout<<endl;<br> }<br> char atrib3[100];<br> if(Utilidades::validarIngreso("Numeros", "Codigo: ", atrib3)){<br> (p).setCodigo(atrib3);<br> cout<<endl;<br> }<br> char atrib4[100];<br> if(Utilidades::validarIngreso("Numeros", "Stock: ", atrib4)){<br> (p).setStock(atrib4);<br> cout<<endl;<br> }<br> char atrib5[100];<br> if(Utilidades::validarIngreso("Numeros", "Precio: ", atrib5)){<br> (p).setPrecio(atrib5);<br> cout<<endl;<br> }<br> <br> actualizar(p, nombre);<br> cout << "\nLos Datos del Producto Fueron Actualizados Exitosamente\n" << endl;<br> }else<br> if(obj_mysql.filas_afectadas()>1){<br> cout << "\nHay mas de un Producto con el Nombre " << nombre << endl;<br> <br> system("PAUSE");<br> system("CLS");<br> <br> cout << "Ingrese el Proveedor del Producto a Modificar: ";<br> cin.getline >> proveedor;<br> <br> consulta = new char[strlen(sentencia2)+strlen(nombre)+strlen(proveedor)]; <br> sprintf(consulta, sentencia2, nombre, proveedor);<br> res = obj_mysql.ejecutar_sql(consulta);<br> <br> if(obj_mysql.filas_afectadas()>0){<br> row = obj_mysql.obtener_fila(res);<br> system("CLS");<br> char atrib[100];<br> if(Utilidades::validarIngreso("Letras", "Nombre: ", atrib)){<br> (p).setNombre(atrib);<br> cout<<endl;<br> }<br> char atrib2[100];<br> if(Utilidades::validarIngreso("Letras", "Proveedor: ", atrib2)){<br> (p).setProveedor(atrib2);<br> cout<<endl;<br> }<br> char atrib3[100];<br> if(Utilidades::validarIngreso("Numeros", "Codigo: ", atrib3)){<br> (p).setCodigo(atrib3);<br> cout<<endl;<br> }<br> char atrib4[100];<br> if(Utilidades::validarIngreso("Numeros", "Stock: ", atrib4)){<br> (p).setStock(atrib4);<br> cout<<endl;<br> }<br> char atrib5[100];<br> if(Utilidades::validarIngreso("Numeros", "Precio: ", atrib5)){<br> (p).setPrecio(atrib5);<br> cout<<endl;<br> }<br> <br> actualizar2(p, nombre, proveedor);<br> cout << "\nLos Datos del Producto Fueron Actualizados Exitosamente\n" << endl;<br> }else<br> cout << "\nEl Producto No Existe\n" << endl;<br> } <br> }else<br> cout << "\nEl Producto No Existe\n" << endl;<br> system("PAUSE");<br>}<br><br>void actualizar(Pro p, string pNombre){<br> char *nombre = strdup(p.getNombre());<br> char *proveedor = strdup(p.getProveedor());<br> char *codigo = strdup(p.getCodigo());<br> char *stock = strdup(p.getStock());<br> char *precio = strdup(p.getPrecio());<br> char *nombreActual = strdup(pNombre.c_str());<br> <br> <br> char *consulta;<br> char sentencia[] = "UPDATE pro SET nombre = \'%s\', proveedor = \'%s\', codigo = \'%s\', stock = \'%s\', precio = \'%s\' WHERE nombre = \'%s\'";<br> <br> consulta = new char[strlen(sentencia)+100]; <br> sprintf(consulta, sentencia, nombre, proveedor, codigo, stock, precio, nombreActual);<br> obj_mysql.ejecutar_sql(consulta);<br>}<br><br>void actualizar2(Pro p, string pNombre, string pProveedor){<br> char *nombre = strdup(p.getNombre());<br> char *proveedor = strdup(p.getProveedor());<br> char *codigo = strdup(p.getCodigo());<br> char *stock = strdup(p.getStock());<br> char *precio = strdup(p.getPrecio());<br> char *nombreActual = strdup(pNombre.c_str());<br> char *proveedorActual = strdup(pProveedor.c_str());<br> <br> char *consulta;<br> char sentencia[] = "UPDATE pro SET nombre = \'%s\', proveedor = \'%s\', codigo = \'%s\', stock = \'%s\', precio = \'%s\' WHERE nombre = \'%s\' AND proveedor = \'%s\'";<br> <br> consulta = new char[strlen(sentencia)+100]; <br> sprintf(consulta, sentencia, nombre, proveedor, codigo, stock, precio, nombreActual, proveedorActual);<br> obj_mysql.ejecutar_sql(consulta);<br>}<br> <br /><hr />¿Quieres saber qué móvil eres? <a href='http://www.quemovileres.com/' target='_new'>¡Descúbrelo aquí!</a></body>
</html>