Foros del Web » Programando para Internet » PHP »

Subrealista, PHP - oci8 - Oracle, help!!

Estas en el tema de Subrealista, PHP - oci8 - Oracle, help!! en el foro de PHP en Foros del Web. Hi everybody, Tengo un pequeño problemilla, que necesitaría de vuestra sabiduría. Antes de nada, gracias por todo. Trabajo con PHP - Oracle 8 y para ...
  #1 (permalink)  
Antiguo 20/10/2009, 02:30
 
Fecha de Ingreso: octubre-2009
Mensajes: 2
Antigüedad: 14 años, 5 meses
Puntos: 0
Subrealista, PHP - oci8 - Oracle, help!!

Hi everybody,

Tengo un pequeño problemilla, que necesitaría de vuestra sabiduría.

Antes de nada, gracias por todo.

Trabajo con PHP - Oracle 8 y para SQL-> Librería "Oci8"

Tengo en una Tabla de la Base de Datos un campo con "acento" (F_GRABACIÓN), si un acento, es una base de datos antigua, se podría quitar pero no!!, no se puede quitar, así que esa opción queda totalmente descartada.

He intentado cambiar el carácter con ASCII, modificar Charset, introducir caracteres especiales tales como ?,%,*, intentar hacer por id interno de Oracle, y nada.

También he probado diferentes opciones de oci_parse, y siempre lo mismo

"Carácter no valido", en la línea de ejecución oci_execute.

Alguien me puede echar un cable para poder hacer SELECT's, INSERT's etc con el campo con acento?

Gracias
  #2 (permalink)  
Antiguo 21/10/2009, 02:54
 
Fecha de Ingreso: enero-2009
Mensajes: 3
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Subrealista, PHP - oci8 - Oracle, help!!

Buenos días ilemming,

A mi se me presenta el mismo problema, he perdido bastantes horas buscando una solución o tal vez las he invertido en ver cual no era el camino correcto, describo mi caso:

Mi configuración es php 5.2 y oracle 10g, como conexión OCI8, pues bien cuando inserto caracteres especiales en la tabla se añade '¿' o doble '¿' o tripe '¿', el caracter ascii introducido es 191 osea la ¿, en principio yo entiendo que trunca el sistema de codificación de oci8 con el de oracle, la bbdd está en iso-8859-1 o su equivalente latin1, para solucionarlo cambie el sistema de codificación del fichero por el iso, pero sigue presentadose el mismo problema.

Por otro lado cuando realizo una consulta me muestra las vocales con acentos sin acentos, osea que me convierte el caracter.

¿oci8 no soporta la tabla extendida de ascii?

Saludos
  #3 (permalink)  
Antiguo 21/10/2009, 07:38
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 7 meses
Puntos: 105
Respuesta: Subrealista, PHP - oci8 - Oracle, help!!

Holas,

Primero que tipo de campo usan en su Tabla?, y intentaron con usar urlencode() ?

Si se entiende un poco mas, por ejemplo si ingresan una cadena:

"Php con Oracle's , y librerías se extraña"

Ese cadena lo inserta algo asi?:

"Php con Oracle?s , y librer?as se extra?a"

Si es asi creo conel php se solucionaria:

Cita:
<?php
function url_encode($string){
return urlencode(utf8_encode($string));
}

function url_decode($string){
return utf8_decode(urldecode($string));
}
?>
Saludos
Gildus
__________________
.: Gildus :.
  #4 (permalink)  
Antiguo 21/10/2009, 08:00
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Subrealista, PHP - oci8 - Oracle, help!!

¿Pero como intentas hacer la coneccion a la columna que tiene ese nombre?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 21/10/2009, 13:38
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 7 meses
Puntos: 102
Respuesta: Subrealista, PHP - oci8 - Oracle, help!!

