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 :

Probleme Undefined offset


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 71
    Par défaut Probleme Undefined offset
    Je fais actuellement un site mais me heurte a un petit probleme concernant des dates ,du a une de mes fonctions, je cherche a comparer l'écart en jour entre deux dates ,voila mon code:

    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
    function ecart_date_now($madate)
    	{		
    		// DATE
    		date_default_timezone_set("Europe/Paris");
    		// On sépare an, mois, jours
    	list($annee, $mois, $jour) = explode('-', substr(intval($madate),0,10));
    		// On transforme la date en timestamp Php (nb de secondes depuis 01/01/1970)
    	$timestamp = mktime(0, 0, 0, $mois, $jour, $annee); 
    		// DATE ACTUELLE directement en timestamp
    	$maintenant = time();
    		// CALCUL
    		// on calcule le nombre de secondes d'écart entre les deux dates
    	$ecart_secondes = $maintenant - $timestamp;
    		// puis on tranforme en jours (arrondi inférieur)
    	$ecart_jours = floor($ecart_secondes / (60*60*24));
    		// enfin on retourne le résultat
    	return $ecart_jours; 
    	}
    et voila la partie php de ma page qui utilise cette fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // requete age
    $rqage = "SELECT naidatdate ".
    "FROM view_sessions ".
    "WHERE view_sessions.ipsubnet ='".$ip."';";		
    //Exécution de la requête 
    $resultatage = executer_requete2($rqage, "base");
    $ligneage = mysql_fetch_assoc($resultatage);
    $age = ecart_date_now($ligneage);
    echo $age;
    et voila le resultat obtenu :

    Notice: Undefined offset: 2 in ...

    Notice: Undefined offset: 1 in ...
    4199

  2. #2
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    Tu as essayé avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $age = ecart_date_now($ligneage["naidatdate"]);
    car ya t'il pas un problème de tableau ...

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 71
    Par défaut
    jai fait la modif et sa n'a rien changer, le probleme vien de la fonction je pense, l erreur de ligne afficher correspond a la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list($annee, $mois, $jour) = explode('-', substr(intval($madate),0,10));
    de ma fonction

  4. #4
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Je comprends pas trop le substr et l'intval, ton format de ta date dans la base, c quoi car sinon l'explode suffit largement ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 71
    Par défaut
    mes dates sont au format MM/JJ/AAAA

  6. #6
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    list($mois, $jour, $annee) = explode('/', $madate);

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 71
    Par défaut
    merci, sa a corriger une partie du probleme, lorsque je n'ai qu un seul resultat venant de ma base le resultat est juste par contre des que j ai plusieur lignes retournée, les erreur reviennent...

  8. #8
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Ca c du à ce que je t'ai dis tout à l'heure à savoir que le fetch_assoc retourne un tableau si plusieurs lignes donc il faudra boucler sur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $ligneage = mysql_fetch_assoc($resultatage);
    en utilisant un while par exemple

  9. #9
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 71
    Par défaut
    Voila ma modif

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ligneage = mysql_fetch_assoc($resultatage);
    while($ligneage)
      {
         $age = ecart_date_now($ligneage["naidatdate"]);
         $ligneage = mysql_fetch_assoc($resultatage);
      }
    et je ré-obtient plein d erreur

  10. #10
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Ok: juste plus simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    while ($ligneage = mysql_fetch_assoc($resultatage)){
       $age = ecart_date_now($ligneage["naidatdate"]);
    }
    te donne quoi comme erreurs ?
    Donnes moi le code correspondant aux lignes stp

  11. #11
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 71
    Par défaut
    ok donc revoila mon code :
    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
    function ecart_date_now($madate)
    	{		
    	// DATE
    	date_default_timezone_set("Europe/Paris");
    	// On sépare an, mois, jours
    	list($mois, $jour, $annee) = explode('/', $madate);
    	// On transforme la date en timestamp Php (nb de secondes depuis 01/01/1970)
    	$timestamp = mktime(0, 0, 0, $mois, $jour, $annee); 
    	// DATE ACTUELLE directement en timestamp
    	$maintenant = time();
    	// CALCUL
    	// on calcule le nombre de secondes d'écart entre les deux dates
    	$ecart_secondes = $maintenant - $timestamp;
    	// puis on tranforme en jours (arrondi inférieur)
    	$ecart_jours = floor($ecart_secondes / (60*60*24));
    	// enfin on retourne le résultat
    	return $ecart_jours; 
    	}
    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
    19
    20
    21
    // requete age					
                 $rqage = "SELECT naidatdate ".
    	"FROM view_sessions ".
    	"WHERE view_sessions.ipsubnet ='".$ip."';";		
     
                 //Exécution de la requête
                 $resultatage = executer_requete2($rqage, "base");
    	$ligneage = mysql_fetch_assoc($resultatage);
    	while ($ligneage = mysql_fetch_assoc($resultatage))
    	{
    	        $age = ecart_date_now($ligneage["naidatdate"]);
    	}							if (is_null($age) || $age=='')
    	   $age = "<font color='red'>nc</font>";
    	else {
    	       if ($age < 31)
    		$age = "<font color='green'>".$age."</font>";
    	       elseif ($age < 61)
    		$age = "<font color='orange'>".$age."</font>";	
                        else
    		$age = "<font color='red'>".$age."</font>";
    	       }
    et voila les erreur repeter autan de foi que de ligne affichée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Notice: Undefined offset: 2 in C:\www\BALSA_SITE\INCLUDES\fonctions.inc on line 173
     
    Notice: Undefined offset: 1 in C:\www\BALSA_SITE\INCLUDES\fonctions.inc on line 173
     
    Warning: mktime() expects parameter 4 to be long, string given in C:\www\BALSA_SITE\INCLUDES\fonctions.inc on line 175
    sachant que la ligne 173 correspond a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list($mois, $jour, $annee) = explode('/', $madate);

  12. #12
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Dans l'ordre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	$ligneage = mysql_fetch_assoc($resultatage);
    	while ($ligneage = mysql_fetch_assoc($resultatage))
    ya un fetch de trop.

    Ensuite
    var_dump ($madate); // a placer avant le explode, pour voir

    En dernier
    Pour le mktime, c juste un warning mais bon tu peux utiliser intval sur tes variables pour les passer de string à int (long)

  13. #13
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 71
    Par défaut
    jai enlever un fetch et le var dump me rajoute encore une erreur :

    string(0) ""

    en plus des autres qui sont toujours la ^^

    il n affiche quelque chose de correcte et le system ne fonctionne toujours que si il y a une seule ligne retournée :

    string(10) "05/29/2012"

    voila la modif :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var_dump ($madate);
    	list($mois, $jour, $annee) = explode('/', intval($madate));
    et le mktime est bien parti

  14. #14
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	while ($ligneage = mysql_fetch_assoc($resultatage))
    	{
                        print_r($ligneage);
    	        //$age = ecart_date_now($ligneage["naidatdate"]);
    	}
    ça donne quoi ?

  15. #15
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 71
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Array ( [naidatdate] => ) Array ( [naidatdate] => ) Array ( [naidatdate] => ) Array ( [naidatdate] => )
    Notice: Undefined variable: age in C:\www\BALSA_SITE\progs_donnes\recherche_ParSite_saisie.php on line 218
    ligne correspondant a :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (is_null($age) || $age=='')

  16. #16
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Ok donc ta table contient 4 enregistrements avec rien dans le champ [naidatdate] c pour ça que ça marche pas ton code ...

    remontons d'un cran et donnes moi le code de la fonction dans:
    $resultatage = executer_requete2($rqage, "base");

  17. #17
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 71
    Par défaut
    c est pas la fonction executer_requete2 qui foire car je l utilise partout allieur dans mon site et sa fonctionne au poil, ya que a cet endroit que sa foire, c est pas executer requete c est ailleur l erreur ..

  18. #18
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Ya bien 4 enregistrements dans ta table pour cet ip, en tous les cas le champ que tu select bein il sont vides donc ça vient d'avant la boucle ...

  19. #19
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 71
    Par défaut
    ma requete est bonne car lorsqui il n y a qu une seule ligne il n y a pas d erreur et les resultat sont bon , c est donc le traitement apres requete qui merdoi ..

    je pense que le probleme vient soit du while soit de la fonction ecart_date_now

    jai modifier mon code, je nai plus d erreur affichée, meme pour les resultat multiples mais maintenant c est le resultat qui est erroné :

    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
    while ($ligneage)
                   {
                       $age = $ligneage["naidatdate"];
                       if (is_null($age) || $age=='' || $age==' ')
                               $age = "<font color='red'>nc</font>";
                       else
                          {
                               $age = ecart_date_now($age);
                               if ($age < 31)
                                   $age = "<font color='green'>".$age."</font>";
                               elseif ($age < 61)
                                   $age = "<font color='orange'>".$age."</font>";
                               else
                                   $age = "<font color='red'>".$age."</font>";
                          }
                            $ligneage = mysql_fetch_assoc($resultatage);
                  }
    le resultat est etrange, sur certaine requete il est bon , sur certaine il affiche nc alors qui devrai y avoir des valeur et sur certaine il affiche 1 sur toute la liste ... resultat incomprehensible ..

  20. #20
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 71
    Par défaut
    jai remarquer un resultat faux interessant qui pourrait aider a la resolution, lorsque que j ai une seule ligne le resultat est juste mais lorsque jai plusieur ligne il est faux, la valeur age de la derniere ligne se repete sur toute les precedentes affichée, probleme dans le while ?

    voila mon while :

    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
    19
    while ($ligneage)
    {
        $age = $ligneage["naidatdate"];
        if (is_null($age) || $age=='' || $age==' ')
           {
              $age = "<font color='red'>nc</font>";
           }
           else
               {
                   $age = ecart_date_now($age);
                   if ($age < 31)
                   $age = "<font color='green'>".$age."</font>";
                   elseif ($age < 61)
                   $age = "<font color='orange'>".$age."</font>";
                   else
                   $age = "<font color='red'>".$age."</font>";
              }
               $ligneage = mysql_fetch_assoc($resultatage);
    }

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Probleme Notice - Undefined Offset
    Par Tigers206 dans le forum Langage
    Réponses: 6
    Dernier message: 10/03/2008, 12h22
  2. [Tableaux] Probleme de syntaxe: Undefined offset:
    Par defacta dans le forum Langage
    Réponses: 1
    Dernier message: 25/09/2007, 12h16
  3. [Tableaux] Array et Undefined offset
    Par richton95 dans le forum Langage
    Réponses: 10
    Dernier message: 15/03/2006, 22h47
  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