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 ??
4 réponses
-
Bonjour
Comment as-tu paramétrer ce champ dans ta base de données ?
-
-
Ton $resultat[0] me parait étrange...
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,
- 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 - Est-ce normal que tu aies mis des simple quotes autour de
-
Ok, j'ai utilisé
$resultat
au lieu de$resultat[0]
et quand j'utiliseINSERT INTO heliumzahra (helium) values(79.3);
, il insère bien79.3
dans la base.
J'ai utilisévar_dump
et 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
$resultat
ne contient pas la valeur que tu espères ...
Que donnes unvar_dump
de la variable$lignes
?
Et puis.. que contient ton fichierhelium.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 - Jordane45 a raison, tu parses mal ton fichier texte.
$lignes
est 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 - Méthode 1 : comme jordane45 le propose, tu peux utiliser
-
