Foros del Web » Programando para Internet » PHP »

PhP sustituye los tildes al enviar texto en la base de datos.

Estas en el tema de PhP sustituye los tildes al enviar texto en la base de datos. en el foro de PHP en Foros del Web. Hola, quiero traducir algunos campos de mi base de datos, mediante un script en php ayudandome de Google API translate. En mi base de datos ...
  #1 (permalink)  
Antiguo 10/03/2010, 07:44
 
Fecha de Ingreso: marzo-2010
Mensajes: 4
Antigüedad: 14 años, 1 mes
Puntos: 0
PhP sustituye los tildes al enviar texto en la base de datos.

Hola, quiero traducir algunos campos de mi base de datos, mediante un script en php ayudandome de Google API translate.

En mi base de datos tengo una tabla: POSTS, y muchos campos en ella, de los cuales solo quiero actualizar 3: TITULO, CONTENIDO, y RESUMEN, estan en una misma fila bajo un mismo ID.



La funcción de traducción funciona bien, la podeis encontrar http://www.codediesel.com/downloads/GoogleTranslate

Mi borrador es el siguiente:

Código PHP:
<?php

require_once('googleTranslate.class.php');
$gt = new GoogleTranslateWrapper();

$link mysql_connect('localhost''root''xxxxxxxxxxxx');
if (!
$link) {
    die(
'Could not connect: ' mysql_error());
}
if (!
mysql_select_db('my_db')) {
    die(
'Could not select database: ' mysql_error());
}

$I=2;
$ID=9;

$result mysql_query('SELECT title_post, content_post, excerpt_post FROM posts');
if (!
$result) {
    die(
'Could not query:' mysql_error());
}

$titulo_en mysql_result($result$I'title_post');

$titulo_sp $gt->translate($titulo_en"es""en");
sleep(4);

$excerpt_en mysql_result($result$I'excerpt_post'); // outputs third employee's name
$excerpt_sp $gt->translate($excerpt_en"es""en");
sleep(4);

$content_en mysql_result($result$I'content_post');

            
$total_chr strlen($content_en); // ???
            
            
if($total_chr 5000){
                              
                
$content_sp $gt->translate($content_en"es""en");
                         
sleep(4);
                         
$sql "UPDATE posts SET title_post = '$titulo_sp', content_post = '$content_sp', excerpt_post = '$excerpt_sp' WHERE ID=$ID";
                         
mysql_query($sql);
                         
           }elseif(
$total_chr 10000){
                   
                   
                   
$A_en substr($content_en05000);  // abcd cojer hasta $parte1;
                   
$A_sp $gt->translate($A_en"es""en");
                        
sleep(4);
                   
$B_en substr($content_en500110001);
                   
$B_sp $gt->translate($B_en"es""en");
                        
sleep(4);
                        
                
$sql "UPDATE posts SET title_post = '$titulo_sp', content_post = '$A_sp'.'B_sp', excerpt_post = '$excerpt_sp' WHERE ID=$ID";
                
mysql_query($sql);

                   
            }elseif(
$total_chr 15000){
                      
                      
                      
$A_en substr($content_en05000);
                   
$A_sp $gt->translate($A_en"es""en");
                        
sleep(4);
                   
$B_en substr($content_en500110000);
                   
$B_sp $gt->translate($B_en"es""en");
                        
sleep(4);
                   
$C_en substr($content_en1000115001);
                   
$C_sp $gt->translate($C_en"es""en");
                        
sleep(4);
                        
                
$sql "UPDATE posts SET title_post = '$titulo_sp', content_post = '$A_sp'.'$B_sp'.'C_sp', excerpt_post = '$excerpt_sp' WHERE ID=$ID";
                
mysql_query($sql);
                      
           
           }elseif(
$total_chr 20000){
           
                     
$A_en substr($content_en05000);
                   
$A_sp $gt->translate($A_en"es""en");
                        
sleep(4);
                        
                   
$B_en substr($content_en500110000);
                   
$B_sp $gt->translate($B_en"es""en");
                        
sleep(4);
                        
                   
$C_en substr($content_en1000115000);
                   
$C_sp $gt->translate($C_en"es""en");
                        
sleep(4);
                        
                   
$D_en substr($content_en1500120001);
                   
$D_sp $gt->translate($D_en"es""en");
                        
sleep(4);
                        
                
$sql "UPDATE posts SET title_post = '$titulo_sp', content_post = '$A_sp'.'$B_sp'.'$C_sp'.'D_sp', excerpt_post = '$excerpt_sp' WHERE ID=$ID";
                
mysql_query($sql);
           
         }elseif(
$total_chr 25000){
                    
$A_en substr($content_en05000);
                   
$A_sp $gt->translate($A_en"es""en");
                        
sleep(4);
                        
                   
$B_en substr($content_en500110000);
                   
$B_sp $gt->translate($B_en"es""en");
                        
sleep(4);
                        
                   
$C_en substr($content_en1000115000);
                   
$C_sp $gt->translate($C_en"es""en");
                        
sleep(4);
                        
                   
$D_en substr($content_en1500120000);
                   
$D_sp $gt->translate($D_en"es""en");
                        
sleep(4);
                   
$E_en substr($content_en2000125001);
                   
$E_sp $gt->translate($E_en"es""en");
                        
sleep(4);
                        
                
$sql "UPDATE posts SET title_post = '$titulo_sp', content_post = '$A_sp'.'$B_sp'.'$C_sp'.'$D_sp'.'E_sp', excerpt_post = '$excerpt_sp' WHERE ID=$ID";
                
mysql_query($sql);
         
         }elseif(
$total_chr 30000){
                        
$A_en substr($content_en05000);
                        
$A_sp $gt->translate($A_en"es""en");
                        
sleep(4);
                        
                        
$B_en substr($content_en500110000);
                        
$B_sp $gt->translate($B_en"es""en");
                        
sleep(4);
                        
                        
$C_en substr($content_en1000115000);
                        
$C_sp $gt->translate($C_en"es""en");
                        
sleep(4);
                        
                        
$D_en substr($content_en1500120000);
                        
$D_sp $gt->translate($D_en"es""en");
                        
sleep(4);
                        
$E_en substr($content_en2000125000);
                        
$E_sp $gt->translate($E_en"es""en");
                        
sleep(4);
                        
$F_en substr($content_en2500130001);
                        
$F_sp $gt->translate($F_en"es""en");
                        
sleep(4);
                        
                
$sql "UPDATE posts SET title_post = '$titulo_sp', content_post = '$A_sp'.'$B_sp'.'$C_sp'.'$D_sp'.'$E_sp'.'F_sp', excerpt_post = '$excerpt_sp' WHERE ID=$ID";
                
mysql_query($sql);
         }elseif(
$total_chr 35000){
                        
$A_en substr($content_en05000);
                        
$A_sp $gt->translate($A_en"es""en");
                        
sleep(4);
                        
                        
$B_en substr($content_en500110000);
                        
$B_sp $gt->translate($B_en"es""en");
                        
sleep(4);
                        
                        
$C_en substr($content_en1000115000);
                        
$C_sp $gt->translate($C_en"es""en");
                        
sleep(4);
                        
                        
$D_en substr($content_en1500120000);
                        
$D_sp $gt->translate($D_en"es""en");
                        
sleep(4);
                        
$E_en substr($content_en2000125000);
                        
$E_sp $gt->translate($E_en"es""en");
                        
sleep(4);
                        
$F_en substr($content_en2500130000);
                        
$F_sp $gt->translate($F_en"es""en");
                        
sleep(4);
                        
$G_en substr($content_en3000135001);
                        
$G_sp $gt->translate($G_en"es""en");
                        
sleep(4);
                        
                
$sql "UPDATE posts SET title_post = '$titulo_sp', content_post = '$A_sp'.'$B_sp'.'$C_sp'.'$D_sp'.'$E_sp'.'$F_sp'.'$G_sp', excerpt_post = '$excerpt_sp' WHERE ID=$ID";
                
mysql_query($sql);
           }else{ 
           echo 
$mare='mayor que 35000';}
                