Cita:
Iniciado por celsin87 Ver Mensaje
[...] pues bien cuando inserto caracteres especiales en la tabla se añade '¿' o doble '¿' o tripe '¿', [...]
Cita:
Iniciado por gildus Ver Mensaje
[...]
Si se entiende un poco mas, por ejemplo si ingresan una cadena:
"Php con Oracle's , y librerías se extraña"
Si no mal leo, ilemming no se refiere a la información ingresada, sino al nombre de la columna.
Cita:
Iniciado por ilemming Ver Mensaje
Tengo en una Tabla de la Base de Datos un campo con "acento" (F_GRABACIÓN), si un acento [...]
Aún así, ilemming, necesitas aclarar bien la situación. ¿"Un campo con acento sin un acento"?. Obviamente, la BD funciona(aba?) con algún otro sistema, ¿con cuál?, ¿no puedes ver el código fuente?, ¿se mudó de SO?, tu aplicación PHP ¿está en la misma máquina de la BD?, ¿Que SOs estás involucrados?, ¿puedes trabajar desde el cliente de línea de comandos?, ¿cómo lo haces?.

Vaya, coloca bien en la mesa la situación. Lee mi firma.

Así nada más ... siendo "una BD vieja", posiblemente se estará usando ISO-8859-1 junto con el SO (¿Windows? :-/). Si hubo una migración de SO o si --quizá-- estás accediendo remotamente, por ahí podrías tener una incompatibilidad de juego de caracteres ... que no tienen que ver con código, sino del manejo del archivo y del servidor. ... pero son solo especulaciones.

¿Por qué no puedes renombrarlo? ... nunca son recomendables caracteres no ASCII para nombrar las columnas; viene en la propia documentación de Oracle (de hecho, no sabía que se podía).

Un saludo
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #6 (permalink)  
Antiguo 21/10/2009, 14:07
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 7 meses
Puntos: 105
Holas,

Porque no muestras un impresion desde el php de tu tabla enviale un consulta SQL DESCRIBE y ve el nombre que realmente te muestra. Otra cosa que podrias usar es en tu Base de datos crear un SYNONYM de tu campo y listo asi creo que se te es mas facil.

Nos avisas.

Saludos
Gildus

Y porque no implementas un Vista en tu base de datos y alli le cambias de nombre a ese campo cosa que cuando insertes datos a tu tabla solo lo hagas a tu vista y listo de tu vista se podra ingresar a los campos que quieras de tu tabla, para mi esa seria una solucion.

Saludos
Gildus
__________________
.: Gildus :.

Última edición por GatorV; 21/10/2009 a las 15:49
  #7 (permalink)  
Antiguo 23/10/2009, 02:36
 
Fecha de Ingreso: octubre-2009
Mensajes: 2
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Subrealista, PHP - oci8 - Oracle, help!!

Hola y gracias por las aportaciones.

Aclaro puntos que veo que no me he explicado muy bien:
1º Ya me gustaria poder modificar el nombre de la tabla, pero hay otras cosillas que atacan a esa tabla y no tengo acceso.
2º La tabla tiene como 137 campos, la solución chapucilla de momento es un insert con ('' x137 veces), pero no puede ser.
3º Es un script de PHP con la libreria de OCI8 para opder trabajar con Base de Datos Oracle 8i
4º Lo de la vista lo voy a probar, gracias gildus, no se me había ocurrido.

Si me refiero a un acento en el nombre del campo de la tabla:
-->
$sqlInsert = "INSERT INTO PERFIL (CODIGO,NOMBRE,F_GRABACIÓN) VALUES ('TEST','TEST2','FECHA')";

<<FECHA: es VARCHAR2, no es un dato Date>>

$sqlInsert = oci_parse($con, $sqlInsert);

oci_execute($sqlInsert, OCI_DEFAULT)
<---

Respuesta por el navegador:

Warning: oci_execute() [function.oci-execute]: ORA-00911: caracter no valido in .....

Cuando se ejecuta el oci_execute me da el error que habeis visto, y lo da en la linea de oci_execute.

Gracias de nuevo.

Última edición por ilemming; 23/10/2009 a las 02:47 Razón: Se me olvidaba
  #8 (permalink)  
Antiguo 23/10/2009, 07:57
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 7 meses
Puntos: 105
Respuesta: Subrealista, PHP - oci8 - Oracle, help!!

Realmente es una muy mala practica quien haya creado el nombre del campo asi, creo que hay estandares para crearlos, pero bueno, prueba con la vista y tambien con un sinonimo (no se si la version 8 tiene para sinonimos).

Saludos
Gildus
__________________
.: Gildus :.
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 03:32.