Foros del Web » Programando para Internet » PHP »

indicar mediante php el "cotejamiento" al crear una tabla en sql

Estas en el tema de indicar mediante php el "cotejamiento" al crear una tabla en sql en el foro de PHP en Foros del Web. Hola amigos/as, miren tengo un problema que no se como arreglar, es poder indicar mediante php el "totejamiento" al crear una tabla en sql . ...
  #1 (permalink)  
Antiguo 23/03/2015, 03:53
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 12 años
Puntos: 5
indicar mediante php el "cotejamiento" al crear una tabla en sql

Hola amigos/as, miren tengo un problema que no se como arreglar, es poder indicar mediante

php el "totejamiento" al crear una tabla en sql .


El codigo php que tengo me crea una tabla perfectamente, pero cuando intento implementar la

caracteristica del cotejamiento, me dice que no crea la tabla.

Miren este es el codigo que tengo:

Código PHP:
Ver original
  1. class bbdd
  2.    
  3.         {
  4.  
  5. conexion a bbdd......bla bla bla
  6.  
  7.  
  8.             function crearTabla($nomTabla, $campos)
  9.            
  10.                 {      
  11.                     mysql_select_db($this->nomBbdd,$this->conectarBbdd());
  12.                    
  13.                    
  14.                     $cadena="CREATE TABLE ".$nomTabla." (
  15.                    
  16.                              ".$campos[0]." int NOT NULL AUTO_INCREMENT ,PRIMARY KEY(".$campos[0]."), ";
  17.                    
  18.                    
  19.                    
  20.                     //echo $cadena;
  21.                    
  22.        
  23.                         $cadenaCampos="";
  24.                        
  25.                             for($i=1; $i<count($campos); $i++) {
  26.                                
  27.                                 $cadenaCampos=$cadenaCampos.$campos[$i] . ", ";
  28.                             }
  29.                            
  30.                        
  31.                         $cadenaCampos[strlen($cadenaCampos)-2]=")";
  32.                        
  33.                         $sql=$cadena.$cadenaCampos;
  34.            
  35.                         mysql_query($sql,$this->conectarBbdd());           
  36.                 }
  37.  
  38.         }
  39.  
  40.  
  41.  
  42.     $campos[]="id";
  43.     $campos[]="nombre varchar(45) utf8_spanish_ci";
  44.     $campos[]="comida varchar(45) utf8_spanish_ci";
  45.     $campos[]="extra varchar(20) utf8_spanish_ci"; 
  46.     $campos[]="picante varchar(2) utf8_spanish_ci";
  47.     $campos[]="comentario varchar(200) utf8_spanish_ci";       
  48.     $campos[]="avatar varchar(200') utf8_spanish_ci"";     
  49.    
  50.  
  51.     $miBbdd = new bbdd();
  52.  
  53.  
  54.     $miBbdd->host="localhost";
  55.     $miBbdd->usuario="root";   
  56.     $miBbdd->pass="";  
  57.     $miBbdd->nomBbdd="restaurante";
  58.    
  59.    
  60.     $miBbdd->crearBbdd();
  61.     $miBbdd->crearTabla("comensal", $campos);

Gracias de antemano.

Última edición por mensajeescrito; 23/03/2015 a las 03:58
  #2 (permalink)  
Antiguo 23/03/2015, 06:34
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: indicar mediante php el "cotejamiento" al crear una tabla en sql

Tu problema es algo que ya te mencionamos en otro hilo, y en este caso se da, en principio, porque no estás considerando que todos los campos deben separarse de los demás por medio de una coma (,), excepto el último que no debe tener ninguna antes del parentesis.
Código PHP:
Ver original
  1. $cadenaCampos="";
  2. for($i=1; $i<count($campos); $i++) {
  3.     $cadenaCampos=$cadenaCampos.$campos[$i] . ", ";
  4.     }
  5. $cadenaCampos[strlen($cadenaCampos)-2]=")";
  6. $sql=$cadena.$cadenaCampos;
Ahora bien, desde el punto de vista del sistema, hay un error mucho más grave y es que no se deben crear dinámicamente las tablas. Eso es un error conceptual. La estructura de la base es una estructura fija, con muy pocas modificaciones las cuales además se hacen por necesidades de cambio de entorno.
Crear tablas dinámicamente no es una buena idea, entre otras razones porque las tablas que se crean son ineficientes (carecen de una correcta definicion de datos y de indices), y pueden hacer crecer estructura de la base sin control.

Pero, bueno, es tu decisión. Desde ya te digo que es un error, aunque se pueda hacer.

En cuanto al error puntual que preguntas, lo primero que debes hacer es que se visualice la query generada, cosa que no te has molestado en hacer, ya que los errores de sintaxis en este tipo de cosas, son perfectamente visibles.
Nunca ejecutes un aquery que estás desarrollando sin previamente visualizarla. Te ahorrarás perdidas de tiempo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 24/03/2015, 06:45
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 12 años
Puntos: 5
Respuesta: indicar mediante php el "cotejamiento" al crear una tabla en sql

Yo, al igual que tu, tampoco soy partidario de crear tablas dinamicamente.

Pero mi profesor se empeña en ello, y si quiero aprobar con el , no me queda otra

que hacerlo como me pide.

Por ello, no es mi decision, supongo que tu harias lo mismo que yo si quisieras aprobar


Otra cosa distinta es lo que hago y haré yo , y no es precisamente en crearlas dinamicamente.


Respecto a que si mi problema es que si no he considerado lo de la coma ya que el ultimo valor no debe tenerla.

Bueno decir que , si , efectivamente tienes razon. Pero el asunto es que fue mi profesor el que nos facilito este codigo, y de primeras uno no investiga si el codigo que le proporciona su profesor esta bien o mal , simplemente lo da uno por bueno para seguir construyendo.

Pero evidentemente tendre que revisarlo a partir de ahora ya que no me apetece seguir comiendome

tirones en mis orejas , en este caso por tu parte. Ya que el que debe cuidar mas lo que programa es el.


He llegado a la conclusion que no me merece la pena implementar lo del cotejamiento.

Ya que no es algo que vaya a utilizar en el futuro.

Y tampoco suspendere por esta minucia.

Etiquetas: mediante, mysql, select, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:45.