Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/08/2007, 20h56   #1
Invité de passage
 
Inscription : octobre 2006
Messages : 41
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : octobre 2006
Messages : 41
Points : 3
Points : 3
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 :
1
2
3
4
 
$chaine = "5652";
$int = intval($chaine);
echo $int; //ça affiche 5652
mais si je fais :

Code :
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
fantazya_z est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2007, 21h14   #2
Membre actif
 
Avatar de Sceener
 
Inscription : mai 2007
Messages : 229
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 229
Points : 179
Points : 179
Envoyer un message via MSN à Sceener
Bonsoir ,

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

Sceener.
__________________
La sagesse des hommes ne tient pas à leur expérience, mais à leur aptitude à l'expérience.

Sceener est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2007, 21h25   #3
Invité de passage
 
Inscription : octobre 2006
Messages : 41
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : octobre 2006
Messages : 41
Points : 3
Points : 3
ça m'affiche 0 pour les trois variables
fantazya_z est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2007, 23h40   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Que donne un var_dump sur $fichier ?
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2007, 00h06   #5
Invité de passage
 
Inscription : octobre 2006
Messages : 41
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : octobre 2006
Messages : 41
Points : 3
Points : 3
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.
fantazya_z est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2007, 14h38   #6
Invité de passage
 
Inscription : octobre 2006
Messages : 41
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : octobre 2006
Messages : 41
Points : 3
Points : 3
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 :
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??
fantazya_z est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2007, 14h41   #7
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
essaies
pour enlever les espaces en début et fin de chaine.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2007, 14h43   #8
Invité de passage
 
Inscription : octobre 2006
Messages : 41
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : octobre 2006
Messages : 41
Points : 3
Points : 3
ok j'éssaye
fantazya_z est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2007, 14h45   #9
Invité de passage
 
Inscription : octobre 2006
Messages : 41
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : octobre 2006
Messages : 41
Points : 3
Points : 3
non l'espace est toujours la!!!
fantazya_z est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2007, 14h52   #10
Invité de passage
 
Inscription : octobre 2006
Messages : 41
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : octobre 2006
Messages : 41
Points : 3
Points : 3
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??
fantazya_z est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2007, 15h13   #11
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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 :
$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.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2007, 16h40   #12
Invité de passage
 
Inscription : octobre 2006
Messages : 41
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : octobre 2006
Messages : 41
Points : 3
Points : 3
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 :
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 :
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
fantazya_z est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2007, 16h59   #13
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2007, 17h49   #14
Invité de passage
 
Inscription : octobre 2006
Messages : 41
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : octobre 2006
Messages : 41
Points : 3
Points : 3
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!
fantazya_z est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2007, 18h20   #15
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2007, 23h39   #16
Invité de passage
 
Inscription : octobre 2006
Messages : 41
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : octobre 2006
Messages : 41
Points : 3
Points : 3
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!
fantazya_z est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h58.


 
 
 
 
Partenaires

Hébergement Web