IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

( ! ) Notice: Undefined offset:


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 314
    Points : 118
    Points
    118
    Par défaut ( ! ) Notice: Undefined offset:
    Je bute sur un ( ! ) Notice: Undefined offset: n sur les codes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $Quantite[$i] .= '<option value="'.$Quantite_.'" selected>'.$Quantite_.'</option>';
    Les bonnes valeurs sont quand même affichées à l'écran.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    			$Quantite = Array();	  
    			$j = 100;
    			for ($i=6; $i<=18; $i=($i+2)) {
    				if (file_exists("Divers/Quantite.txt")) {
    					$Fichier = fopen("Divers/Quantite.txt", "r+");
    					$Taille = strlen(File_Get_Contents("Divers/Quantite.txt"));
    					$Information = fread($Fichier,$Taille);
    					$Table_Information = preg_split("/;/", $Information);
    					foreach ($Table_Information as $Ligne) {
    							  $Quantite_ = $Ligne;
    							  $Quantite_ = trim($Quantite_);
    							  if ($Quantite_ > $j) {
    								  break; }
    							  if ($Quantite_ == $Commande[$i]) {
    								  $Quantite[$i] .= '<option value="'.$Quantite_.'" selected>'.$Quantite_.'</option>'; } 
    							  else { $Quantite[$i] .= '<option value="'.$Quantite_.'">'.$Quantite_.'</option>'; } } }
    				fclose($Fichier); }

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Je parie que l'erreur est sur cette ligne du code : if ($Quantite_ == $Commande[$i]). Tu peux t'en débarrasser en utilisant isset pour vérifier que l'index $i existe bien dans $Commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($Commande[$i]) && $Quantite_ == $Commande[$i])
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 314
    Points : 118
    Points
    118
    Par défaut
    Celira,

    J'ai précisé que les quantités, malgré tout, s'affichaient bien. Ce qui veut dire que $i existe bien. J'en ai fait un print et voici le résultat: [6] => 07.

    J'ai testé ta solution, mais j'ai toujours les mêmes erreurs.

    Je reste à ton écoute.

    Cordialement.

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Ah ! tu utilises l'opérateur de concaténation combiné : $Quantite[$i] .= '<option value="'.$Quantite_.'" selected>'.$Quantite_.'</option>'; Du coup, si $Quantite[$i] n'existe pas avant, il va la créer (donc ça marche), mais te signaler qu'elle n'existe pas (d'où la notice).
    Le plus simple dans ce cas, c'est d'initialiser $Quantite[$i] avant la boucle foreach :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $Quantite[$i] = ''; 
    foreach($Table_Information as $Ligne) {
    	$Quantite_ = $Ligne;
    	$Quantite_ = trim($Quantite_);
    	if ($Quantite_ > $j) {
    		break;
    	}
     
    	if ($Quantite_ == $Commande[$i]) {
    		$Quantite[$i].= '<option value="' . $Quantite_ . '" selected>' . $Quantite_ . '</option>';
    	}
    	else {
    		$Quantite[$i].= '<option value="' . $Quantite_ . '">' . $Quantite_ . '</option>';
    	}
    }
    Au passage, ton code n'est pas franchement optimisé : tu lis ton fichier 2 fois (une fois par file_get_contents et une fois par fopen/fread), et le tout autant de fois que tu fais de tours de boucle for, alors que c'est toujours le même fichier
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    314
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 314
    Points : 118
    Points
    118
    Par défaut
    ! Vu l'initialisation, c'était effectivement l'objet de mon erreur.

    Il s'agit de sept tables différentes à initialiser à leur valeur mémorisée.
    J'ai tourné le problème dans beaucoup de sens, sinon de lire une fois la table est possible mais cela demande de mettre en œuvre x conditions qui n'allégeraient pas plus le code.

    Merci pour la réponse.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Notice: Undefined offset
    Par gaetanc15 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 30/04/2009, 16h16
  2. [Tableaux] Notice: Undefined offset
    Par KOogar dans le forum Langage
    Réponses: 16
    Dernier message: 02/02/2008, 02h44
  3. [Système] Notice: Undefined offset
    Par noname_971 dans le forum Langage
    Réponses: 2
    Dernier message: 22/01/2008, 14h02
  4. [Tableaux] Notice: Undefined offset: 5 in
    Par fast462 dans le forum Langage
    Réponses: 3
    Dernier message: 30/05/2007, 10h08
  5. erreur: "Notice: Undefined offset:"
    Par Sh1v3r dans le forum Langage
    Réponses: 2
    Dernier message: 17/06/2006, 22h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo