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