Problème base de données

a marqué ce sujet comme résolu.

Bonjour étant en train de configurer un site web récoltant des données arduino pour un projet, j’aimerai avoir une aide pour que le programme suivant fonctionne…

Voici le programme (j’ai un accès PHPmyAdmin via MobaXtrem (FTP) ceci me servira a plus tard récupérer des données provenant d’Arduino :

 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
/* <?php
try
{ // connection à la base de données
    // On se connecte à MySQL ()
    $bdd = new PDO('mysql:host=90.4.193.110;dbname=ruche', 'root', 'xxx');
}
catch(Exception $e)
{
    die('Erreur : '.$e->getMessage()); // En cas d'erreur, on affiche un message et on arrête tout
}
    if (isset($_GET['Ruche_Tmp']) && (isset($_GET['Ruche_Humid'])) && (isset($_GET['Ruche_Son'])) && (isset($_GET['Ruche_Poids'])) && (isset($_GET['Abreuvoir_Tmp'])) && (isset($_GET['Abreuvoir_ETResistance'])) && (isset($_GET['Arduino_Tmp']))) // on teste si la variable existe
     {
    $_GET['Ruche_Tmp'] = floatval($_GET['Ruche_Tmp']); // On force le type float pour la variable  
    $_GET['Ruche_Humid'] = floatval($_GET['Ruche_Humid']); // On force le type float pour la variable
    $_GET['Ruche_Son'] = floatval($_GET['Ruche_Son']); // On force le type float pour la variable
    $_GET['Ruche_Poids'] = floatval($_GET['Ruche_Poids']); // On force le type float pour la variable
    $_GET['Abreuvoir_Tmp'] = floatval($_GET['Abreuvoir_Tmp']); // On force le type float pour la variable
    $_GET['Arduino_Tmp'] = floatval($_GET['Arduino_Tmp']); // On force le type float pour la variable

    // echo ('donnee ' .$_GET["Ruche_Tmp"]. ' en cours d\'ecriture</br>'); // On affiche ce qui se passe

    // $bdd->exec('INSERT INTO donnees_ruche (valeur) VALUES('.$_GET["temp"].')');  // On insère dans la BD

$req = $bdd->prepare('INSERT INTO donnees_ruche(Ruche_Tmp, Ruche_Humid, Ruche_Son, Ruche_Poids, Abreuvoir_Tmp, Abreuvoir_ETResistance, Arduino_Tmp)
VALUES(:Ruche_Tmp, :Ruche_Humid, :Ruche_Son, :Ruche_Poids, :Abreuvoir_Tmp, :Abreuvoir_ETResistance, :Arduino_Tmp)')
or exit(print_r($bdd->errorInfo()));

$req->execute(array(
'Ruche_Tmp' => $_GET['Ruche_Tmp'],
'Ruche_Humid' =>  $_GET['Ruche_Humid'],
'Ruche_Son' => $_GET['Ruche_Son'],
'Ruche_Poids' => $_GET['Ruche_Poids'],
'Abreuvoir_Tmp' => $_GET['Abreuvoir_Tmp'],
'Abreuvoir_ETResistance' => $_GET['Abreuvoir_ETResistance'],
'Arduino_Tmp' => $_GET['Arduino_Tmp']

));
print_r($req->errorInfo());     
    // echo ('donnee ' .$_GET['Ruche_Tmp']. ' ecrite!');   // On affiche le résultat
    }
?>
*/
+0 -0

Salut !

Je signale ton message pour que, si tu ne le fais pas toi-même, un admin vienne mettre en forme ton code, parce que là, surtout du PHP dont les $ interfèrent avec notre gestionnaire de formule mathématiques, c’est illisible.

Et si tu nous disais ce qui ne fonctionne pas ? On a du code, on ne va pas le tester pour toi afin de trouver les erreurs dont tu pourrais (et probablement devrais) nous parler  ;)

Edit

Merci artragis

+0 -0

Salut,

Je te conseille fortement de changer ton mot de passe de BDD (et autre si tu utilises le même) si celui que tu nous as donné est le vrai.

Sans le message d’erreur, c’est compliqué. Cependant, ton code est déjà étrange :

1
2
3
4
5
6
7
<?php
$_GET['Ruche_Tmp'] = floatval($_GET['Ruche_Tmp']); // On force le type float pour la variable
// Ensuite tu fais un
'Ruche_Tmp' => $_GET['Ruche_Tmp'],

// Pourquoi ne pas faire un
'Ruche_Tmp' => floatval($_GET['Ruche_Tmp']),
+1 -0

Salut,

Tu devrais englober tout le code manipulant la base de données dans le try, comme ça ça te permettra de gérer les erreurs MySQL directement dans ton catch sans faire appel à print_r($req->errorInfo());. Essaie également de résoudre les quelques problèmes d’indentation (si du moins ils existent aussi dans ton fichier d’origine), ça n’en rendra ton code que plus propre :)

Sinon, effectivement, ce serait bien plus simple de t’aider à résoudre ton problème actuel si tu nous donnais l’erreur que tu obtiens.

+0 -0

Salut
d’après la doc (http://php.net/manual/fr/pdo.prepare.php), il faut mettre les ":" également au niveau du execute
Je dis peut être des bêtises n’ayant jamais utilisé PDO :$

Angelo

Apparemment, PDO accepte effectivement les : dans la méthode execute(), mais ils ne sont pas obligatoires en réalité ;)

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte