Foros del Web » Programando para Internet » PHP »

Problema con imprimir hoja (png a php)

Estas en el tema de Problema con imprimir hoja (png a php) en el foro de PHP en Foros del Web. Esto es un examen, se generan las preguntan aleatoriamente. el problema que me ocurre ahora es que cuando la pregunta es muy larga, pierdo al ...
  #1 (permalink)  
Antiguo 04/08/2008, 14:19
Avatar de hulray  
Fecha de Ingreso: septiembre-2006
Mensajes: 630
Antigüedad: 18 años, 2 meses
Puntos: 3
Pregunta Problema con imprimir hoja (png a php)

Esto es un examen, se generan las preguntan aleatoriamente. el problema que me ocurre ahora es que cuando la pregunta es muy larga, pierdo al final de la pregunta. no se como decirle al codigo: cuando hayan 50 caracteres, que pase a la linea siguiente. Alguien tiene el conocimiento para que me pueda decir mas o menos como se hace?, mejor aun si me da algun ejemplo de como hacerlo.

Muchas gracias, le dejo el codigo.

Código PHP:
<?
if ($id=='') die ("You can't access this file directly...");
if (
$id==' Ingresar') die ("Impresion no disponible");
include_once(
"../../../am_config.php");
include_once(
"../../../proyectos.php");
include_once(
"../../../am_core/mysql.lib.php");
$conn db_connect($config["host"],$config["database"],$config["user"],$config["password"]) or die( db_error() );
Header("Content-type: image/png");

$con_sql "select * from am_certificado where cer_id='$id'";
    
$ret     db_query($con_sql) or die(db_error());
    
$row     db_fetch_array($ret);
    
$f_folio      $row["cer_id"];
    
$f_codest     $row["cer_estado"];
    
$f_empresa   $row["cer_nomemp"];
    
$f_fecha1    $row["cer_fecha1"];
    
$f_ni_aa1    substr($f_fecha1,0,4);
    
$f_ni_mm1    substr($f_fecha1,4,2);
    
$f_ni_dd1    substr($f_fecha1,6,2);

    
$f_contacto   $row["cer_nomcon"];
    
$f_mail       $row["cer_mailcon"];
    
$f_fono       $row["cer_foncon"];
    
$f_proyecto   $row["cer_proyecto"];
    
$f_valida     $row["cer_numveri"];
    
$f_inspector  $row["cer_inspector"];
    
$f_autoriza   $row["cer_mandante"];
    
$f_observ      $row["cer_observ"];    
    
    
    
$f_expire     $row["cer_expire"];
    
$ano    substr($f_expire,0,4);
    
$mes    substr($f_expire,4,2);
    
$dia    substr($f_expire,6,2);


    
$f_digitx     $session["name"];

    
    
$con_rpi "SELECT * FROM am_operador WHERE op_id='$f_folio'"
              
." ORDER BY op_id";
    
//$con_rpi = "select * from am_certificado where cer_id='$id'";
    
$rett     db_query($con_rpi) or die(db_error());
    
$row     db_fetch_array($rett);

        
$ar_equcer     $row["op_equcer"];
        
$ar_tiplic     $row["op_tiplic"];
        
$ar_tipo       $row["op_tipo"];





    
$con_rpi3 "SELECT * FROM am_examen WHERE exa_id='$f_folio'";
    
$ret3      db_query($con_rpi3) or die(db_error());  
    
$row3=db_fetch_array($ret3) ;
    
        
$exa_pregunta            $row3["exa_pregunta"];
        
$exa_respuesta            $row3["exa_respuesta"];
        
//$topic2                = $row["exa_puntaje"];
        
$exa_id_operador        $row3["exa_id_operador"];
        
$exa_id_pregunta        $row3["exa_id_pregunta"];
        
//$topic3                = $row["exa_id_respueta"];
        
$exa_total                $row3["exa_total"];
        
$exa_estado                $row3["exa_estado"];
        
//$topic3                = $row["exa_tipo"];
        
$exa_fecha                $row3["exa_fecha"];
        
$exa_hora                $row3["exa_hora"];
        
$exa_certificador        $row3["exa_certificador"];
    
    
    

        
//$result= ("select * from am_examen2  GROUP BY '$ex_tipo' "); 
        //$result= ("select * from am_examen2  where ex_tipo = '$i'"); 
    //$ret22      = db_query($result) or die(db_error());
    //$num_resp = db_num_rows($ret22);

    
$result "SELECT * FROM `am_examen2` where ex_tipo = '$eq' order by rand()";
    
$ret22      db_query($result) or die(db_error());
    
