Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/01/2011, 20h53   #1
Membre du Club
 
Homme Nicolas Chaussé
Étudiant Réseaux et Télécoms
Inscription : octobre 2009
Messages : 103
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Chaussé
Âge : 20
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 : 103
Points : 56
Points : 56
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 :
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 :
Array ( [0] => SimpleXMLElement Object ( [0] => Horbetoux -> Coteau ) [1] => SimpleXMLElement Object ( [0] => Z -> A ) [2] => Joffre [3] => Napoléon )
$tab11[2]

Code :
Array ( [0] => 3 [1] => 06:44:00 )
Donc, je ne comprends pas pourquoi j'ai cette erreur de offset.

Cordialement
Fichiers attachés
Type de fichier : php corres3.php (12,8 Ko, 1 affichages)
TWEESTY est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 21h48   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
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.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 22h57   #3
Membre du Club
 
Homme Nicolas Chaussé
Étudiant Réseaux et Télécoms
Inscription : octobre 2009
Messages : 103
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Chaussé
Âge : 20
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 : 103
Points : 56
Points : 56
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
Type de fichier : php corres4.php (13,0 Ko, 1 affichages)
Type de fichier : xml sens.xml (2,3 Ko, 1 affichages)
Type de fichier : sql Essai2 (2).sql (5,0 Ko, 1 affichages)
TWEESTY est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 23h53   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
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 :
1
2
3
4
foreach($tab2 as $values)
		{
                 $mini= min($mini, min($values));
		}
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 23h59   #5
Membre du Club
 
Homme Nicolas Chaussé
Étudiant Réseaux et Télécoms
Inscription : octobre 2009
Messages : 103
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Chaussé
Âge : 20
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 : 103
Points : 56
Points : 56
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 :
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 :
$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.
TWEESTY est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 00h05   #6
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
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 ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/02/2011, 00h09   #7
Membre du Club
 
Homme Nicolas Chaussé
Étudiant Réseaux et Télécoms
Inscription : octobre 2009
Messages : 103
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Chaussé
Âge : 20
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 : 103
Points : 56
Points : 56
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
TWEESTY est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h55.


 
 
 
 
Partenaires

Hébergement Web