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

PHP & Base de données Discussion :

Boucle dans un code PHP [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Mars 2012
    Messages : 22
    Par défaut Boucle dans un code PHP
    Bonjour à tous.

    Je me sers de google maps au moyen de ce 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <?php
    
                    require('GoogleMapAPIv3.class.php');
    
                    $gmap = new GoogleMapAPI();
                    $gmap->setDivId('test1');
                    $gmap->setDirectionDivId('route');
                    $gmap->setCenter('Nantes');
                    $gmap->setEnableWindowZoom(true);
                                    $gmap->setEnableAutomaticCenterZoom(true);
                    $gmap->setDisplayDirectionFields(true);
                    // $gmap->setClusterer(true);
                    $gmap->setSize('600px','600px');
                    $gmap->setZoom(11);
                    $gmap->setLang('fr');
                    $gmap->setDefaultHideMarker(false);
                    // $gmap->addDirection('nantes','paris');
    
                                    // cat1
                    $coordtab = array();
                    $coordtab []= array('6 avenue jean jaurès 77360 france','Vaires sur Marne','<strong>html 'Vaires sur Marne</strong>');
                                    // $gmap->setIconSize(20,34);
                    $gmap->addArrayMarkerByAddress($coordtab,'cat1');
                                    
    
                    $gmap->generate();
                    echo $gmap->getGoogleMap();
    
                    ?>
    Comme vous pouvez le constater, l'adresse "6 avenue jean jaurès" est statique.
    Je souhaiterais qu'elle devienne dynamique au moyen d'une requête mysql, comme celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $db = JFactory::getDBO();
    $query="SELECT * FROM #__cck_store_form_activit_de_service WHERE id=66";
    echo $query;
    $db->setQuery( $query );
    $related_field = $db->loadObject();
    J'obtiens alors les variables "$related_field->activite_adresse_numero" et "$related_field->activite_adresse_rue".
    Je souhaiterais placer ces variables dans mon code afin d'obtenir la ligne suivante :
    $coordtab []= array('$related_field->activite_adresse_numero $related_field->activite_adresse_rue 77360 france','Vaires sur Marne','<strong>html 'Vaires sur Marne</strong>');

    Mais cela ne fonctionne pas.
    Quel doit être la syntaxe ?

    Je vous remercie de votre attention et de votre aide.

  2. #2
    Membre Expert Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Par défaut
    Ca ne fonctionne pas. C'est à dire??? Quelle erreur s'affiche? Quel est le code complet une fois modifié?

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Mars 2012
    Messages : 22
    Par défaut
    Bonjour Marc,

    Voici le code que je souhaite obtenir :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <div id="map" onClick="document.getElementById('lat').value=getCurrentLat();document.getElementById('lng').value=getCurrentLng();">
    
                                                   <?php
    
                    require('php/GoogleMapAPIv3.class.php');
    
                    $gmap = new GoogleMapAPI();
                    $gmap->setDivId('test1');
                    $gmap->setDirectionDivId('route');
                    $gmap->setCenter('Vaires sur Marne');
                    $gmap->setEnableWindowZoom(true);
    				$gmap->setEnableAutomaticCenterZoom(true);
                    $gmap->setDisplayDirectionFields(true);
                    $gmap->setSize('800px','800px');
                    $gmap->setZoom(11);
                    $gmap->setLang('fr');
                    $gmap->setDefaultHideMarker(false);
    $db = JFactory::getDBO();
    $query="SELECT * FROM #__content NATURAL JOIN #__cck_store_form_activit_de_service WHERE catid=12";
    echo $query;
    $db->setQuery( $query );
    $field = $db->loadObject();			
    				// cat1
                    $coordtab = array();
    foreach($field as $article){ 
    $vaires='Vaires sur Marne';	
    $titre=$article->title;		
    				$coordtab []= array($article->activite_adresse_numero $article->activite_adresse_rue, $vaires, $titre);
    				}
    				// $gmap->setIconSize(5,5);
                    $gmap->addArrayMarkerByAddress($coordtab,'cat1');
    
                    $gmap->generate();
                    echo $gmap->getGoogleMap();
    
                    ?>
                </div>
    En rouge, c'est le code qui ne fonctionne pas. Je souhaite faire une boucle afin de placer plusieurs marqueurs sur la carte, comme ici en statique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // cat1
                    $coordtab = array();
                    $coordtab []= array('4 avenue jean jaures','Vaires sur Marne','<strong>4 avenue jean jaures</strong>');
                    $coordtab []= array('3 rue de Brou','Vaires sur Marne','<strong>3 rue de Brou</strong>');
    				// $gmap->setIconSize(20,34);
                    $gmap->addArrayMarkerByAddress($coordtab,'cat1');
    Merci pour ton aide.

  4. #4
    Membre Expert Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Par défaut
    Au risque de me répéter :
    Quelle erreur obtiens-tu?

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Mars 2012
    Messages : 22
    Par défaut
    Désolé Marc.

    J'ai l'erreur suivante :
    Parse error: syntax error, unexpected T_VARIABLE, expecting ')'
    sur la ligne :
    $coordtab []= array($article->activite_adresse_numero $article->activite_adresse_rue, $vaires, $titre);

  6. #6
    Membre Expert Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Par défaut
    Tu vois le message d'erreur ne peux pas être plus explicite.

    Il manque une virgule entre $article->activite_adresse_numero et $article->activite_adresse_rue.

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Mars 2012
    Messages : 22
    Par défaut
    Bon, je sais où se trouve l'erreur :
    Il faut des guillemets dans la ligne, qui sera de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $coordtab []= array('$article->activite_adresse_numero $article->activite_adresse_rue', '$vaires', '$titre');
    comment écrire l'expression avec des guillemets ?

  8. #8
    Membre Expert Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Par défaut
    Le plus propre serait alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $coordtab[]= array($article->activite_adresse_numero.' '.$article->activite_adresse_rue, $vaires, $titre);

  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Mars 2012
    Messages : 22
    Par défaut
    Bonjour Marc,

    Merci pour la réponse, mais j'ai trouvé. J'ai d'abord concaténé deux colonnes. La ligne doit être de la sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $coordtab[]= array(''.$adress.'', ''.$vaires.'', ''.$titre.'');
    Ce code fonctionne parfaitement si je n'ai qu'une seule adresse.

    Mon souci se situe maintenant lorsque je mets en place une boucle :
    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
    	$coordtab = array();
    $db = JFactory::getDBO();
    $query = 'SELECT * FROM #__content NATURAL JOIN #__cck_store_form_activit_de_service WHERE catid=12';
    echo '<p>'.$query.'</p>';
    $db->setQuery($query);
    $article = $db->loadObject();
    foreach ($article as $field) { 
    $rue=$field->activite_adresse_rue;
    $title = $article->title;
    echo '<p>'.$rue.'</p>';
    $letters = array("é", "è", "ê", "ë");
    $address = str_replace($letters,'e',$rue); 
    echo '<p>'.$address.'</p>';
                    $coordtab []= array(''.$address.'', ''.$title.'', ''.$title.'');
    				}
    				// $gmap->setIconSize(20,34);
                    $gmap->addArrayMarkerByAddress($coordtab,'cat1');
    L'erreur, "Notice: Trying to get property of non-object" se situe sur cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $rue=$field->activite_adresse_rue;
    Je pense que je ne dois pas écrire cette ligne de la sorte...

    Merci de votre aide.

  10. #10
    Membre Expert Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Par défaut
    Comme l'erreur l'indique ta variable $field n'est pas un objet. Donc tu ne peux pas récupérer de propriété comme tu essaies de le faire sur une variable non objet.

    Je ne connais pas Joomla mais je te conseille cette page qui explique comment récupérer des données depuis une base.

  11. #11
    Membre Expert Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Par défaut
    J'aurais tenté un truc du genre :

    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
    	$coordtab = array();
    $db = JFactory::getDBO();
    $query = 'SELECT * FROM #__content NATURAL JOIN #__cck_store_form_activit_de_service WHERE catid=12';
    echo '<p>'.$query.'</p>';
    $db->setQuery($query);
    $article = $db->loadObjectList();
    foreach ($article as $field) { 
    $rue=$field->activite_adresse_rue; //activité_adresse_rue doit être le nom du champ en base!!!!
    $title = $article->title;
    echo '<p>'.$rue.'</p>';
    $letters = array("é", "è", "ê", "ë");
    $address = str_replace($letters,'e',$rue); 
    echo '<p>'.$address.'</p>';
                    $coordtab []= array(''.$address.'', ''.$title.'', ''.$title.'');
    				}
    				// $gmap->setIconSize(20,34);
                    $gmap->addArrayMarkerByAddress($coordtab,'cat1');

  12. #12
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Mars 2012
    Messages : 22
    Par défaut
    Bonjour Marc,

    Grâce à toi, le code fonctionne.

    Je te remercie grandement.

  13. #13
    Membre Expert Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Par défaut
    Et le petit résolu qui va bien.....

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/07/2006, 13h48
  2. [SQL] erreur dans la requette SQL ou dans le code PHP
    Par jack_1981 dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 11/07/2006, 21h21
  3. Erreur dans mon code PHP
    Par jack_1981 dans le forum Langage
    Réponses: 6
    Dernier message: 12/05/2006, 10h01
  4. [PHP-JS] Probleme de javascript dans un code php
    Par stomerfull dans le forum Langage
    Réponses: 3
    Dernier message: 23/01/2006, 09h33
  5. [PHP-JS] Probleme de javascript dans un code php
    Par stomerfull dans le forum Langage
    Réponses: 20
    Dernier message: 12/01/2006, 13h41

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