Insertion float mysql m'affiche que le premier chiffre
Bonjour tout le monde,
J'ai le code suivant :
Lorsque je consulte ma base de donnée le champ
Pourquoi ??
J'ai le code suivant :
<?php include 'koneksi.php'; $fichier = 'helium.txt'; if (file_exists($fichier)) { if (filesize($fichier) != 0) { $lignes = file($fichier); echo '<table>'; for ($i = count($lignes)-1; $i<count($lignes); $i++) { echo '<tr>'; for ($j = 20; $j < 25; $j++) { echo '<td>'; { $resultat=$lignes[$i][$j]; } echo '</td>'; $proses = mysqli_query($mysqli, "INSERT INTO heliumzahra (helium) values('$resultat[0]')"); echo $resultat; } } echo '</tr>'; } echo '</table>'; } } ?>
Lorsque je consulte ma base de donnée le champ
heliumm'affiche que
7, sachant que le nombre dans le fichier texte est
79.3.
Pourquoi ??
A voir également:
- Insertion float mysql m'affiche que le premier chiffre
- Excel trier par ordre croissant chiffre - Guide
- Clavier iphone chiffre et lettre - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Touche insertion clavier - Guide
- Insertion sommaire word - Guide
4 réponses
dans la base il est déclaré double
Ton $resultat[0] me parait étrange...
vu que tu remplit ta variable avec cette ligne de code
Je pense donc que tu dois juste utiliser
sinon ça ne te retourne que le premier caractère...
Tu peux aussi faire un var_dump de ta variable pour voir ce qu'elle contient.... ( et nous le montrer si besoin )
vu que tu remplit ta variable avec cette ligne de code
$resultat=$lignes[$i][$j];
Je pense donc que tu dois juste utiliser
$proses = mysqli_query($mysqli, "INSERT INTO heliumzahra (helium) values('$resultat')");
sinon ça ne te retourne que le premier caractère...
Tu peux aussi faire un var_dump de ta variable pour voir ce qu'elle contient.... ( et nous le montrer si besoin )
Bonjour,
Bonne chance
- Est-ce normal que tu aies mis des simple quotes autour de
$resultat[0]
dans ta requête ? Personnellement, je n'aurais rien mis. - Si tu fais un
echo $resultat[0];
, as-tu bien un résultat flottant ? - Si tu fais un
echo "INSERT INTO heliumzahra (helium) values('$resultat[0]')";
, est-ce que la requête est correctement construite ? - Si tu lances la requête
INSERT INTO heliumzahra (helium) values(79.3);
dans un client SQL, est-ce que ça fait ce qu'il faut ?
Bonne chance
Ok, j'ai utilisé
J'ai utilisé
$resultatau lieu de
$resultat[0]et quand j'utilise
INSERT INTO heliumzahra (helium) values(79.3);, il insère bien
79.3dans la base.
J'ai utilisé
var_dumpet le résultat est le suivante :
string '8' (length=1)
string '0' (length=1)
string '.' (length=1)
string '3' (length=1)
string ' ' (length=1)
C'est donc que ta variable
Que donnes un
Et puis.. que contient ton fichier
Le souci ne semble clairement pas venir de l'insertion en BDD .. mais bien de la façon dont tu essaies de lire le contenu de ce fichier !
$resultatne contient pas la valeur que tu espères ...
Que donnes un
var_dumpde la variable
$lignes?
Et puis.. que contient ton fichier
helium.txt?
Le souci ne semble clairement pas venir de l'insertion en BDD .. mais bien de la façon dont tu essaies de lire le contenu de ce fichier !
C'est donc un fichier CSV (peu importe l'extension.. txt, csv, ou n'importe quoi d'autre..) avec, comme séparateur, des tabulations ?
Il existe donc une fonction PHP permettant de facilement lire un fichier de ce type...
https://www.php.net/manual/fr/function.fgetcsv.php
Il existe donc une fonction PHP permettant de facilement lire un fichier de ce type...
https://www.php.net/manual/fr/function.fgetcsv.php
Jordane45 a raison, tu parses mal ton fichier texte.
Comme jordane45 ton fichier est de type
Bonne chance
$lignesest un tableau de chaîne dont chaque chaîne de caractère correspond à une ligne de fichier.
Comme jordane45 ton fichier est de type
.csv(le délimiteur semble être l'espace). Pour le charger en base deux approches sont possibles :
- Méthode 1 : comme jordane45 le propose, tu peux utiliser
fgetcsv
permet de charger le contenu d'un fichier.csv
en distinguant les colonnes entre elles (voir l'exemple dans ce lien). - Méthode 2 : En MySQL, tu peux directement charger un fichier
.csv
en base avecLOAD DATA INFILE
.
Bonne chance