Undefined offset

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Undefined offset

Re: Undefined offset

par fab » 28 oct. 2009, 16:31

Oui excuse moi c'est une erreur de ma part , dans le for faut que ça soit =< et non < ou sinon tu mets 10 comme tu l'as fais et ça revient au même :)

Re: Undefined offset

par Riesu » 28 oct. 2009, 16:22

Super !

Merci beaucoup :D.

Si ça peut servir:
Pour la méthode de Kran, j'ai remplacé NULL par 0, MysqL ne voulais pas voir de NULL.

Concernant la méthode de Fab(celle que j'ai choisit), j'ai modifié 9 par 10, bizare mais ça marche correctement.

Merci à vous deux pour vos réponses ultra rapide :).

Re: Undefined offset

par fab » 28 oct. 2009, 16:12

Je suis pas certain de bien comprendre ce que tu veux faire en fait?

Si une ligne ne contient que 4 ou 5 données au lieu des 9 attendus tu veux quand même remplir les champs vides?

Si c'est le cas tu peux faire en sortir de remplir ton tableau comme ça
if(count($valeur) != 9) {
  for($i=count($valeur);$i<9;$i++) $valeur[$i - 1] = '';
}

Re: Undefined offset

par Kran » 28 oct. 2009, 16:10

Si tes champs acceptent la valeur null...
<?php
$sql="INSERT INTO test (ip_disk,code,nom_disk,type,version_navisphere,f,machine_connectee,h,i) VALUES (";
if(isset($valeur[0])) $sql.="'".$valeur[0]."'"; else $sql.="null";
if(isset($valeur[1])) $sql.=",'".$valeur[1]."'"; else $sql.=",null";
if(isset($valeur[2])) $sql.=",'".$valeur[2]."'"; else $sql.=",null";
if(isset($valeur[3])) $sql.=",'".$valeur[3]."'"; else $sql.=",null";
if(isset($valeur[4])) $sql.=",'".$valeur[4]."'"; else $sql.=",null";
if(isset($valeur[5])) $sql.=",'".$valeur[5]."'"; else $sql.=",null";
if(isset($valeur[6])) $sql.=",'".$valeur[6]."'"; else $sql.=",null";
if(isset($valeur[7])) $sql.=",'".$valeur[7]."'"; else $sql.=",null";
if(isset($valeur[8])) $sql.=",'".$valeur[8]."'"; else $sql.=",null";
$sql.=")";
?>
sinon tu mets une valuer par defaut a la place de null... sinon faut faire sauter aussi les noms des colonnes pour utiliser la valeur par défaut renseignée en base...

Is good ?

Re: Undefined offset

par Riesu » 28 oct. 2009, 15:48

Ah oui j'ai oublié désolé !

Mon fichier donnees.txt contient des lignes(777 pour être exacte) séparés par un '|', sauf que pour certaines au lieu d'avoir 9 tableaux de remplis il y en a 4-5 :/ .

La seule solution que j'ai trouvé pour y remédier c'était de rajouter des '|' pour esquiver php 8-|, le fichier étant à jour tous les jours je me vois mal faire tout ça à la main.

Code : Tout sélectionner

Notice: Undefined offset: 5 in D:\xxx\Lyes\send.php on line 38 Notice: Undefined offset: 6 in D:\www\xxx\send.php on line 39 Notice: Undefined offset: 7 in D:\www\xxx\send.php on line 39
et ceci jusqu'à ce que la scroll bar soit assez petite.

Sinon les informations sont bien entrées dans la bdd.

merci :)

Re: Undefined offset

par fab » 28 oct. 2009, 15:33

On pourrait avoir le message d'erreur exact? Sinon là a vu de nez je pense que ça vient de ton tableau $valeur qui ne doit pas avoir 8 valeurs dedans :)

Undefined offset

par Riesu » 28 oct. 2009, 15:22

Bonjour !

Je post ici car je pense que c'est le meilleur endroit pour avoir une réponse à mon problème.

Je suis entrain de développer un script qui permet d'insérer les données d'un fichier texte dans ma base MysqL.

Je bloque depuis plusieurs jours avec l'erreur Undefined offset, j'ai fait pas mal de recherche(ma variable est vide oui) et testé pas mal de fonctions(isset,empty,var_dump,etc..) mais ça n'a rien changé.

Voici monde code:
<?php

	require('include/fonctions.php');
	
	//On indique le début du script pour avoir le temps d'éxécution de la page
	$debut = TempsExecutionPage();
	
	include_once('include/sql_conf.php');
	
	mysql_connect($host,$user,$pwd);
	mysql_select_db($db);

	//On vide la table pour éviter d'avoir des doublons
	mysql_query("TRUNCATE TABLE test");
	
		//Ouverture de donnees.txt avec l'autorisation de lecture
		$fichier = fopen('D:/www/xxx/include/donnees_2.txt', 'r'); 
		//On continue la boucle tant qu'on est pas arrivé à la fin du fichier
		while (!feof($fichier)) 
{ 
	//On récupère toute la ligne
	$ligne = fgets($fichier);
	//On indique le séparateur '|' de $fichier
	$valeur = explode('|', $ligne); 
	

		//Préparation et insertion de la requete sql, 9 champs max
		$sql="INSERT INTO test (ip_disk,code,nom_disk,type,version_navisphere,f,machine_connectee,h,i) VALUES ('".$valeur[0]."', '".$valeur[1]."', 
									   '".$valeur[2]."', '".$valeur[3]."', 
									   '".$valeur[4]."', '".$valeur[5]."', 
									   '".$valeur[6]."', '".$valeur[7]."',
									   '".$valeur[8]."')"; 
				

		$requete=mysql_query($sql) or die (mysql_error()); 
		

}
	if($requete==$sql)
	{
	echo ('L\'import de données dans la bdd s\'est effectué correctement !');
	}
	else
	{
	echo('Erreur, la requête n\'a pas pût être éxécutée!');
}
fclose($fichier);
//On affiche le temps d'éxécution du script en secondes avec 4 chiffres après la virgule	
echo '<br><br>Importation de données faite en ' . round(TempsExecutionPage() - $debut,4).'secondes.';
?>
En vous remerciant :).

ps: je ne peux m'inscrire car actuellement je suis au boulot.