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 :

Extraction avec PHP, MySQL et JSON


Sujet :

PHP & Base de données

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut Extraction avec PHP, MySQL et JSON
    Bonjour,
    J'ai un problème assez complexe, du moins pour moi
    Ce code fonctionne bien tant qu'un résultat est extrait de la base de donnée
    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
    <?php
    header( 'content-type: text/html; charset=utf-8' );
     
    include('../sql/db_config.inc.php');
    include('../sql/db_connect.inc.php');
     
    $sql_search = 'SELECT * FROM tb_marques ORDER BY fd_marque ASC';
    $query_search = mysql_query($sql_search)or die(mysql_error());
    $nb_search = mysql_num_rows($query_search);
     
    // Rudimentary search
    	$matches = array();
     
     
    	while($data_search=mysql_fetch_assoc($query_search)){
    		$marques[]=$data_search;
    	}
     
     
    	// Cleaning up the term
    	$term = trim(strip_tags($_GET['term']));
     
    if($nb_search){	
    	foreach($marques as $marque){
    		if(stripos($marque['fd_marque'], $term) !== false){
    			// Add the necessary "value" and "label" fields and append to result set
    			$marque['value'] = $marque['fd_marque'];
    			$marque['label'] = "{$marque['fd_marque']}, {$marque['id_marque']}";
    			$matches[] = $marque;
    		}
    	}
    }else{
    // Comment faire pour ui.item.id_marque retourne un 0 (voir plus bas)
    }
     
    	// Truncate, encode and return the results
    	$matches = array_slice($matches, 0, 5);
    	print json_encode($matches);
     
     
    include('../sql/db_disconnect.inc.php');
     
     
    ?>
    Le problème vient que si aucun résultat est trouvé dans la base de donnée
    c'est partie n'est pas appliquée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    foreach($marques as $marque){
    		if(stripos($marque['fd_marque'], $term) !== false){
    			// Add the necessary "value" and "label" fields and append to result set
    			$marque['value'] = $marque['fd_marque'];
    			$marque['label'] = "{$marque['fd_marque']}, {$marque['id_marque']}";
    			$matches[] = $marque;
    		}
    	}
    et h'ai besoin qu'un resluta soit retourné, s'il y a rien trouvé.

    MAIS.... je dois récupéré dans le même format.

    Je vous donne un exemple en vous donnant encore ces information.

    La requete est envoyée avec ajax comme ceci:
    Code javascript : 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
    // Autocomplete marque
    	var ac_marques = {
    		source: 'http://www.web.com/manager/templates/naoux/xmlhttprequest/autocomplete-marques.php',
    		autoFocus: true,
    		close: function( event, ui ) {
    			$("#h_marque").val("");
    		},
    		minLength: 1,
    		select:function(event, ui){
    			$("#f_marque").val(ui.item.id_marque);
     
    			if($("#"+$(this).attr('id')+"_h").length){
    				$("#"+$(this).attr('id')+"_h").val(ui.item.id_marque);
    			}
    		}
    	};
     
    	$(".fmarque").autocomplete(ac_marques);

    Donc ceci recupère l'id
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    $("#f_marque").val(ui.item.id_marque);

    Donc s'il ne trouve rien dans la base de donnée, j'aimerais que
    me retourne un 0.

    C'est cette partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $marque['value'] = $marque['fd_marque'];
    $marque['label'] = "{$marque['fd_marque']}, {$marque['id_marque']}";
    $matches[] = $marque;
    qui doit etre ajouté et modifiée après le else du if($nb_search), mais j'ai aucune idée comment


    M'avez vous compris?
    Merci
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2011
    Messages : 154
    Points : 282
    Points
    282
    Par défaut
    Citation Envoyé par pierrot10 Voir le message
    Bonjour,
    J'ai un problème assez complexe, du moins pour moi
    Bonjour,
    Pour moi ce qui est complexe, c'est ce que d'une part tu expliques maladroitement, et d'autre part, ce que tu n'expliques pas. Enfin on va essayer de comprendre ce code incompréhensible et deviner le code qui manque...
    Citation Envoyé par pierrot10 Voir le message
    et h'ai besoin qu'un resluta soit retourné, s'il y a rien trouvé.

    MAIS.... je dois récupéré dans le même format.

    Je vous donne un exemple en vous donnant encore ces information.
    En même temps si t'écrivais en français ça aiderai...
    Citation Envoyé par pierrot10 Voir le message
    La requete est envoyée avec ajax comme ceci:
    Code javascript : 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
    // Autocomplete marque
    	var ac_marques = {
    		source: 'http://www.web.com/manager/templates/naoux/xmlhttprequest/autocomplete-marques.php',
    		autoFocus: true,
    		close: function( event, ui ) {
    			$("#h_marque").val("");
    		},
    		minLength: 1,
    		select:function(event, ui){
    			$("#f_marque").val(ui.item.id_marque);
     
    			if($("#"+$(this).attr('id')+"_h").length){
    				$("#"+$(this).attr('id')+"_h").val(ui.item.id_marque);
    			}
    		}
    	};
     
    	$(".fmarque").autocomplete(ac_marques);
    Là on dirait qu'il manque un bout de code. Outre le fait qu'il ne soit fait aucunement mention d'un ui, d'un item, d'un id_marque, le pire est que le code php correspondant ne permet pas non plus de le deviner. Dans ces cas là il faut chercher plus d'infos en se servant par exemple des clés (en php on a fd_marque, nommage à la con, et id_marque, qui sont stocké d'une part dans le "value" vraisemblablement le value de l'option du select donc l'id, et dans le "label" qui contient une concaténation des deux valeurs retournées par la bdd, vraisemblablement le contenu (textuel) de l'option du select.
    Citation Envoyé par pierrot10 Voir le message
    M'avez vous compris?
    Merci
    Non Mais voici ce que tu peux tenter, vu que ton php et ton js donnent des infos contradictoires mais que rien ne peut permettre de trancher vu que tu ne nous fournit pas tout le code, voici ce que tu peux tenter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $marque['value'] = 0;
    $marque['label'] = "0, test";
    $matches[] = $marque;
    Tu teste et si tu vois affiché 0, test dans le select avec la bonne valeur, bingo.
    Je sais ça parait hallucinant, mais voilà ce qu'il se passe quand on choisit des noms de clés pourris, donc oui il semble bien que $marque['id_marque'] ne se retrouve jamais dans
    ui.item.id_marque, même si il y' avait que deux valeurs, le développeur a réussi à y mettre de l’ambiguïté. Laisse moi deviner? C'est ton prédécesseur et il a été viré? Enfin, ce n'est que des suppositions basés sur des indices, rien ne me permet d'affirmer catégoriquement ce que je dis...
    @+
    Piero

Discussions similaires

  1. Formulaire Flash avec Php Mysql
    Par achos dans le forum Flash
    Réponses: 2
    Dernier message: 23/03/2007, 10h17
  2. [SGBD] Gérer des droits avec php/mysql
    Par pontus21 dans le forum Administration
    Réponses: 9
    Dernier message: 04/05/2006, 19h56
  3. Quel SGBD avec PHP : MySQL ou Postgres
    Par charliejo dans le forum Requêtes
    Réponses: 6
    Dernier message: 25/01/2006, 12h13
  4. multi update avec php/ mysql
    Par arnoweb dans le forum Administration
    Réponses: 1
    Dernier message: 17/11/2005, 22h10

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