Member 14888131 Ответов: 2

Как я могу решить неопределенный индекс?


Здравствуйте, я столкнулся с этой проблемой в приложении, которое я создаю для сравнения файлов. Я новичок в этом деле и, увидев несколько специализированных сайтов и несколько раз изменив код, не могу заставить его показать мне два файла, чтобы иметь возможность следить за программированием. Я подробно описываю, как я все определил:

tratar_csv.php
<pre><!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Descarga ficheros CSV</title>
</head>

<body>
<div class="container">
  <DIV id="PANEL_0" class="panel panel-primary text-justify">
  <DIV class="panel-heading">
    <H3 class="panel-title">Fichero a trabajar</H3>
  </DIV>
  <DIV class="panel-body">
    <FORM action="ficheros_permitidos.php" method="POST" enctype="multipart/form-data"> 
     
      <DIV class="form-group">
        <label for="origen" role="button">Fichero CSV:</label>
        <INPUT id="origen" type="file" name="origen" class="form_control" />
      </DIV>
      <input type="hidden" name="MAX_FILE_SIZE" value="50000000">	
		<input type="submit" name="continuar" value="Fichero de origen">
		<input type="submit" name="reset" value="Reiniciar">
	  
    </FORM>
  </DIV>
  </DIV>
</div>

</body>
</html>
</doctype>


ficheros_permitidos.php
<pre><?php
if (isset($_POST['continuar'])) {
	$nombreFichero = $_FILES['origen']['name'];
//	print_r($_FILES);
    $tipoFichero=pathinfo($nombreFichero,PATHINFO_EXTENSION);	
		switch($tipoFichero)	{
			case 'csv':
				include_once('procesa.php');
				break;
			case 'xls':
				include_once('procesa.php');
				break;
			case 'txt':
				include_once('procesa.php');
				break;
			default:
				include_once('error.php');
				break;
		}
}
if (isset($_POST['reset']))	{
		header('location:tratar_csv.php');
}

?>
<script type="text/javascript">
function Redirect()
{
window.location="tratar_csv.php";
}
setTimeout('Redirect()', 30000);
</script>


procesa.php
<pre><!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Ficheros a evaluar</title>
</head>

<body>
<div class="container">
  <DIV id="PANEL_0" class="panel panel-primary text-justify">
  <DIV class="panel-heading">
    <H3 class="panel-title">Múltiples ficheros a evaluar</H3>
  </DIV>
  <DIV class="panel-body">
	<FORM action="ficheros_permitidos_multiples.php" method="POST" enctype="multipart/form-data">
     
      <DIV class="form-group">
        <label for="archivos_multiples" role="button">Archivo a comparar:</label>
		<INPUT id="archivos_multiples" type="file" name="archivo" class="form-control" />
        
	</DIV>
	
		<input type="submit" name="comparar" value="Comparar ficheros">
		<input type="submit" name="reset" value="Reiniciar">
		  
	
    </FORM>
  </DIV>
  </DIV>
</div>

</body>
</html>
</doctype>


ficheros_permitidos_multiples.php
<?php
if (isset($_POST['comparar'])) {	
		$nombreArchivo = $_FILES['archivo']['name'];
//	print_r($_FILES);
		$tipoArchivo=pathinfo($nombreArchivo,PATHINFO_EXTENSION);
		switch($tipoArchivo)	{
			case 'csv':
				include('buscar_y_comparar.php');
				break;
			case 'xls':
				include('buscar_y_comparar.php');
				break;
			case 'txt':
				include('buscar_y_comparar.php');
				break;
			default:
				include('error.php');
				break;
		}
}
	if (isset($_POST['reset']))	{
		header('location:procesa.php');
	}

?>
<script type="text/javascript">
function Redirect()
{
window.location="procesa.php";
}
setTimeout('Redirect()', 30000);
</script>


buscar_y_comparar.php
<?php

//if(isset($_GET[$tipoArchivo])) 	{
//	$fichero=($_FILES['origen']);
//	$nombreFichero=array();
	$nombreFichero=($_FILES["origen"]["name"]);
	$nombreArchivo=($_FILES["archivo"]["name"]);
	
	echo("Empezar la búsqueda y comparación entre archivos");
	echo("<br>");
	
	echo($nombreFichero);
	echo("<br>");
	echo($nombreArchivo);
//}
//else {
//	$fichero='';
//}

?>


Результат, которого я достиг от всего этого, заключается в следующем:

Notice: Undefined index: origen in C:\xampp\htdocs\buscar_y_comparar.php on line 6

Notice: Trying to access array offset on value of type null in C:\xampp\htdocs\buscar_y_comparar.php on line 6
Empezar la búsqueda y comparación entre archivos

Sanitario.csv


Заранее спасибо за вашу помощь

Что я уже пробовал:

if(isset($_GET[$tipoArchivo])) 	{
	$fichero=($_FILES['origen']);
	$nombreFichero=array();
	$nombreFichero=($_FILES["origen"]["name"]);
	$nombreArchivo=($_FILES["archivo"]["name"]);

Andre Oosthuizen

Какая строка выдает ошибку, какая переменная отображается как неопределенная?

2 Ответов

Рейтинг:
2

ZurdoDev

Вы пытаетесь получить доступ к индексу переменной, которая является нулевой, то есть у нее нет членов. Все, что вам нужно сделать, это отладить его и выяснить, почему мы не можем запустить его для вас.


Рейтинг:
2

Andre Oosthuizen

Вы используете массив файлов под названием "origen", но он нигде не был объявлен в вашем коде. Вам нужно сначала объявить его и добавить к нему значения, прежде чем вы сможете сделать вызов его значений массива -

$_FILES['origen'] = array();

$_FILES['origen']['name'] = $_POST['name']; //as an example if value was posted, you can use $_GET or $_REQUEST as well depending on your code...

//Now you can make a call to the array...
$nombreFichero=($_FILES["origen"]["name"]);


Редактировать: код коррекции ОП...
1) у вас есть форма, которая публикует "Ориген" в качестве значения -

//At the top of your php (ficheros_permitidos.php) page...
if (session_status() == PHP_SESSION_NONE) {
	session_start();
}

if (isset($_POST['continuar'])) {
	$nombreFichero = $_POST['origen'];
   $_SESSION['origen_name'] = nombreFichero;
}


Теперь вы можете получить значение в
buscar_y_comparar.php


//At the top of your php (buscar_y_comparar.php) page...
if (session_status() == PHP_SESSION_NONE) {
	session_start();
}

<pre>$nombreFichero = $_SESSION['origen_name'];
	
	echo("Empezar la búsqueda y comparación entre archivos");
	echo("<br>");
	
	echo($nombreFichero);


Member 14888131

и где я должен об этом заявить? Я попробовал добавить php в форму и не пошел. Затем я попробовал до и после иссета в ficheros_permitidos.php (оба варианта) и это один и тот же неопределенный индекс

Andre Oosthuizen

Я занят обновлением своего решения.