$num_resp db_num_rows($ret22);

    if( 
$num_resp ){
      
$i=0;
          
$f_neto 0;
      while( 
$row22=db_fetch_array($ret22) ){

            
$f_tipo[$i]            = $row22["ex_tipo"];
            
$f_pregunta[$i]        = $row22["ex_pregunta"];
            
$f_alter1[$i]        = $row22["ex_alter1"];
            
$f_alter2[$i]        = $row22["ex_alter2"];
            
$f_alter3[$i]        = $row22["ex_alter3"];
            
$f_alter4[$i]        = $row22["ex_alter4"];
            
$f_correcta[$i]        = $row22["ex_correcta"];
            
$i++;
      }
     
// $i_max = $i;
    
}

//Inicio Impresion Informe

$im      imagecreatefromPng("imagen.png"); 
$black   ImageColorAllocate($im000);

/* Encabezado Informe*/
/* Encabezado Informe*/
/*     Cierre de encabezado */
/*  ----  Ingreso de datos en duro -----  */
//exa_respuesta[".$i."]      

//
$pregunta1        ="$f_pregunta[0]";
$alter1_1        ="( ) $f_alter1[0]";
$alter1_2        ="( ) $f_alter2[0]";
$alter1_3        ="( ) $f_alter3[0]";
$alter1_4        ="( ) $f_alter4[0]";

$pregunta2        ="$f_pregunta[1]";
$alter2_1        ="( ) $f_alter1[1]";
$alter2_2        ="( ) $f_alter2[1]";
$alter2_3        ="( ) $f_alter3[1]";
$alter2_4        ="( ) $f_alter4[1]";

$pregunta3        ="$f_pregunta[2]";
$alter3_1        ="( ) $f_alter1[2]";
$alter3_2        ="( ) $f_alter2[2]";
$alter3_3        ="( ) $f_alter3[2]";
$alter3_4        ="( ) $f_alter4[2]";

$pregunta4        ="$f_pregunta[3]";
$alter4_1        ="( ) $f_alter1[3]";
$alter4_2        ="( ) $f_alter2[3]";
$alter4_3        ="( ) $f_alter3[3]";
$alter4_4        ="( ) $f_alter4[3]";

$pregunta5        ="$f_pregunta[4]";
$alter5_1        ="( ) $f_alter1[4]";
$alter5_2        ="( ) $f_alter2[4]";
$alter5_3        ="( ) $f_alter3[4]";
$alter5_4        ="( ) $f_alter4[4]";

/*     Inicio  de   cuerpo*/

ImageString($im5100160$pregunta1$black); // Datos Operador
ImageString($im2100190$alter1_1$black); // Datos Operador
ImageString($im2100210$alter1_2$black); // Datos Operador
ImageString($im2100230$alter1_3$black); // Datos Operador
ImageString($im2100250$alter1_4$black); // Datos Operador

ImageString($im5100280$pregunta2$black); // Datos Operador
ImageString($im2100310$alter2_1$black); // Datos Operador
ImageString($im2100330$alter2_2$black); // Datos Operador
ImageString($im2100350$alter2_3$black); // Datos Operador
ImageString($im2100370$alter2_4$black); // Datos Operador

ImageString($im5100400$pregunta3$black); // Datos Operador
ImageString($im2100430$alter1_1$black); // Datos Operador
ImageString($im2100450$alter1_2$black); // Datos Operador
ImageString($im2100470$alter1_3$black); // Datos Operador
ImageString($im2100490$alter1_4$black); // Datos Operador

ImageString($im5100520$pregunta4$black); // Datos Operador
ImageString($im2100550$alter4_1$black); // Datos Operador
ImageString($im2100570$alter4_2$black); // Datos Operador
ImageString($im2100590$alter4_3$black); // Datos Operador
ImageString($im2100610$alter4_4$black); // Datos Operador

ImageString($im5100640$pregunta5$black); // Datos Operador
ImageString($im2100670$alter5_1$black); // Datos Operador
ImageString($im2100690$alter5_2$black); // Datos Operador
ImageString($im2100710$alter5_3$black); // Datos Operador
ImageString($im2100730$alter5_4$black); // Datos Operador


//Finalizando Impresión
ImagePng($im);
  #2 (permalink)  
Antiguo 04/08/2008, 14:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Problema con imprimir hoja (png a php)

Hola hulray,

Usa strlen para contar la cantidad de preguntas, y si hay mas, cortas con substr y el resto lo escribes en la siguiente linea.

Saludos.
  #3 (permalink)  
