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 :

Afficher une image par rapport à une distance


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club Avatar de Tardoss
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 35
    Points : 6
    Points
    6
    Par défaut Afficher une image par rapport à une distance
    Bonjour,

    Je suis en train de créer une application web qui affiche une image (avec plusieurs qui sont en base de données) à 500 mètre autour de nous par rapport à nos coordonnées récupérés avec L'API Google Map mais j'ai une problème. Pour traiter toutes les cas, j'ai utilisé une boucle et plusieurs if mais quand je test rien ne s'affiche et je ne vois pas où est le problème

    Voici 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    <?php
    //connexion BDD
    include "/connexionBdd.php";
     
    //récupération des coordonnées actuelle
    include 'vueGeolocalisation.php';
     
    //requête SQL pour récuperer les coordonnées des images
    $reqImages=$connexionBdd->query("SELECT latitudeImage, longitudeImage from Images;");
    //compter le nombre d'image
    $reqImages=$connexionBdd->query("SELECT count(*) as nombreImages from Images;");
    //chemin de l'image
    $reqChemin=$connexionBdd->query("SELECT cheminImage from Images;");
    if($reqImages && $reqImages && $reqChemin)
     
     
    $reqImagesEnregistree=$reqImages->fetchall();
    $reqImagesEnregistree=$reqImages->fetchall();
    $reqCheminFait=$reqChemin->fetchall();
     
     
    $coordonnees = $reqImagesEnregistree[0];
    $nombreImage=intval($reqImagesEnregistree);
    $latitude =  $coordonnees["latitudeImage"];
    $longitude = $coordonnees["longitudeImage"];
     
     
    //Boucle pour sélectionner la bonne image
    for($i = 0;$i < $nombreImage;$i++){
     
    	if (($Tlatitude-0.01)>=$latitude && ($Tlatitude-0.02)<$latitude){
    	var_dump('	OK1');
     
    	exit;
    		if(($Tlongitude-0.01)>=$longitude && ($Tlongitude-0.02)<$longitude){
    		 $chemin = $reqCheminFait[$i]["cheminImage"];
    	var_dump('	OK2');
    	var_dump($latitude);
    	var_dump($Tlatitude);
    	exit;
    		}
     
    	}
    	elseif (($Tlongitude+0.01)<=$longitude && ($Tlongitude+0.02)>$longitude){
    	var_dump('	OK3');exit;
    		$chemin = $reqCheminFait[$i]["cheminImage"];
     
     
    		}
    	elseif(($Tlatitude+0.01)<=$latitude && ($Tlatitude+0.02)>$latitude){
    		if(($Tlongitude-0.01)>=$longitude && ($Tlongitude-0.02)<$longitude){
    			$chemin = $reqCheminFait[$i]["cheminImage"];
    	var_dump('	OK4');exit;
     
    		}
    		elseif (($Tlongitude+0.01)<=$longitude && ($Tlongitude+0.02)>$longitude){
    		var_dump('	OK5');exit;
    				$chemin = $reqCheminFait[$i]["cheminImage"];
     
    		}
    	}
    	else{
    		$chemin=false;
    	}
    }
    	var_dump($chemin);
    	exit;
     
    if($chemin){
    }
     
    	?>
    P.S : Je sait il manque le <img src pour afficher l'image je l'ai pas encore mis, je voulais d'abord afficher le chemin de l'image ^^

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    comment veux-tu qu'on devine ce qui se passe ?
    A toi de nous le dire.

    Tu as mis des var_dump.
    C'est TRES bien pour un débugage de base ... mais ça donne quoi ?

  3. #3
    Futur Membre du Club Avatar de Tardoss
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 35
    Points : 6
    Points
    6
    Par défaut
    Oui j'ai oublié de dire cette partie importante

    Il ne se passe rien, aucune de mes conditions n'est valider. Je pense justement que mes IF sont mal fait car j'ai fait une dizaine de test avec des coordonnées différente, aucune n'as fonctionné mais je n'ai aucune idée de comment les modifier :/ .

    La seule chose que j'ai (oui je suis un menteur ) c'est bool(false); donc justement aucun de mes IF n'as fonctionné

  4. #4
    Invité
    Invité(e)
    Par défaut
    Tu as conscience qu'on ne peut rien TESTER si tu ne nous donnes pas de valeurs ?
    ($latitude, $longitude, $Tlatitude, $Tlongitude, .....)

    Montre le résultat de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo '<pre>reqImagesEnregistree : '; print_r( $reqImagesEnregistree ); echo '</pre>';
    echo '<pre>reqCheminFait : '; print_r( $reqCheminFait ); echo '</pre>';

  5. #5
    Futur Membre du Club Avatar de Tardoss
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 35
    Points : 6
    Points
    6
    Par défaut
    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
    reqImagesEnregistree : Array
    (
        [0] => Array
            (
                [nombreImages] => 1
                [0] => 1
            )
     
    )
    reqCheminFait : Array
    (
        [0] => Array
            (
                [cheminImages] => images/pic01.jpg
                [0] => images/pic01.jpg
            )
     
    )

  6. #6
    Invité
    Invité(e)
    Par défaut
    Et ça ne te choque pas ?
    Où sont les coordonnées là dedans ??

    Tu as une erreur ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //requête SQL pour récuperer les coordonnées des images
    $reqImages=$connexionBdd->query("SELECT latitudeImage, longitudeImage from Images;");
    //compter le nombre d'image
    $reqImages=$connexionBdd->query("SELECT count(*) as nombreImages from Images;");
    ...
    $reqImages est utilisé 2 fois ! Du coup, la 1ère requête est écrasée...

    soit plus LOGIQUE dans ton code, et récupère les données juste après chaque requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //requête SQL pour récuperer les coordonnées des images
    $reqImages = $connexionBdd->query("SELECT latitudeImage, longitudeImage from Images;");
    $reqImagesEnregistree = $reqImages->fetchall();
     
    //compter le nombre d'image (pas besoin de requête ici : on compte le nombre de lignes récupérées dans la requête ci-dessus)
    $nombreImages = $reqImages->rowCount();
     
    //chemin de l'image
    $reqChemin = $connexionBdd->query("SELECT cheminImage from Images;");
    $reqCheminFait = $reqChemin->fetchall();

    Maintenant, RE-Montre le résultat de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo '<pre>reqImagesEnregistree : '; print_r( $reqImagesEnregistree ); echo '</pre>';
    echo '<pre>reqCheminFait : '; print_r( $reqCheminFait ); echo '</pre>';

  7. #7
    Futur Membre du Club Avatar de Tardoss
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 35
    Points : 6
    Points
    6
    Par défaut
    Pour ce qui est de la coquille je ne comprend pas comment ça à pu arriver dans mon code il y a :
    - $reqImage pour l'image
    - $reqImageP pour le propriétaire de l'image

    enfin bref voilà le résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    reqImagesEnregistree : Array ( [0] => Array ( [latitudeImageP] => 48.9872 [0] => 48.9872 [longitudeImageP] => 1.78872 [1] => 1.78872 ) [1] => Array ( [latitudeImageP] => 55.752 [0] => 55.752 [longitudeImageP] => 37.6153 [1] => 37.6153 ) [2] => Array ( [latitudeImageP] => 48.4386 [0] => 48.4386 [longitudeImageP] => 1.53048 [1] => 1.53048 ) [3] => Array ( [latitudeImageP] => 45.2331 [0] => 45.2331 [longitudeImageP] => 21.1236 [1] => 21.1236 ) [4] => Array ( [latitudeImageP] => 48.4369 [0] => 48.4369 [longitudeImageP] => 1.51807 [1] => 1.51807 ) [5] => Array ( [latitudeImageP] => 46.0021 [0] => 46.0021 [longitudeImageP] => 69.2114 [1] => 69.2114 ) )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    reqCheminFait : Array
    (
        [0] => Array
            (
                [cheminImage] => Images/pic01.jpg
                [0] => ImagePs/pic01.jpg
            )
     
    )

  8. #8
    Invité
    Invité(e)
    Par défaut
    Donc ?
    Ca devrait aller mieux, non ?

    N.B. dans ton code initial (1er message)
    cette ligne sert à quoi ? (ligne 15)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($reqImages && $reqImages && $reqChemin)
    cette ligne est en double (lignes 18-19) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $reqImagesEnregistree=$reqImages->fetchall();
    Remontre ton code CORRIGE.


    [EDIT] dans le résultat que tu montres, on trouve 'latitudeImageP' et 'longitudeImageP'
    et PAS 'latitudeImage' et 'longitudeImage' ??
    Ca ne correspond pas à la requête !

  9. #9
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Juste une remarque par rapport à la suggestion de jreaux :
    Pour reprendre la suggestion de jreaux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $reqImagesEnregistree = $reqImages->fetchall();
     //compter le nombre d'image (pas besoin de requête ici : on compte le nombre de lignes récupérées dans la requête ci-dessus)
    $nombreImages = $reqImages->rowCount();
    En fait, on a même pas besoin d'utiliser rowCount, vu qu'on a récupéré la totalité des données dans un tableau juste avant. Un simple count($reqImagesEnregistree) suffit

    Sinon, je ne comprends pas bien pourquoi tu fais une requête pour récupérer les coordonnées et une pour récupérer le chemin alors que les deux viennent visiblement de la même table Images Et que se passe-t-il si plusieurs images correspondent ?

    Peut-être devrais-tu réécrire ton script en renommant les variables avec des noms facilement différenciables par exemple $latitudePosition pour la latitude de la position de référence et $latitudeImage pour la latitude récupérée en base.
    Et nous montrer la dernière version de ton code.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  10. #10
    Futur Membre du Club Avatar de Tardoss
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 35
    Points : 6
    Points
    6
    Par défaut
    D'abord la ligne
    if($reqImages && $reqImages && $reqChemin)
    petit fail de ma part ^^

    Ensuite j'ai une base de données avec plusieurs table et ici il y à 2 table qui m'interesse la table Image avec :
    - Le chemin de l'image
    - le nom de l'image
    - ect...
    et la table ImageP (P=propriétaire) avec:
    - longitude
    - latitude
    -ect...

    En gros (vu que je ne suis pas clair) les coordonnées du propriétaire de l'image montre sont image (qui sera très souvent un meme internet ^^). Vous allez me dire bah regroupe tous dans une seul et unique table mais non, j'ai des tables qui sont utilisé dans d'autre script php (faut garder du mystère).

    le Tlongitude et le Tlatitude eux sont dans mon petit javascript que voici :
    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
     
        <script async defer
        src="https://maps.googleapis.com/maps/api/js?key=la_clé_d'API_Google&callback=initMap">
        </script>
     
    <script>
              navigator.geolocation.getCurrentPosition (function(position) {
     
    			var Tlatitude = position.coords.latitude;
     
    			var Tlongitude = position.coords.longitude;
     
    console.log(Tlatitude);
    		 console.log(Tlongitude);
            });
    	</script>
    Maintenant il ne reste plus qu'une chose et c'était mon problème de base mes if ne fonctionne pas aucune de mes IF ne se valide et ceux pour toutes mes annonces petite contrainte supplémentaire l'image doit se trouver à 500 mètre ou moins de notre position. (c'est pour nous faire bouger de nos PC :p)

    voici le code CORRIGE :
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     <?php
    //connexion BDD
    include "connexionBdd.php";
     
    include 'vueGeolocalisation.php';
     
     
    $reqImage=$connexionBdd->query("SELECT latitudeImageP, longitudeImageP from ImageP;");
    $reqImageEnregistree=$reqImage->fetchall();
     
    $nombreImage = $reqImage->rowCount();
     
     
    $reqChemin=$connexionBdd->query("SELECT cheminImage from Image;");
    $reqCheminFait=$reqChemin->fetchall();
     
    if($reqImage && $reqImageP && $reqChemin)
     
    	echo '<pre>reqImageEnregistree : '; print_r( $reqImageEnregistree ); echo '</pre>';
    echo '<pre>reqCheminFait : '; print_r( $reqCheminFait ); echo '</pre>';
     
     
    //var_dump($reqImagePEnregistree);
    //var_dump($reqImageEnregistree);
    //var_dump($reqCheminFait[0]);
    $coordonnees = $reqImagePEnregistree[0];
    //var_dump($coordonnees);
    $nombreImage=intval($reqImageEnregistree);
    $latitude =  $coordonnees["latitudeImageP"];
    $longitude = $coordonnees["longitudeImageP"];
    //echo $longitude;
     
     
    for($i = 0;$i < $nombreImage;$i++){
     
    	if (($Tlatitude-0.01)>=$latitude && ($Tlatitude-0.02)<$latitude){
    	var_dump('	OK1');
     
    	exit;
    		if(($Tlongitude-0.01)>=$longitude && ($Tlongitude-0.02)<$longitude){
    		 $chemin = $reqCheminFait[$i]["cheminImage"];
    	var_dump('	OK2');
    	var_dump($latitude);
    	var_dump($Tlatitude);
    	exit;
    		}
    	//break;
    	}
    	elseif (($Tlongitude+0.01)<=$longitude && ($Tlongitude+0.02)>$longitude){
    	var_dump('	OK3');exit;
    		$chemin = $reqCheminFait[$i]["cheminImage"];
     
    		//break;
    		}
    	elseif(($Tlatitude+0.01)<=$latitude && ($Tlatitude+0.02)>$latitude){
    		if(($Tlongitude-0.01)>=$longitude && ($Tlongitude-0.02)<$longitude){
    			$chemin = $reqCheminFait[$i]["cheminImage"];
    	var_dump('	OK4');exit;
    			//break;
    		}
    		elseif (($Tlongitude+0.01)<=$longitude && ($Tlongitude+0.02)>$longitude){
    		var_dump('	OK5');exit;
    				$chemin = $reqCheminFait[$i]["cheminImage"];
     
    			//break;
    		}
    	}
    	else{
    		$chemin=false;
    	}
    }
    	var_dump($chemin);
    	exit;
     
    if($chemin){
    }
     
    	?>
    P.S : Celira une boucle for pour parcourir les id un par un et dès qu'une image est trouvé un break ou un exit. (je sais pas lequel choisir ^^).

  11. #11
    Invité
    Invité(e)
    Par défaut
    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
    <?php
    //connexion BDD
    include "/connexionBdd.php";
     
    //récupération des coordonnées actuelle
    include 'vueGeolocalisation.php';
     
    //requête SQL pour récuperer les coordonnées des images ET le chemin de l'image
    $reqImages = $connexionBdd->query("SELECT latitudeImage, longitudeImage, cheminImage from Images;");
    $imagesArray = $reqImages->fetchall(); // array
    $nombreImage = $reqImages->rowCount();
     
    if( $nombreImage > 0 )
    {
    	foreach( $imagesArray as $i => $imageRow )
    	{
    		$latitude = $imageRow['latitudeImage'];
    		$longitude = $imageRow['longitudeImage'];
    		$cheminImage = $imageRow['cheminImage'];
     
    		if (.............)
    		{
    	.............
    		}
    	}
    }
    	var_dump($chemin);
    Par contre, on ne sait pas d'où sortent $Tlatitude et $Tlongitude...

    N.B. et je n'ai pas vérifié si les conditions fonctionnent.

    [EDIT] OUPS ! Je n'ai pas vu le message précédent !

    le Tlongitude et le Tlatitude eux sont dans mon petit javascript que voici :
    SAUF QUE tu ne peux PAS utiliser ces variables JavaScript dans un script PHP !
    A moins de les envoyer via Ajax à ton script de traitement PHP ? (je ne vois rien qui fasse ça dans tes codes).

    Bref : tout ceci n'est vraiment pas clair...

    break ou un exit. (je sais pas lequel choisir ^^)
    • exit : "Affiche un message et termine le script courant" (TOUT ce qui vient après n'est pas exécuté). Donc : Non, pas dans ce cas.
    • break : "L'instruction break permet de sortir d'une structure for, foreach, while, do-while ou switch."
    Dernière modification par Invité ; 18/06/2018 à 14h46.

  12. #12
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Il y a un truc pas logique dans ta boucle : à aucun moment tu ne modifies $latitude et $longitude. Donc tu boucles n fois avec les mêmes valeurs. Il faudrait charger la bonne valeur au début de la boupar quelque chose comme $latitude = $reqImagePEnregistree[$i]["latitudeAnnonceur"];. Mais l'idéal serait plutôt d'avoir une seule requête avec une jointure entre Image et ImageP (tu as bien un moyen de savoir quelle ligne de Image va avec quelle ligne de ImageP ?)

    le Tlongitude et le Tlatitude eux sont dans mon petit javascript
    Ah... et comment ces données vont-elles jusqu'au script PHP ?

    En fait, il faudrait faire un var_dump au début de la boucle de $Tlongitude et $Tlatitude et de $latitude et $longitude, histoire de pouvoir les comparer.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  13. #13
    Futur Membre du Club Avatar de Tardoss
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 35
    Points : 6
    Points
    6
    Par défaut
    >_< j'ai oublié l'AJAX, quel imbécile je suis.

    Il y un tous petit problème alors mais vraiment petit qui est : je suis très mauvais avec AJAX

    Je vous fatigue c'est sûr ^^

    [EDIT] Celira il sort d'ou ton latitude Annonceur . Je fait pas de la pub moi mais des memes Internet

  14. #14
    Invité
    Invité(e)
    Par défaut
    Tu es surtout mal organisé et tu manques de LOGIQUE.

    Tout est un peu "en vrac"...


    ...et on ne comprends pas grand chose.
    Mets des commentaires dans ton code, avec des explications pour comprendre qui fait quoi.

  15. #15
    Futur Membre du Club Avatar de Tardoss
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 35
    Points : 6
    Points
    6
    Par défaut
    oui je n'ai que 1 an de programmation Web et pas beaucoup en PHP + Javascript donc forcement je part un peu dans tous les sens :/. Du coup dites moi juste ou vous ne comprenez pas et je réexpliquerai .

  16. #16
    Invité
    Invité(e)
    Par défaut
    Perso, je n'ai RIEN compris. C'est trop confus.

    1- "image" et "imagePropriétaire" ? QUI est le "point fixe" ?

    2- Tes tables : montre-nous la structure précise, au lieu de mettre des "ect...". (pour info, c'est "etc.", pour "et caetera")

    3- les conditions : elles font quoi ?

    4- "exit" : tu sors à la 1ère condition vraie ? Donc une seule image va sortir ? Rien compris...

    5- ...

  17. #17
    Futur Membre du Club Avatar de Tardoss
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 35
    Points : 6
    Points
    6
    Par défaut
    OK mettons un peu de contexte (au début cela aurai été mieux ) : moi et mes amis on va se balader dans notre ville et saisir les coordonnées d'un endroit qu'in aura choisi et y attribuer un meme. Sur un index qui regroupe plusieurs script PHP et java script tu sera afficher en temps réelle ou tu est sur le monde avec l'aide l'API de Google Map. le programme que vos montre depuis tout à l'heure lui te montre un meme (en pop-up ou sur le côté je ne sais pas encore ) qui est à 500 mètres ou moins de toi. Après il y a des trajet avec un type de meme avec plusieurs arrêt (type : chevalier, nourriture, ect...).

    Voici le script de ma base de données :
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
     
     
     
    -- -----------------------------------------------------
    -- Table `meme`.`Arret`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `meme`.`Arret` (
      `idArret` INT NOT NULL AUTO_INCREMENT,
      `LongitudeArret` FLOAT(15) NULL,
      `LatitudeArret` FLOAT(15) NULL,
      `nomArret` VARCHAR(45) NULL,
      PRIMARY KEY (`idArret`))
    ENGINE = InnoDB;
     
     
    -- -----------------------------------------------------
    -- Table `meme`.`Trajets`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `meme`.`Trajets` (
      `idTrajets` INT NOT NULL AUTO_INCREMENT,
      `numeroTrajet` VARCHAR(45) NULL,
      `nomTrajet` VARCHAR(100) NULL,
      PRIMARY KEY (`idTrajets`))
    ENGINE = InnoDB;
     
     
    -- -----------------------------------------------------
    -- Table `meme`.`Image`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `meme`.`Image` (
      `idImage` INT NOT NULL AUTO_INCREMENT,
      `titreImage` VARCHAR(45) NULL,
      `descriptionImage` TEXT NULL,
      `cheminImage` VARCHAR(255) NULL,
      PRIMARY KEY (`idImage`))
    ENGINE = InnoDB;
     
     
    -- -----------------------------------------------------
    -- Table `meme`.`FormatMeme`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `meme`.`FormatMeme` (
      `idFormatMeme` INT NOT NULL AUTO_INCREMENT,
      `Image_idImage` INT NOT NULL,
      `FormatMeme` VARCHAR(45) NULL,
      PRIMARY KEY (`idFormatMeme`, `Image_idImage`),
      INDEX `fk_FormatMeme_Image1_idx` (`Image_idImage` ASC),
      CONSTRAINT `fk_FormatMeme_Image1`
        FOREIGN KEY (`Image_idImage`)
        REFERENCES `meme`.`Image` (`idImage`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB;
     
     
    -- -----------------------------------------------------
    -- Table `meme`.`typeMeme`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `meme`.`typeMeme` (
      `idtypeMeme` INT NOT NULL AUTO_INCREMENT,
      `Image_idImage` INT NOT NULL,
      `typeMeme` VARCHAR(45) NULL,
      PRIMARY KEY (`idtypeMeme`, `Image_idImage`),
      INDEX `fk_typeMeme_Image1_idx` (`Image_idImage` ASC),
      CONSTRAINT `fk_typeMeme_Image1`
        FOREIGN KEY (`Image_idImage`)
        REFERENCES `meme`.`Image` (`idImage`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB;
     
     
    -- -----------------------------------------------------
    -- Table `meme`.`ImageP`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `meme`.`ImageP` (
      `idImageP` INT NOT NULL AUTO_INCREMENT,
      `Image_idImage` INT NOT NULL,
      `libelleImageP` VARCHAR(100) NULL,
      `nomPropietaire` VARCHAR(100) NULL,
      `telPropietaire` VARCHAR(100) NULL,
      `prenomPropietaire` VARCHAR(100) NULL,
      `mailPropietaire` VARCHAR(45) NULL,
      `latitudeImageP` FLOAT(15) NULL,
      `longitudeImageP` FLOAT(15) NULL,
      PRIMARY KEY (`idImageP`, `Image_idImage`),
      INDEX `fk_ImageP_Image1_idx` (`Image_idImage` ASC),
      CONSTRAINT `fk_ImageP_Image1`
        FOREIGN KEY (`Image_idImage`)
        REFERENCES `meme`.`Image` (`idImage`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB;
     
     
    -- -----------------------------------------------------
    -- Table `meme`.`Administrateurs`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `meme`.`Administrateurs` (
      `idAdministrateurs` INT NOT NULL AUTO_INCREMENT,
      `loginAdmin` VARCHAR(100) NULL,
      `mdpAdmin` VARCHAR(45) NULL,
      `nomAdmin` VARCHAR(100) NULL,
      `prenomAdmin` VARCHAR(100) NULL,
      PRIMARY KEY (`idAdministrateurs`))
    ENGINE = InnoDB;
     
     
    -- -----------------------------------------------------
    -- Table `meme`.`SeSitue`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `meme`.`SeSitue` (
      `Trajets_idTrajets` INT NOT NULL,
      `Arret_idArret` INT NOT NULL,
      PRIMARY KEY (`Trajets_idTrajets`, `Arret_idArret`),
      INDEX `fk_Trajets_has_Arret_Arret1_idx` (`Arret_idArret` ASC),
      INDEX `fk_Trajets_has_Arret_Trajets1_idx` (`Trajets_idTrajets` ASC),
      CONSTRAINT `fk_Trajets_has_Arret_Trajets1`
        FOREIGN KEY (`Trajets_idTrajets`)
        REFERENCES `meme`.`Trajets` (`idTrajets`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION,
      CONSTRAINT `fk_Trajets_has_Arret_Arret1`
        FOREIGN KEY (`Arret_idArret`)
        REFERENCES `meme`.`Arret` (`idArret`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB;
     
     
    -- -----------------------------------------------------
    -- Table `meme`.`Diffuser`
    -- -----------------------------------------------------
    CREATE TABLE IF NOT EXISTS `meme`.`Diffuser` (
      `ImageP_idImageP` INT NOT NULL,
      `Arret_idArret` INT NOT NULL,
      PRIMARY KEY (`ImageP_idImageP`, `Arret_idArret`),
      INDEX `fk_ImageP_has_Arret_Arret1_idx` (`Arret_idArret` ASC),
      INDEX `fk_ImageP_has_Arret_ImageP1_idx` (`ImageP_idImageP` ASC),
      CONSTRAINT `fk_ImageP_has_Arret_ImageP1`
        FOREIGN KEY (`ImageP_idImageP`)
        REFERENCES `meme`.`ImageP` (`idImageP`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION,
      CONSTRAINT `fk_ImageP_has_Arret_Arret1`
        FOREIGN KEY (`Arret_idArret`)
        REFERENCES `meme`.`Arret` (`idArret`)
        ON DELETE NO ACTION
        ON UPDATE NO ACTION)
    ENGINE = InnoDB;
     
     
    SET SQL_MODE=@OLD_SQL_MODE;
    SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
    SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
    ImageP = propriétaire de l'image

    Les conditions de ma boucle regarde si à ton niveau avec les coordonnées si tu n'as pas quelqu'un qui à mis une image autour de toi à 500 en utilisant les coordonnées.

    En gros, tu est en 48.54564, 1.2334 et le programme regarde si jamais il y a les coordonnées d'une image qui sont proche des tiennes. Et oui je ne montre qu'une seule image.

    Voilà je peut pas être pus clair. ¯\_(ツ)_/¯

  18. #18
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Ok : on y voit un peu plus clair.

    Tu as une colonne Image_idImage dans ImageP qui est une clé étrangère vers Image (youpi ) Donc tu peux faire une jointure entre les deux tables sur cette colonne et écrire une seule requête pour la récupération des données.
    On peut même restreindre les données aux images qui ont une latitude entre Tlatitude + 0.02 et Tlatitude - 0.02 et une longitude entre Tlongitude + 0.02 et Tlongitude - 0.02 si je prends les valeurs max de tes conditions. (Inutile de remonter des images de Strasbourg si tu es à Brest)

    Ensuite, on peut écrire une bloc de validité qui va renvoyer vrai ou faux en fonction des conditions. Si le bloc renvoie vrai, on stoppe la boucle et on retourne l'image.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  19. #19
    Invité
    Invité(e)
    Par défaut
    Bon.
    Résumons :

    A- dans le fichier principal : on a besoin d'Ajax et d'une fonction JavaScript qui fera toutes ces opérations :

    1. récupérer les coordonnées GPS en JavaScript (géolocalisation HTML5 Google). on obtient des variables JavaScript : Tlatitude et Tlongitude
    2. via Ajax, transmettre ces coordonnées à un fichier PHP, qui va faire le traitement (comparaison des distances, sélection de l'image)
    3. ensuite, il faut récupérer le résultat du traitement PHP (nom de l'image, coordonnées,...)
    4. puis afficher sur la carte Google cette image
    5. de plus, il faudra penser à activer cette fonction JavaScript à intervalle régulier, pour mettre à jour la position (surtout si on se déplace !)


    B- dans ce fichier PHP :
    1. on récupère les coordonnées (envoyées via Ajax), qu'on appelera "position utilisateur".
    2. on obtient des variables PHP : $Tlatitude et $Tlongitude
    3. via requête SQL, on récupère la liste (dans un array) des "images propriétaires" : $array_imagesP
    4. pour chaque ligne de la requête foreach( $array_imagesP as imagesP), on met dans des variables PHP : $Platitude et $Plongitude
    5. on calcule la distance entre l'"image propriétaire" et la "position utilisateur"
      (Calcul de distance entre 2 points connaissant latitude et longitude
    6. on prend la première image qui se trouve à moins de 500m
    7. on renvoie ces coordonnées au script JavaScript, dans un json, avec json_encode.
      A ce moment, la suite se passe dans la fonction JavaScript (voir ci-dessus A-3)


    Citation Envoyé par Celira Voir le message
    On peut même restreindre les données aux images qui ont une latitude entre Tlatitude + 0.02 et Tlatitude - 0.02 et une longitude entre Tlongitude + 0.02 et Tlongitude - 0.02 si je prends les valeurs max de tes conditions.
    +/- 0.02 : Ca restreint effectivement le nombre de données récupérées, et donc à traiter !
    Et donc améliore la vitesse de traitement.
    Dernière modification par Invité ; 18/06/2018 à 17h02.

  20. #20
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Pour le traitement PHP central, tu peux faire quelque chose comme ça :
    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
    $stmtImage = $connexionBdd->prepare("SELECT latitudeImageP, longitudeImageP, cheminImage from ImageP join Image on Image_idImage.idImage WHERE latitudeImageP BETWEEN :minLat AND :maxLat AND longitudeImageP BETWEEN :minLong AND :maxLong");
    $stmtImage->execute([':minLat' => $Tlatitude - 0.02, ':maxLat' => $Tlatitude + 0.02, ':minLong' => $Tlongitude - 0.02, ':maxLong' => $Tlongitude + 0.02]);
    $array_imagesP = $stmtImage->fetchall();
     
    foreach( $imagesArray as $i => $imageRow ) {
        $latitude = $imageRow['latitudeImage'];
        $longitude = $imageRow['longitudeImage'];
        $cheminImage = $imageRow['cheminImage'];
     
        $validCoord = false;
        if (($Tlatitude - 0.01) >= $latitude && ($Tlatitude - 0.02) < $latitude) {
            echo "OK 1";
            $validCoord = true;
        } elseif (($Tlongitude + 0.01) <= $longitude && ($Tlongitude + 0.02) > $longitude) {
            echo "OK 2";
            $validCoord = true;
        }
        elseif (($Tlatitude + 0.01) <= $latitude && ($Tlatitude + 0.02) > $latitude) {
            if (($Tlongitude - 0.01) >= $longitude && ($Tlongitude - 0.02) < $longitude) {
                echo "OK 3";
                $validCoord = true;
     
            } elseif (($Tlongitude + 0.01) <= $longitude && ($Tlongitude + 0.02) > $longitude) {
                echo "OK 4";
                $validCoord = true;
            } else {
                echo "KO 5";
            }
        } else {
            echo "KO 6";
        }
        if ($validCoord) {
            $chemin = $cheminImage;
            break; // on sort de la boucle dès qu'on a trouvé quelque chose
        }
    }
    var_dump($chemin);
    Les echo et var_dump sont là pour le debug et j'ai réutilisé tes conditions pour la validité d'une image.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. Afficher une image par rapport à sa miniature
    Par mrdesign38 dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 11/10/2012, 14h23
  2. Recaler une image par rapport à une autre
    Par le pingouin fou dans le forum OpenCV
    Réponses: 2
    Dernier message: 14/10/2011, 10h22
  3. Placer une image par rapport à une autre
    Par ProjetTram dans le forum Images
    Réponses: 1
    Dernier message: 03/03/2009, 17h01
  4. Afficher et cacher une image par rapport au survol d'une zone
    Par asie86 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 16/01/2008, 13h48
  5. Réponses: 4
    Dernier message: 24/01/2006, 13h18

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