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 :

supprimer valeur tableau ne marche pas


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 13
    Points : 10
    Points
    10
    Par défaut supprimer valeur tableau ne marche pas
    Bonjour,
    Je créé un tableau comme ci-dessous et avec un "unset" je veux supprimer une valeur, mais j'ai ce message d'erreur:
    " Uncaught Error: Cannot unset string offsets in ... "
    Code PHP : 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
    22
    23
    24
    25
    26
    ...
     
    $repons = $bdd->query("SELECT ville_nom  
                                    FROM villes_france_free  
                                    WHERE   longit BETWEEN $longMoins AND  $longPlus
                                    AND lat BETWEEN $latMoins  AND  $latPlus
     
                                 ");
     
     
                     $x= 0;    $ListeVilles = array();  
     
                        while($rep = $repons->fetch()){
     
                             $villeX[$x]= $rep['ville_nom'];
                             $villeX[$x]= addslashes($villeX[$x]);  // ajoute des '\' aux villes avec apostrophe 
                             array_push($ListeVilles,$villeX[$x]  );
                                  $x=$x+1;  
                                  }
     
     
                     $ListeVilles="'".implode("','",$ListeVilles)."'";
     
     unset($ListeVilles[$villeDepart]);
     
    return $ListeVilles;     ...

    En déplaçant le unset avant implode je n'ai plus de message d'erreur, mais le "unset" ne marche toujours pas la $"villeDepart" n'est pas retirée :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                 unset($ListeVilles[$villeDepart]);                  
                     $ListeVilles="'".implode("','",$ListeVilles)."'";
    Merci de m'aider.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    affichez le contenu de la variable qui vous pose problème et vous verrez mieux ce qu'il se passe.

    pour faire ça, vous pouvez essayer cette fonction qui affichera n'importe quelle variable composée d'objets, tableaux, code XML :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function aff($var)
    {
    	echo "<pre>";
    	echo htmlspecialchars(var_export($var, TRUE));
    	echo "</pre>";
    }

  3. #3
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 222
    Points
    8 222
    Billets dans le blog
    17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ListeVilles="'".implode("','",$ListeVilles)."'";
    unset($ListeVilles[$villeDepart]);
    $ListeVilles devient une chaîne, tu ne peux donc plus traiter cette variable comme un tableau.



    En déplaçant le unset avant implode je n'ai plus de message d'erreur mais le "unset" ne marche toujours pas la $"villeDepart" n'est pas retirée:

    unset($ListeVilles[$villeDepart]);
    $ListeVilles="'".implode("','",$ListeVilles)."'";
    On ne voit pas comment est valorisée $villeDepart dans ton extrait. Le problème vient sûrement de là.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ListeVilles="'".implode("','",$ListeVilles)."'";
    unset($ListeVilles[$villeDepart]);
    $ListeVilles devient une chaîne, tu ne peux donc plus traiter cette variable comme un tableau.

    Ok puis je retirer $villeDepart de la chaine ?



    On ne voit pas comment est valorisée $villeDepart dans ton extrait. Le problème vient sûrement de là.
    $villeDepart est une simple variable un nom de ville qui existe bien dans $ListeVilles.


    Comme je n'ai pas la solution pour extraire $villeDepart de $ListeVilles j'ai réussi en amont de ne pas la sélectionner:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            $repons = $bdd->query("SELECT ville_nom  
    								FROM villes_france_free 
    								WHERE   longit BETWEEN $longMoins AND  $longPlus
    								AND lat BETWEEN $latMoins  AND  $latPlus
    								 AND ville_nom NOT LIKE '$villeDepart'
                                 ");
    mais j'aimerais si c'est possible aussi ne pas sélectionner un groupe de villes, par exemple ci-dessous mais ça ne marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            AND ville_nom NOT LIKE IN ('$ListeVilles2')

  5. #5
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 222
    Points
    8 222
    Billets dans le blog
    17
    Par défaut
    Ok puis je retirer $villeDepart de la chaine ?
    Il vaudrait mieux retirer $villeDepart du tableau.
    Tu peux trouver sa position avec array_search().

    mais j'aimerais si c'est possible aussi ne pas sélectionner un groupe de villes, par exemple ci-dessous mais ça ne marche pas
    Affiche la requête générée. Elle doit être mauvaise.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    je me suis mal exprimé. Retirer une ville "villeDépart" j'y arrive avec:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                    SELECT ville_nom  
    		FROM villes_france_free 
    		WHERE   longit BETWEEN $longMoins AND  $longPlus
    		AND lat BETWEEN $latMoins  AND  $latPlus
    		AND ville_nom NOT LIKE '$villeDepart'
    En revanche retirer un groupe de ville je ne sais pas faire. J'ai essayé de retirer "$ListeVilles2" avec AND ville_nom NOT LIKE IN ('$ListeVilles2') et j'ai l'erreur:
    Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'IN

  7. #7
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 222
    Points
    8 222
    Billets dans le blog
    17
    Par défaut
    et j'ai l'erreur:
    Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'IN
    Affiche la requête générée. Elle doit être mauvaise.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

Discussions similaires

  1. [XL-2003] Macro fonctionne bien pour supprimer montant tableau 2 mais pas dans tableau 3
    Par Un Internaute dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/01/2023, 12h47
  2. fonction mail tableau ne marche pas
    Par elisabeta dans le forum Langage
    Réponses: 1
    Dernier message: 17/09/2012, 08h08
  3. [Sharepoint Designer 2007] Tri sur tableau se marche pas
    Par Enthau dans le forum SharePoint
    Réponses: 0
    Dernier message: 23/04/2008, 14h48
  4. Réponses: 2
    Dernier message: 23/10/2007, 17h33
  5. Tableau qui marche pas
    Par solp dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/04/2006, 19h21

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