Antiguo 04/08/2008, 14:40
Avatar de hulray  
Fecha de Ingreso: septiembre-2006
Mensajes: 630
Antigüedad: 18 años, 2 meses
Puntos: 3
Respuesta: Problema con imprimir hoja (png a php)

Algun ejemplo que tengas, si no es mucho pedir...

gracias
  #4 (permalink)  
Antiguo 04/08/2008, 15:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Problema con imprimir hoja (png a php)

Mmm creo si ves el manual de PHP encontraras muchos ejemplos claros.

Saludos.
  #5 (permalink)  
Antiguo 04/08/2008, 16:13
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Problema con imprimir hoja (png a php)

Cita:
Iniciado por GatorV Ver Mensaje
Hola hulray,

Usa strlen para contar la cantidad de preguntas, y si hay mas, cortas con substr y el resto lo escribes en la siguiente linea.

Saludos.
:P Lo que el desea no es contar la cantidad de preguntas, sino de letras en cada pregunta, para si asi la pregunta excede cierta cantidad de caracteres agregar un salto de linea para que no salga cortada.

A mi lo unico que se me ocurre es:
Revisar el numero de caracteres de una pregunta,
Si este excede cierta cantidad 150 por ejemplo, valla al caracter 150,
Le reste las letras que estan detras de el caracter #150 (hasta que encuentre un espacio en blanco) y luego agregar el salto de linea (asi la palabra no se corta).

:P Es lo unico que se me ocurre, pero en realidad no tendria ni idea de como hacerlo. Eso es solo un planteamiento... Talvez despues de unos cuantos dolores de cabeza se me ocurra como hacerlo en codigo :P

Tambien podrias hacer un preg_split(), separando por espacios en blanco y luego un for para mostrar X numero de palabras y luego agregar un salto de linea.
Pero no seria muy recomendado, ya que las palabras difieren en el numero de caracteres que contienen.

Nota*: Soy un poco nuevo en esto, asi que en realidad no se si existe otra forma de hacer lo que pides :P Yo solo supuse y eso fue todo lo que se me pudo ocurrir :P

Última edición por Ronruby; 04/08/2008 a las 16:40
  #6 (permalink)  
Antiguo 05/08/2008, 13:04
Avatar de hulray  
Fecha de Ingreso: septiembre-2006
Mensajes: 630
Antigüedad: 18 años, 2 meses
Puntos: 3
Respuesta: Problema con imprimir hoja (png a php)

muchas gracias por tu comentario. Aun lo logro dar con mi solucion :(
  #7 (permalink)  
Antiguo 06/08/2008, 07:01
Avatar de hulray  
Fecha de Ingreso: septiembre-2006
Mensajes: 630
Antigüedad: 18 años, 2 meses
Puntos: 3
Respuesta: Problema con imprimir hoja (png a php)

Ayuda!!!!

me desespero :(
  #8 (permalink)  
Antiguo 06/08/2008, 08:02
Avatar de hulray  
Fecha de Ingreso: septiembre-2006
Mensajes: 630
Antigüedad: 18 años, 2 meses
Puntos: 3
Respuesta: Problema con imprimir hoja (png a php)

les explico avance mucho. pude hacerlo de esta forma.

Código PHP:
            $f_pregunta[$i]        = $row22["ex_pregunta"];
            
$pregunta_11        substr($f_pregunta[$i],0,80);
            
$pregunta_12        substr($f_pregunta[$i],80,160); 
ahora el problema que se me presento lo hago notar con el siguiente ejemplo:

"la pregunta me sale de es"
"ta forma"

me corta la palabra. Alguien que tengo alguna idea por favor?
  #9 (permalink)  
Antiguo 06/08/2008, 08:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Problema con imprimir hoja (png a php)

Hola hulray,

Lo que puedes hacer es cortar usando word_wrap, pnes que el separador sea \n, y posteriormente usas explode para separar la variable en un arreglo, y ya imprimes ese arreglo.

Saludos.
  #10 (permalink)  
Antiguo 06/08/2008, 10:29
Avatar de hulray  
Fecha de Ingreso: septiembre-2006
Mensajes: 630
Antigüedad: 18 años, 2 meses
Puntos: 3
Respuesta: Problema con imprimir hoja (png a php)

el problema que no me deja poner \n .

el texto de la pregunta queda algo asi:

"texto de/n la pregunta/n"
  #11 (permalink)  
Antiguo 06/08/2008, 10:49
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Problema con imprimir hoja (png a php)

Me refiero a dentro de word_wrap para que al hacer el explode lo hagas sobre lo mismo. Fijate en el manual el orden de los parametros para word_wrap y para explode.

Saludos.
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 21:14.