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 :

[PHP-JS] Convertir du texte en numérique


Sujet :

Langage PHP

  1. #1
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2006
    Messages : 41
    Par défaut [PHP-JS] Convertir du texte en numérique
    bonjour tout le monde,
    mon probleme est que je veux que mon script php fasse une petite multiplication toute bette, le probleme est que les valeurs que je multiplie je les extrait d'un fichier xml comme étant du texte ce qui fait que le php ne reconnait pas ces valeurs, donc j'ai besoin d'une fonction php qui me permet de convertir du text en numerique.

    j'ai trouvé la fonction intval() mais elle ne fonctionne qu'avec des chaines de caracteres de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $chaine = "5652";
    $int = intval($chaine);
    echo $int; //ça affiche 5652
    mais si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $chaine1 = $fichier[2];//$fichier[$i] étant un tableau qui reçoit le text de 
    $chaine2 = $fichier[3];//chaque ligne du fichier xml
    $int = intval($chaine1) * intval($chaine2);
    echo $int; //ça affiche 0

    j'espere que vous avez compris mon probleme et qu'il ya une solution

    merci d'avance

  2. #2
    Membre expérimenté Avatar de Sceener
    Inscrit en
    Mai 2007
    Messages
    231
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 231
    Par défaut
    Bonsoir ,

    peut-tu mettre un echo sur intval($chaine1) et intval($chaine2) et voir ce que ça sort.

    Sceener.

  3. #3
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2006
    Messages : 41
    Par défaut
    ça m'affiche 0 pour les trois variables

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Que donne un var_dump sur $fichier ?

  5. #5
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2006
    Messages : 41
    Par défaut
    j'ai utilisé var_dump que je découvre et ça m'affiche je l'ai appliqué sur une variable qui est sensée avoir la valeur 28 et puis j'ai éssayé de manipuler un peu cette fonction, j'ai eu comme résultat l'abscence de la colonne ou devait s'afficher le résultat.

  6. #6
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2006
    Messages : 41
    Par défaut
    bonjour tout le monde

    je croi que j'ai cerné ou est le probleme, quand je récupere le texte dans une variable si je l'affiche comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $chaine = $fichier[2];//avec $fichier[2] a comme valeur 15
    echo "b".$chaine; // ça affiche b 15
    donc le probleme vient de l'espace qui se trouve entre b et 15

    comment l'eliminer??

  7. #7
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    essaies
    pour enlever les espaces en début et fin de chaine.

  8. #8
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2006
    Messages : 41
    Par défaut
    ok j'éssaye

  9. #9
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2006
    Messages : 41
    Par défaut
    non l'espace est toujours la!!!

  10. #10
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2006
    Messages : 41
    Par défaut
    peut etre que c'est un retour en ligne plutot qu'un espace!!

    vous ne connaissez pas une fonction qui supprime les retours en ligne??

  11. #11
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Regardez la documentation, elle vous indiquerait que la fonction supprime les deux et même plus ! Les fonctions internes de PHP ne modifie pas sur place la chaîne (ou autre) fournie comme paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $fichier = trim($fichier);
    Mais avec votre code sous les yeux et les valeurs de vos variables ce serait peut être plus facile de vous aider.

  12. #12
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2006
    Messages : 41
    Par défaut
    oui vous avez julp raison j'ai vu la definition de trim() et j'ai meme trouvé ltrim() et rtrim() mais avec mon script ça ne marche pas ce qui fait que j'ai abondoné cette methode et avec des recheches j'ai pu faire un mélange de scripts trouvés et je suis arrivé à afficher exactement ce que je veux j'espere seulement que ça ne me bloquera pas pour la suite.

    sinon ben je vous montre mon script si au cas ou vous avez le meme probleme ke moi

    alors voici le fichier xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <commande>
               <produit>
                    <nom_produit>dvd</nom_produit>
    	   <image_produit>images/imagescat/img68.gif</image_produit>
    	   <description_produit>dfgfh</description_produit>
                    <prix_produit>45</prix_produit>
                    <quantite>15</quantite>
    	   <total>945</total>
               </produit>
    </commande>

    et voici le code php : (ne vous moquez pas c'est vraiment tiré par les cheveux )

    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
     
    <?php 
        // Ma propre fonction de traitement des balises ouvrantes
        function fonctionBaliseOuvrante($parseur, $nomBalise, $tableauAttributs)
        {
            // En fait... nous nous conteterons de mémoriser le nom de la balise
            // afin d'en tenir compte dans la fonction "fonctionTexte"
            global $derniereBaliseRencontree;
            $derniereBaliseRencontree = $nomBalise;
        }
        // Ma propre fonction de traitement des balises fermantes
        function fonctionBaliseFermante($parseur, $nomBalise)
        {
            // On oublie la dernière balise rencontrée
            global $derniereBaliseRencontree;
     
            $derniereBaliseRencontree = "";
        }
     
        // Ma propre fonction de traitement du texte
        // qui est appelée par le "parseur"
        function fonctionTexte($parseur, $texte)
        {global $derniereBaliseRencontree;
    	global $lien;
            // Selon les cas, nous affichons le texte
            // ou nous proposons un lien
            // ATTENTION: Par défaut les noms des balises sont
            //            mises en majuscules 
     
    	    switch ($derniereBaliseRencontree)
    		{		
    		case "IMAGE_PRODUIT":
    		{$lien =  "<table width='120' border='0' bordercolor='#030680'><td width='120' height='30' border='1' bordercolor='#030680'><img src='../mybspace/abonnement/espaceabone/catalogue/$texte.' width='110' height='100'> </td></table>";}
    		break ; 
    		return $lien;
    		} 
    		}
     
    $fichier = "lienfichierxml";//le lien doit etre mis en entier pas du genre(../lien.xml)
     
        // Création du parseur XML
        $parseurXML = xml_parser_create();
        // Je précise le nom des fonctions à appeler
        // lorsque des balises ouvrantes ou fermantes sont rencontrées
        xml_set_element_handler($parseurXML, "fonctionBaliseOuvrante"
                                           , "fonctionBaliseFermante");
        // Je précise le nom de la fonction à appeler
        // lorsque du texte est rencontré
        xml_set_character_data_handler($parseurXML, "fonctionTexte");
        // Ouverture du fichier
        $fp = fopen($fichier, "r");
        if (!$fp) die("Impossible d'ouvrir le fichier XML");
        // Lecture ligne par ligne
        while ( $ligneXML = fgets($fp ,1024)) {
            // Analyse de la ligne
            // REM: feof($fp) retourne TRUE s'il s'agit de la dernière
            //      ligne du fichier.
            xml_parse($parseurXML, $ligneXML, feof($fp)) or
                die("Erreur XML");}
        xml_parser_free($parseurXML);
        fclose($fp);
     
    	  echo "<table width='573' border='1' bordercolor='#030680' class='Style26'>
            <tr>
                <td width='186' height='30' class='Style26'>Pr&eacute;sentation de l'article : </td>
                <td width='100' height='30' class='Style26'>Prix unitaire : </td>
                <td width='63' height='30' class='Style26'>Quantit&eacute; : </td>
                <td width='70' height='30' class='Style26'>Total : </td>
            </tr>";
     
          $fichier = file($fichier); // Nom du fichier à afficher 
    	  $total = count($fichier); // Nombre total des lignes du fichier 
    	  for($i = 0; $i < $total; $i++)  
    	  { // Départ de la boucle 
    	  if ($i == 2)
    	  {
    	  echo "<tr>";
    	  echo "<td rowspan='2' valign='top'>".$fichier[$i];
    	  }
     
    	  if($i == 3)
    	  {
    	  echo "<p align='center'>";
          echo $lien;
    	  echo"</p>";}
     
    	  if($i == 4)
    	  {
    	  echo"<p align='center'>".$fichier[$i]."</p>
    	  </td>";}
     
    	  if($i == 5)
    	  {
    	  $pri = $fichier[$i];
    	  echo"<td height='122'>$pri</td>";}
    	  if($i == 6)
    	  {
               $qte = $fichier[$i];
    		   echo"<td>";
    		      echo $qte;
    		   echo"</td>";}
    	  if($i == 7)
    	  {
               echo"<td>";
    		   echo $fichier[$i];
    		   echo"</td>";
           echo"</tr>
           <tr>
               <td height='42' colspan='3'>&nbsp;</td>
           </tr>";}
    	  } // Fin de la boucle 
    	  echo "</table>";
     
    	   ?>
    il est long hein??? enfin si vous avez une meilleure suggestion je suis toute pour et merci encore

  13. #13
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Y a-t-il une raison particulière justifiant le choix d'un parsing SAX ? Quelle(s) version(s) de PHP avez-vous à votre disposition ?

    Par contre, vos espaces, si la structure est telle que vous la montrez, ne devraient pas apparaître ? De plus, il existe des options pour faire ignorer tous les blancs "superflus" : constante XML_OPTION_SKIP_WHITE / fonction xml_parser_set_option qui pourrait peut être vous convenir.

  14. #14
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2006
    Messages : 41
    Par défaut
    non je n'ai pas de raison valable a l'utilisation du parseur SAX et pour tout vous dire je ne savais meme pas, ce que je sais c'est juste ke ce script marche et m'affiche ce ke je veux, sinon je croi ke je travaille sous php4 puisk j'ai rencontré des fonctions xslt qui ne marchaient qu'avec php5 et ça ne marchait pas chez moi.

    sinon ben je ne sais pas pourkoi ces espaces sont présents vous n'avez qu'a éssayé chez vous je vous ai donné le script complet si vous voulez vous n'avez qu'a enregistrer le fichier xml et mettre le bon lien pour la variable $fichier sinon pour le reste ça devré marché, enfin a part pour l'image.

    ah oui j'utilise easyphp 1.8 pour mes tests

    sinon en ce ki conserne les fonctions que vous m'avez donné je ne sais pas comment les utiliser si vous pouvez m'ecrire un petit script général que je devré suivre peut etre que je comprendrais et si c'est mieux que ce que j'ai ben tant mieux!

  15. #15
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Je ne comprends pas pourquoi vous parsez deux fois le même document une fois en tant que document XML (SAX) et une autre en tant que simple fichier texte où vous perdez tout intérêt d'utiliser XML puisque vous vous basez sur les numéros des lignes

  16. #16
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2006
    Messages : 41
    Par défaut
    Bonsoir,

    julp! je fais ça parceque le parsage ne me permet pas d'afficher le document xml comme je veux; alors j'ai éssayé de trouver un script qui me permettrait d'afficher comme je veux, et j'ai eu l'idée de faire le test sur la ligne et afficher ce que je veux avec, et ça marche!

Discussions similaires

  1. [XL-2003] Convertir une rangée de numérique en texte
    Par yama0 dans le forum Macros et VBA Excel
    Réponses: 38
    Dernier message: 03/01/2013, 14h59
  2. Convertir du texte en numérique
    Par marc56 dans le forum Excel
    Réponses: 4
    Dernier message: 15/08/2008, 11h07
  3. Réponses: 5
    Dernier message: 04/12/2007, 13h40
  4. Convertir du texte en type numérique
    Par dadado dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/09/2007, 16h30
  5. Convertir un champ text en numérique
    Par hannii dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/03/2007, 10h19

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