$puntepunte '. . .';
           
$sql "UPDATE posts SET title_post = '$titulo_sp', content_post = '$A_sp'.'$B_sp'.'$C_sp'.'$D_sp'.'$E_sp'.'$F_sp'.'$G_sp'.'$puntepunte', excerpt_post = '$excerpt_sp' WHERE ID=$ID";
                
mysql_query($sql);
           
mysql_close($link);
?>

Hay alguna función parecida a substr que guarde una serie de palabras hasta cuando sobrepasa un limite de caracteres establecido?

Por ejemplo, si la frase seria : "Ana tiene manzanas" y el tope está en 12 caracteres, que me devuelva "Ana tiene" osea
las ultimas palabras compleas hasta el tope, sin cortarlas, y el resto de la palabra guardarla en ontra variable.

Digo esto porque Google solo permit traducir hasta alrededor de 5100 char.

Cuando recibo el texto traducido de google, en mi navegador (con el "echo") lo veo corectamente me refiero a tildes, luego lo inserto en la base de datos, y alli aparecen un caracteres extraños reemplazando a los tildes.

Mi base de datos está en UTF-8, el Script y la Página del Navegador tb en UTF-8 y se ve bien, no se por que en la base de datos se guarda de otra forma. Luego SI puedo editar directamente la base de datos y se me accepta los tildes.



Alguna idea?

Gracias

Última edición por Squash; 10/03/2010 a las 08:29
  #2 (permalink)  
Antiguo 10/03/2010, 08:54
Avatar de blogger  
Fecha de Ingreso: diciembre-2005
Ubicación: frente al monitor
Mensajes: 398
Antigüedad: 18 años, 4 meses
Puntos: 12
Respuesta: PhP sustituye los tildes al enviar texto en la base de datos.

Esta bien, y es correcto, UTF8 siempre va a sustituir los tildes por caracteres extraños, pero si no quieres tener ese problema, entonces edita la base de datos para que en lugar de utf8 el formato sea latinci.
__________________
http://exegesis-biblica.com/

Etiquetas: enviar, tildes
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 23:20.