Como el que había publicado por aquí no funcionaba ni a tiros, he hecho este bastante mejor :P

¿Cuántas veces has querido exportar la info de un reporte?

Imagen


¡Ahora puedes!
Imagen


USO:

1-. Copia este código y guárdalo como 1135.php. Enciende tu server en localhost o bien súbelo a un ftp, si lo subes, añade también el reporte del havij (.html).

Código: Seleccionar todo

<?php

// HF - HAVIJ REPORT EXPORTER (1135)
// INITIAL VARS
$debug_mode=false;
$aio_query=true; // single insert order
$sql_import=false;	// $to file will contain sql queries
$array_import=false; // $data will contain the final array
$all_queries=''; // DONT TOUCH IT
//

// SET PARAMS
if(isset($_GET['to']))
{	
	$to_name=$_GET['to'];
}
if(!isset($_GET['table'])){
	$table_name='11_TABLE_NAME_35';
}else{
	$table_name=mysql_escape_string($_GET['table']);
}

if(isset($_GET['columns'])){	
	$columns_list=$_GET['columns'];
}

if(!isset($_GET['file'])){	
	$file_name='NOT SET, EXPORT STOPPED';
}else{
	$file_name=$_GET['file'];
}
if(isset($_GET['aio']))
{	
	$aio_query=false;
}

echo'<pre>';
//HEADER MESSAGE
$message="-- HF HAVIJ REPORT EXPORTER (1135)
-- for larger exports, use it in localhost.
-- USAGE:
--	EXPORT TO FILE: 1135.php?file=HAVIJ_REPORT.html&table=YOUR_SQL_TABLE_NAME&to=export.sql
--	EXPORT TO ARRAY: edit 1135.php put array_import to true
--	SHOW QUERIES HERE (def): 1135.php?file=HAVIJ_REPORT.html&table=YOUR_SQL_TABLE_NAME
--	change column names: &columns=column1,column2,...
--	disable all-in-one query to get an INSERT for each line: &aio=0
-- File name: $file_name";
if(isset($to_name)){
	$message.="
-- To file: $to_name";
}else{
	$sql_import=true;
}
	$message.="
-- Table name: $table_name";
	if(isset($columns_list)){
	$message.="
-- Columns list: $columns_list";		
	}
$message.="
-- All-in-one query: $aio_query
-- Debug mode: $debug_mode
-- THIS LINES WILL BE IGNORED IN MYSQL

";
echo $message;
$all_queries=$message;
//--

if($file_name=='NOT SET, EXPORT STOPPED'){die();}
$content = file_get_contents($file_name);
if ($content === false)
   die('Failed when obtaining '.$file_name.', check perms, etc..');

// GET COLUMNS
$results=explode("#DC883D\">",$content);
foreach($results as $id_result=>$column)
{
	if($id_result>3)
	{
		$bah=explode("</font></b></td>",$column);
		$columns[]=$bah[0];
		if($id_result==4){
			$query_columns=$bah[0];
		}else{
			$query_columns.=','.$bah[0];
		}
	}
}
$results='';
$total_columns=sizeof($columns);
if($debug_mode){echo 'Columns: '.$total_columns;}
if(isset($columns_list)){
	$num_columns=sizeof(explode(",",$columns_list));
	if($num_columns==$total_columns){
		$query_columns=mysql_escape_string($columns_list);
	}else{
		die('ERROR: COLUMNS FOUND:'.$total_columns.' YOU LISTED:'.$num_columns);
	}

}
// ---

// GET DATA
$i=0;
$o=0;
$results=explode("#FFF7F2\">",$content);
unset($results[0]);

foreach($results as $column_data)
{
	$bah=explode("</td>",$column_data);
	if($i<$total_columns)
	{	
		if($array_import){
			$data[$o][$columns[$i]]=$bah[0];
		}
		if($i==0){
			$query_data[$o]="'".mysql_escape_string($bah[0])."'";
		}else{
			$query_data[$o].=",'".mysql_escape_string($bah[0])."'";
		}
		$i++;
	}else{
		if($sql_import)
		{
			// SINGLE INSERT?
			if($aio_query)
			{
				if($o==0){
		echo "INSERT INTO $table_name ($query_columns) VALUES<br>($query_data[$o])";
				}else{
		echo ",<br>($query_data[$o])";
				}

			}else{
				echo "INSERT INTO $table_name ($query_columns) VALUES ($query_data[$o]);<br>";
			}
		}
		elseif(!$array_import)
		{
			if($aio_query)
			{
				if($o==0){
		$all_queries.="
INSERT INTO $table_name ($query_columns) VALUES
($query_data[$o])";
				}else{
		$all_queries.=",
($query_data[$o])";
				}
			}else{
				$all_queries.="
INSERT INTO $table_name ($query_columns) VALUES ($query_data[$o]);";
			}

		}
		$o++;
		$i=0;
		if($array_import){
			$data[$o][$columns[$i]]=$bah[0];
		}
		$query_data[$o]="'".mysql_escape_string($bah[0])."'";
		$i++;
	}

}
$i=0;

