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 :

Problème Undefined offset [PHP 4]


Sujet :

Langage PHP

  1. #1
    Membre régulier

    Homme Profil pro
    Étudiant Réseaux et Télécoms
    Inscrit en
    Octobre 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant Réseaux et Télécoms
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 121
    Points : 92
    Points
    92
    Par défaut Problème Undefined offset
    Bonjour,

    J'ai un problème que j'arrive point à résoudre.

    J'ai mis le fichier .php en pièce-jointe.

    Revenons à nos moutons, voici mon message d'erreur:

    Notice: Undefined offset: 2 in /opt/lampp/htdocs/www3/corres3.php on line 295


    Voici la ligne 295:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?
    $requete='SELECT p.horairesPasser FROM Passer AS p INNER JOIN Arrets AS a ON a.idArrets = p.idArrets INNER JOIN Bus AS b ON b.idBus = p.idBus INNER JOIN Lignes AS l ON l.idLignes = b.idLignes WHERE l.nomLignes = "'.$tab5[$i][1].'" AND a.nomArrets = "'.$_GET['nomArretArrive'].'" AND p.idBus="'.$idBus.'" AND p.horairesPasser>"'.$tab11[$i][1].'"  ORDER BY p.horairesPasser LIMIT 1';?>
    Je vous ai fait un print_r de $tab5[2] et de $tab11[2].

    $tab5[2]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [0] => SimpleXMLElement Object ( [0] => Horbetoux -> Coteau ) [1] => SimpleXMLElement Object ( [0] => Z -> A ) [2] => Joffre [3] => Napoléon )
    $tab11[2]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [0] => 3 [1] => 06:44:00 )
    Donc, je ne comprends pas pourquoi j'ai cette erreur de offset.

    Cordialement
    Fichiers attachés Fichiers attachés

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Très franchement ton code est illisible avec ces variables $i, $j, $c, $tab1, $tab2 etc des suites de code redondant et les tableaux indexés numériquement.

    Il y a quand même très peu de chance que PHP se trompe donc tu dois mal interpreter tes erreurs et tes tests.

    Ca serait peut etre plus simple d'y voir quelque chose si tu pouvais nous fournir un petit dump de ta base pour reproduire le fonctionnement de ton code.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre régulier

    Homme Profil pro
    Étudiant Réseaux et Télécoms
    Inscrit en
    Octobre 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant Réseaux et Télécoms
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 121
    Points : 92
    Points
    92
    Par défaut
    Bonsoir,

    Tout d'abord merci de votre réponse.

    C'est vrai que mon code n'est pas très lisible. Je viens de changer le nom des tabs afin de mieux se repérer.


    Je vais vous mettre un dump de ma base de donnée, ainsi que le fichier sens.xml et le nouveau fichier.php

    Merci de votre aide!

    EDIT: J'ai plus les problèmes d'offset, cependant c'est ma requête à la ligne 271 qui ne marche pas, or lorsque j'essaye cette requete directement sut phpmyadmin celà marche. J'ai essayé de mettre en brut les variables sur le .php mais celà ne change rien
    Fichiers attachés Fichiers attachés

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    avec quels valeurs en URL peut-on reproduire l'erreur ?

    Au passage les boucles for/count ce n'est pas terrible.
    Si tu as vraiment besoin d'une boucle for, fait le count en dehors de la boucle.
    Mais dans la majorité des cas, utilise un boucle foreach.

    Par exemple rapidement pour ta boucle au début, il y a fortement matière a économiser en écriture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach($tab2 as $values)
    		{
                     $mini= min($mini, min($values));
    		}
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre régulier

    Homme Profil pro
    Étudiant Réseaux et Télécoms
    Inscrit en
    Octobre 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant Réseaux et Télécoms
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 121
    Points : 92
    Points
    92
    Par défaut
    En effet, au niveau de l'optimisatio c'est vraiment très très limite.

    J'en prends note, je vais essayer de tout réécrir.

    Concernant mon problème, en faite ma requete de la ligne 271 ne renvoie aucun résultat

    Or si je mets directement cette requete sur phpmyadmin:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT p.horairesPasser, l.numLignes, p.idBus FROM Passer AS p INNER JOIN Arrets AS a ON a.idArrets = p.idArrets INNER JOIN Bus AS b ON b.idBus = p.idBus INNER JOIN Lignes AS l ON l.idLignes = b.idLignes WHERE l.nomLignes =  "Z -> A" AND a.nomArrets =  "Napoléon" AND p.horairesPasser >  "06:48:00" AND p.idBus IN (SELECT idBus FROM Passer AS p INNER JOIN Arrets AS a ON a.idArrets = p.idArrets WHERE p.idbus IN (SELECT idBus FROM Passer AS p INNER JOIN Arrets AS a ON a.idArrets = p.idArrets WHERE a.nomArrets =  "Napoléon") AND a.nomArrets =  "Renoir" ) ORDER BY p.horairesPasser LIMIT 1
    J'obtiens un résultat!

    Et si je change ma requete de la ligne 271 par cette requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete='SELECT p.horairesPasser, l.numLignes, p.idBus FROM Passer AS p INNER JOIN Arrets AS a ON a.idArrets = p.idArrets INNER JOIN Bus AS b ON b.idBus = p.idBus INNER JOIN Lignes AS l ON l.idLignes = b.idLignes WHERE l.nomLignes =  "Z -> A" AND a.nomArrets =  "Napoléon" AND p.horairesPasser >  "06:48:00" AND p.idBus IN (SELECT idBus FROM Passer AS p INNER JOIN Arrets AS a ON a.idArrets = p.idArrets WHERE p.idbus IN (SELECT idBus FROM Passer AS p INNER JOIN Arrets AS a ON a.idArrets = p.idArrets WHERE a.nomArrets =  "Napoléon") AND a.nomArrets =  "Renoir" ) ORDER BY p.horairesPasser LIMIT 1';
    Je n'ai pas de résultat!

    Valeur URL : http://ip/dossier/corres4.php?nomArr...tArrive=Renoir

    Je ne comprends donc pas.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Horbetoux ou Napoléon ?

    Napoléon me donne "AUCUNE CORRESPONDANCE DISPONIBLE "
    et
    Horbetoux : 2

    Tu n'aurais pas simplement un problème avec les gares accentuées ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre régulier

    Homme Profil pro
    Étudiant Réseaux et Télécoms
    Inscrit en
    Octobre 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant Réseaux et Télécoms
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 121
    Points : 92
    Points
    92
    Par défaut
    En faite, c'est un calcul pour les correspondances.

    Arret de départ: Horbetoux
    Arret d'arrivée de la ligne: Joffre
    Changement de ligne, départ: Napoléon
    Arrivée: Renoir

    Je vais regarder pour le problème des accents


    EDIT: Merci infiniment, ca venait bien des accents Par contre, je ne sais pourquoi ^^ 4heures de prise de tête à cause des accents . Merci beaucoup de ton aide. Je vais réécrire la .php pour qu'il soit plus propre. Pourrais-je te demander à la fin, de donner une critique de l'écriture du code?

    Cordialement

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

Discussions similaires

  1. problème "Undefined offset:" entre autre !
    Par zebulon252 dans le forum Langage
    Réponses: 1
    Dernier message: 10/09/2012, 22h34
  2. [MySQL] Problème message PHP / Undefined offset
    Par lemzo84 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 09/11/2011, 13h40
  3. [MySQL] Problème Undefined Offset liste déroulante
    Par Luisito31 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 31/10/2008, 09h26
  4. erreur Undefined offset
    Par wbagg2 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 01/12/2005, 14h16
  5. Erreur de "Undefined offset"
    Par guy2004 dans le forum Langage
    Réponses: 8
    Dernier message: 16/10/2005, 12h48

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