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_en, 0, 5000); // abcd cojer hasta $parte1;
$A_sp = $gt->translate($A_en, "es", "en");
sleep(4);
$B_en = substr($content_en, 5001, 10001);
$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_en, 0, 5000);
$A_sp = $gt->translate($A_en, "es", "en");
sleep(4);
$B_en = substr($content_en, 5001, 10000);
$B_sp = $gt->translate($B_en, "es", "en");
sleep(4);
$C_en = substr($content_en, 10001, 15001);
$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_en, 0, 5000);
$A_sp = $gt->translate($A_en, "es", "en");
sleep(4);
$B_en = substr($content_en, 5001, 10000);
$B_sp = $gt->translate($B_en, "es", "en");
sleep(4);
$C_en = substr($content_en, 10001, 15000);
$C_sp = $gt->translate($C_en, "es", "en");
sleep(4);
$D_en = substr($content_en, 15001, 20001);
$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_en, 0, 5000);
$A_sp = $gt->translate($A_en, "es", "en");
sleep(4);
$B_en = substr($content_en, 5001, 10000);
$B_sp = $gt->translate($B_en, "es", "en");
sleep(4);
$C_en = substr($content_en, 10001, 15000);
$C_sp = $gt->translate($C_en, "es", "en");
sleep(4);
$D_en = substr($content_en, 15001, 20000);
$D_sp = $gt->translate($D_en, "es", "en");
sleep(4);
$E_en = substr($content_en, 20001, 25001);
$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_en, 0, 5000);
$A_sp = $gt->translate($A_en, "es", "en");
sleep(4);
$B_en = substr($content_en, 5001, 10000);
$B_sp = $gt->translate($B_en, "es", "en");
sleep(4);
$C_en = substr($content_en, 10001, 15000);
$C_sp = $gt->translate($C_en, "es", "en");
sleep(4);
$D_en = substr($content_en, 15001, 20000);
$D_sp = $gt->translate($D_en, "es", "en");
sleep(4);
$E_en = substr($content_en, 20001, 25000);
$E_sp = $gt->translate($E_en, "es", "en");
sleep(4);
$F_en = substr($content_en, 25001, 30001);
$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_en, 0, 5000);
$A_sp = $gt->translate($A_en, "es", "en");
sleep(4);
$B_en = substr($content_en, 5001, 10000);
$B_sp = $gt->translate($B_en, "es", "en");
sleep(4);
$C_en = substr($content_en, 10001, 15000);
$C_sp = $gt->translate($C_en, "es", "en");
sleep(4);
$D_en = substr($content_en, 15001, 20000);
$D_sp = $gt->translate($D_en, "es", "en");
sleep(4);
$E_en = substr($content_en, 20001, 25000);
$E_sp = $gt->translate($E_en, "es", "en");
sleep(4);
$F_en = substr($content_en, 25001, 30000);
$F_sp = $gt->translate($F_en, "es", "en");
sleep(4);
$G_en = substr($content_en, 30001, 35001);
$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