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 :

Récupérer une chaine de caractere dans une variable [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 29
    Points : 31
    Points
    31
    Par défaut Récupérer une chaine de caractere dans une variable
    bonjour,

    je voudrais savoir si une chose existe, pour faire simple je voulais metre comme condition pour un IF une chaine de caractere, a recherché dans une variable qui contien les données d un champ de ma BDD

    enfin voici le code pour le moment sa sera peut etre plus simple a comprendre ou je veux en venir

    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
    <?php 	$comp_software_id = $donnees['ID']; // recupere d ID du poste pour la table glpi_computeur
    							$software = mysql_query("SELECT * FROM glpi_ocs_link") or die(mysql_error()); //recup de la table ocs_link
                      while ( $donnees_software = mysql_fetch_array($software)) // transfert en tableau sur $donnees_software
                        {   
    					$comp_software_id +1;	// corrige la diference de 1 entre les table ocs_link et glpi_computeur
    						if ( $comp_software_id == $donnees_software['glpi_id'] ) // 
    						{
    						$soft = substr ($donnees_software['import_software']); // $soft recupere tout le test contenue dans import_software pour ce poste
    							if ($soft == "Microsoft+Windows+XP")
    							{
    							echo "TEST";
    							}
                         echo $comp_software_id ;
    					 //echo $donnees_software['import_software'];
     
    						}
                        }
    			}	?>
    pour le code en francais sa donnerais
    si $soft contient "Microsoft+Windows+XP" alors ecrire TEST

    si il faut plus de precision sur certain point dite le, pour le moment je ne sais pas trop de quoi vous auriez besoin pour m aider,

    merci d avance

  2. #2
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,

    Pourquoi ne pas récupérer ton jeu de résultat depuis la requete SQL ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $query = mysql_real_escape_string('Microsoft');
    $sql = mysql_query('SELECT * FROM glpi_ocs_link WHERE import_software LIKE "%'.$query.'%"');
    while($row = mysql_fetch_assoc($sql)){
        echo $row['import_software'].'<br/>';
    }

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    tout ton code peux se compiler comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php 
    $software = mysql_query("SELECT count(*) FROM glpi_ocs_link where glpi_id=($donnees['ID']+1) and import_software like '%Microsoft+Windows+XP%'") or die(mysql_error()); //recup de la table ocs_link
    if (mysql_fetch_array($software > 0) ){
    echo "TEST";
    }
     
     ?>
    Stay in Bed .. Save Energy

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 29
    Points : 31
    Points
    31
    Par défaut
    parce que je suis débutant et que je ne connais pas toute demande que l ont peut faire



    j ai remplacer par ton code mais cela m affiche toujours tous se que contient le champ import_software



    edit: ecrit pour thomas , 2eme reponce ecrite en meme temp que moi ^^


    edit2: pour ce qui est du code de boo64 j obitient le message suviant
    Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    excuse petite erreur de parenthèse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $software = mysql_query('SELECT count(*) FROM glpi_ocs_link where glpi_id=('.$donnees['ID'].'+1) and import_software like "%Microsoft+Windows+XP%"') or die(mysql_error()); //recup de la table ocs_link
    $res=mysql_fetch_array($software);
    if ( $res > 0 ){
    echo "TEST";
    }
    Stay in Bed .. Save Energy

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 29
    Points : 31
    Points
    31
    Par défaut
    alors le code fonctionne , mais pas comme il devrait car que j écrive avec n importe qu elle mot a la place de Microsoft il m affiche a chaque fois "test" alors qu il ne devrais que si le mot recherché se trouve dans la chaine de caractères

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    décidément pas réveiller hier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $software = mysql_query('SELECT count(*) FROM glpi_ocs_link where glpi_id=('.$donnees['ID'].'+1) and import_software like "%Microsoft+Windows+XP%"') or die(mysql_error()); //recup de la table ocs_link
    $res=mysql_fetch_row($software);
    if ( $res[0] > 0 ){
    echo "TEST";
    }
    j'espere c'est bon la
    Stay in Bed .. Save Energy

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 29
    Points : 31
    Points
    31
    Par défaut
    dsl cela ne fonctionne toujours pas

    je debute avec php et mysql alors les petites erreurs je les vois pas

    cette fois je n ai l affichage que sur le dernier poste qui est en plus un mac ^^
    Ces postes sont situé à Epernay
    CR-EPE-PUB-PC01 Microsoft Windows XP Professional lunion-gestion.local
    CR-EPE-PUB-PC04 Microsoft Windows XP Professional lunion-gestion.local
    UN-EPE-LOC-MC02 Mac OS X JOURNAL-LUNION
    UN-EPE-LOC-MC01 Mac OS X JOURNAL-LUNION
    UN-EPE-LOC-MC03 Mac OS X JOURNAL-LUNION TEST

    il y a 5 postes dans cette agence
    il y a 5 postes dans cette agence
    voici mon code complet peut etre que ca poura aidé

    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
    <head>
    </head>
    <body>
    <?php
    mysql_connect("localhost", "root", "");  //log de connexion a serveur SQL
    mysql_select_db("mysql"); //choix de la BDD    
    ?>
    <br><b><font size=5, color=black>
        <?php $nombre=0;
    	echo "Ces postes sont situé à Epernay"; //prob il s affiche tous le temp 
    	$reponse = mysql_query("SELECT * FROM glpi_computers ORDER BY domain")or die(mysql_error()); //choix de la table 
        while ($donnees = mysql_fetch_array($reponse) )    //$donnees recupere toute les info de la table
        {
        ?>
    </font></b>
    	<?php 	$cara = substr ($donnees['name'],3,3);
    			if ($cara == "EPE")
    			{
    			?>
    			<br /><b>
    		<?php echo $donnees['name']; // affiche le nom du poste ?></b>
    		<?php 	$os_id = $donnees['os'];  //donne a $os_id l ID de l'OS du poste ?>
    <font color=red ><i>
    		<?php 	$os = mysql_query("SELECT * FROM glpi_dropdown_os") or die(mysql_error()); // $os recoit la table des glpi_dropdown_os
                        while( $donnees_os = mysql_fetch_array($os) )   //$donneesos fait un "tableau" de la table glpi_dropdown_os
                            {
                                    if ( $os_id == $donnees_os['ID'] ) // si $os_id est egal au champ ID de la table glpi_dropdown_os , execute
                                    {
                                        echo $donnees_os['name'];// affiche le nom de l OS
    									$nombre++;
    									$total++;
                                    }
                            }?>
    </i></font>
     
     
     
    					<?php $domaine_id = $donnees['domain'];  ?> 
    <font color=blue >
    					<?php $domaine = mysql_query("SELECT * FROM glpi_dropdown_domain") or die(mysql_error()); 
                      while ( $donnees_domaine = mysql_fetch_array($domaine))
                        {                        //meme chose que pour l OS sauf pour la selection de la table
                                if ( $domaine_id == $donnees_domaine['ID'] )
                                {
                                    echo $donnees_domaine['name'];
                                }
                        }       
     
    			?>
    </font></tr>
     
    <font color=green ></tr>
     
    					<?php 
    				$software = mysql_query('SELECT count(*) FROM glpi_ocs_link where glpi_id=('.$donnees['ID'].'+1) and import_software like "%Microsoft+Windows+XP%"') or die(mysql_error()); //recup de la table ocs_link
    				$res=mysql_fetch_row($software);
    				if ( $res[0] > 0 )
    				{
     
    				echo "TEST";
     
    				}
     
     
    			}	?>		
    	<?php 
    	}
    	?>
    <br><br><font size=4>
    	<?php
    	echo "il y a $nombre postes dans cette agence";
        mysql_close(); // Déconnexion de MySQL
        ?><input type="button" name="lien-reims" value="retour" onclick="self.location.href='//srv-sherpa/guillaume/agences/index.php'" style="background-color:#dcb371" style="color:white; font-weight:bold"onclick>
    <br></font>
    </body>
    apres je pense que mon code n est pas forcement le plus approprié pour ce qu il me faut , mais dans les grandes ligne, je veux recupérer le nom de tous les poste avec leur OS / domaine / logiciel installé avec une incrémentation pour chaque logiciel , le tout sur une seule page puis une page idem par agences. J espere etre assé clair

    en tout cas merci Boo

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    en plus de cela peut tu me dire la structure de tes tables cela aiderai
    Stay in Bed .. Save Energy

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 29
    Points : 31
    Points
    31
    Par défaut
    euh c est a dire ?



    qqch comme ca te convient ? il te faut toutes les table utilisé ?

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    b juste savoir ou tu recup les infos et sur quel tqble cqr je pense que l'on doit pouvoir faire tout ca en moins de requete
    Stay in Bed .. Save Energy

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 29
    Points : 31
    Points
    31
    Par défaut
    oui je le pense aussi mais bon j été assé content de moi d etre arrivé jusqu a la mais vu que c est l info principale qui ne fonctionne pas

    alors pour commencer je vais sur la table

    glpi_computeurs pour récupéré le nom du poste et l ID correspondant a leur domaine et OS


    OS et Domaine sont dans 2 autre table glpi_dropdown_os et glpi_dropdown_domain qui sont identique en structure


    jusqu ici tous fonctionne bien

    la ou ca ce corse un peu c est pour les logiciel qui sont sur les poste, tout est regrouper dans une seule chaine de caractere dans la table glpi_ocs_link
    voici le champ en question



    avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php 
    				$software = mysql_query('SELECT count(*) FROM glpi_ocs_link where glpi_id=('.$donnees['ID'].'+1) and import_software like "%Microsoft+Windows+XP%"') or die(mysql_error()); //recup de la table ocs_link
    				$res=mysql_fetch_row($software);
    				echo $res.'<br/>';
    					if ( $res[0] > 0 )
    					{
    					echo $res ;
    					echo "TEST";
    					}
    j obtien ceci


    si j ai bien tout compris seul le dernier postes entre dans la boucle "IF" pourquoi ?

    alors que si je remplace par ceci il entre bien tous dans la boucle ce qui n est pas normale non plus car les MAC n ont pas de windows dans les logiciel installé

    en esperant avoir apporté tous les renseignement

    edit: en fait cela fonctionne, ceux qui ne rentre pas dans la sont boucle sont dut a une erreur dans la BDD, il manque certaine correspondance, je vais vider mes table et faire une nouvelle remonté pour avoir une base propre et après ca tout devrais fonctionné

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/02/2011, 11h39
  2. [Tableaux] passer une chaine de caracteres dans une URL ?
    Par isa150183 dans le forum Langage
    Réponses: 3
    Dernier message: 16/09/2008, 15h06
  3. comment modifie un caractere dans une chaine de caractere
    Par lenetfm dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 19/03/2008, 21h35
  4. erreur pour une insertion d'une chaine de caractere dans une cellule
    Par amel95140 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/10/2006, 09h09
  5. Réponses: 2
    Dernier message: 04/11/2005, 11h35

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