$results=explode("white\">",$content);
unset($results[0]);

foreach($results as $column_data)
{
	$bah=explode("</td>",$column_data);
	if($i<$total_columns)
	{	
		if($array_import){
			$data[$o][$columns[$i]]=$bah[0];
		}
		if($i==0){
			$query_data[$o]="'".mysql_escape_string($bah[0])."'";
		}else{
			$query_data[$o].=",'".mysql_escape_string($bah[0])."'";
		}
		$i++;
	}
	else
	{
		if($sql_import)
		{
			// SINGLE INSERT?
			if($aio_query)
			{
				if($o==0){
		echo "INSERT INTO $table_name ($query_columns) VALUES<br>";
				}
				echo ",<br>($query_data[$o])";
			}else{
				echo "INSERT INTO $table_name ($query_columns) VALUES ($query_data[$o]);<br>";
			}
		}
		elseif(!$array_import)
		{
			if($aio_query)
			{
				if($o==0){
		$all_queries.="
INSERT INTO $table_name ($query_columns) VALUES
($query_data[$o])";
				}else{
		$all_queries.=",
($query_data[$o])";
				}
			}else{
				$all_queries.="
INSERT INTO $table_name ($query_columns) VALUES ($query_data[$o]);";
			}
		}
		$o++;
		$i=0;
		if($array_import){
			$data[$o][$columns[$i]]=$bah[0];
		}
		$query_data[$o]="'".mysql_escape_string($bah[0])."'";
		$i++;
	}

}
$total_rows=$o+2; // +2 to look like havij report
if($debug_mode){echo 'Columns: '.$total_rows;}
//-

// SAVE DATA
if(!$sql_import && !$array_import)
{
	$triki=fopen($to_name,'w'); 
	fwrite($triki, utf8_decode($all_queries));
	fclose($triki);
	die('Export to '.$to_name.' done. (Dont be idiot use wordpad or better to open it, not notepad.)');
}

?>
2-. Funciona con parámetros en get:

-Generar un archivo .sql con toda la info:

Código: Seleccionar todo

1135.php?file=HAVIJ_REPORT.html&table=YOUR_SQL_TABLE_NAME&to=export.sql
Por definición usará los nombres de las columnas indicados en el reporte, pero si en tu db tienes otros, puedes usar "columns" para indicarlos:

Código: Seleccionar todo

1135.php?file=HAVIJ_REPORT.html&table=YOUR_SQL_TABLE_NAME&to=export.sql&columns=column1,column2,etc...
(el parámetro columns puedes usarlo en cualquier sitio, o sea, más abajo)

-Mostrar la info directamente en pantalla:

Código: Seleccionar todo

1135.php?file=HAVIJ_REPORT.html&table=YOUR_SQL_TABLE_NAME
-Desactivar All-in-one query (un INSERT INTO para cada línea):

Código: Seleccionar todo

1135.php?file=HAVIJ_REPORT.html&table=YOUR_SQL_TABLE_NAME&to=export.sql&aio=false
(si creas un .sql pesará más, aparte de que irá más lento importando.)

-Recibir la info en forma de array para hacer luego lo que me salga de ahí:
Edita 1135.php cambiándo $array_import a true.

Las instrucciones de uso se imprimen tanto en el .sql como en pantalla, así que no te hará falta volver a este tema para recordar cómo iba :)
MichBukana escribió:Mira que complicado, chico original [Enlace externo eliminado para invitados]
¿Quién ha dicho nada de complicado? Qué tal si vuelves a grabar el vídeo, pero esta vez copiando lo que dejaste en este foro? porque nada más empezar ya salta error de sintáxis, todas las comillas son dobles, lo que hace que no funcione ni a tiros. No hablemos ya de quitar el reporting 0 porque entonces eso ya es alucinante.

Código: Seleccionar todo

Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in D:\*\Server\htdocs\michb\index.php on line 73
Aparte, ni en broma hace lo este que obtener todas las columnas a la vez y dejártelas listas en un array php para que tu lo saques como te venga en gana, o bien en formato SQL. Así como puedes decidir el formato de la petición, si va a ser un solo insert o uno por fila, los nombres de las columnas, de la db, etc..

En fín, yo vengo aquí a aprender e intentar aportar, si encuentro algo y no me gusta intento crear más opciones.
Responder

Volver a “Auditoria Web”