CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Ligne php fausse

ketaz69
ketaz69
Niveau 9
03 septembre 2012 à 20:57:20

Euh je ne vois pas ou placer le echo 'Erreur:'.¤e->getMessage();

Je l'ai mis ici, ça ne fonctionne pas :

catch(Exception $e
echo 'Erreur : ' . $e->getMessage();)
{
die('Erreur : '.$e->getMessage());
}

var_dump($_POST)
?>

Peux tu m'indiquer plus précisément ?

Merci.

bob63
bob63
Niveau 11
03 septembre 2012 à 21:07:12

catch(Exception $e)
{
echo 'Erreur : ' . $e->getMessage();
}

A la place du die ;) Le die s'utilise sur une requête que tu executes. Si elle ne fonctionne pas, c'est le die qui prend la suite. Ici tu as juste à afficher l'erreur à la place.

Le var_dump($_POST), met le juste après ta boucle for. Sinon si tu catch, elle sera jamais afficher en bas.

ketaz69
ketaz69
Niveau 9
03 septembre 2012 à 21:46:25

Voilà ce que j'ai d'afficher après essai :

array (size=21)
'pseudo' => string 'Ketaz' (length=5)
'niveau' => string '30' (length=2)
'nbvic' => string '1500' (length=4)
'elo' => string '1920' (length=4)
'age' => string '18' (length=2)
'support' => int 1
'solotop' => int 1
'jungle' => int 1
'fr' => int 1
'gb' => int 1
'desires' => string 'test ' (length=5)
'captcha_code' => string 'nTde5W' (length=6)
'ad' => int 0
'ap' => int 0
'any' => int 0
'de' => int 0
'es' => int 0
'ru' => int 0
'pl' => int 0
'br' => int 0
'jp' => int 0

bob63
bob63
Niveau 11
03 septembre 2012 à 22:11:19

ça correspond à ce que tu veux ?

Sinon tu as testé ta requête en "dur" dans phpmyadmin voir si elle te retourne une erreur ?

Sinon j'ai précisé que tu dois vérifier le type dans les bindvalue ... tu as vérifier ?

ketaz69
ketaz69
Niveau 9
03 septembre 2012 à 22:47:48

En dur il faut que je mettes des valeurs directement non ?

Sinon oui j'ai changer les bindvalue

Voici le code actuel :

<?php
try
{
$var_tab = array('ad','support','ap','solotop','jungle','any'
,'fr','gb','de','es','ru','pl','br','jp');

for($i=0;$i<sizeof($var_tab);$i++)

{
if (isset($_POST[$var_tab[$i]]) && $_POST[$var_tab[$i]] == true)
$_POST[$var_tab[$i]] = 1;
else
$_POST[$var_tab[$i]] = 0;
}

$bdd = new PDO('mysql:host=localhost;dbname=deathrecapbdd', 'root', '');

$req = $bdd->prepare('INSERT INTO recherche_de_joueurs
(pseudo, niveau, nbrevictoires, elo, age, ad, support, ap, solotop, jungle, any, fr, gb, de, es, ru, pl, br, jp, description) VALUES (:pseudo, :niveau, :nbrevictoires, :elo, :age, :ad, :support, :ap, :solotop, :jungle, :any, :fr, :gb, :de, :es, :ru, :pl, :br, :jp, :description)');
$req->bindValue(':pseudo', $_POST['pseudo'], PDO::PARAM_STR);
$req->bindValue(':niveau', $_POST['niveau'], PDO::PARAM_INT);
$req->bindValue(':nbrevictoires', $_POST['nbvic'], PDO::PARAM_INT);
$req->bindValue(':elo', $_POST['elo'], PDO::PARAM_INT);
$req->bindValue(':age', $_POST['age'], PDO::PARAM_INT);
$req->bindValue(':ad', $_POST['ad'], PDO::PARAM_STR);
$req->bindValue(':age', $_POST['age'], PDO::PARAM_INT);
$req->bindValue(':support', $_POST['support'], PDO::PARAM_INT);
$req->bindValue(':ap', $_POST['ap'], PDO::PARAM_INT);
$req->bindValue(':solotop', $_POST['solotop'], PDO::PARAM_INT);
$req->bindValue(':jungle', $_POST['jungle'], PDO::PARAM_INT);
$req->bindValue(':any', $_POST['any'], PDO::PARAM_INT);
$req->bindValue(':fr', $_POST['fr'], PDO::PARAM_INT);
$req->bindValue(':gb', $_POST['gb'], PDO::PARAM_INT);
$req->bindValue(':de', $_POST['de'], PDO::PARAM_INT);
$req->bindValue(':es', $_POST['es'], PDO::PARAM_INT);
$req->bindValue(':ru', $_POST['ru'], PDO::PARAM_INT);
$req->bindValue(':pl', $_POST['pl'], PDO::PARAM_INT);
$req->bindValue(':br', $_POST['br'], PDO::PARAM_INT);
$req->bindValue(':jp', $_POST['jp'], PDO::PARAM_INT);
$req->bindValue(':description', $_POST['desires'], PDO::PARAM_STR);
$req->execute();

echo 'FOnctionne bien !';
}

catch(Exception $e)
{
echo 'Erreur : ' . $e->getMessage();
}
var_dump($_POST)

?>

ketaz69
ketaz69
Niveau 9
03 septembre 2012 à 23:28:08

Il faut pas une valeur pour id aussi ?

ketaz69
ketaz69
Niveau 9
04 septembre 2012 à 00:21:59

Ah et les résultats correspondent

ketaz69
ketaz69
Niveau 9
04 septembre 2012 à 01:58:26

En dur ça fonctionne si je mets des valeurs directement

Les même que affiché.

bob63
bob63
Niveau 11
04 septembre 2012 à 08:28:08

Tu parles de quel Id ? Dans ta requête actuellement tu le spécifie pas. Après si tu as un id, s'il est auto incrémenté, pas besoin de le spécifier.

Si la requête fonctionne, c'est qu'il y a une erreur dans un bindvalue.

Pourquoi tu as mis tes champs en tinyint ? C'est utile d'avoir 0 ou 1 ? Car sinon tu as juste à récupérer la valeur de tes POST (sans faire de boucle), vu que une checkbox cochée renvoie true, sinon false. Ainsi tu passes tout tes champs en "boolean" et voilà.

bob63
bob63
Niveau 11
04 septembre 2012 à 08:29:23

As-tu vérifier au passage que $bdd n'est pas vide ? Tu peux faire un var_dump dessus pour vérifier que la connexion s'effectue bien.

ketaz69
ketaz69
Niveau 9
04 septembre 2012 à 15:45:10

J'ai ça en réponse : object(PDO)[1]

bob63
bob63
Niveau 11
04 septembre 2012 à 16:01:46

Hum la gestion des exceptions en PHP ...

Essai de mettre un or die sur le execute directement

$req->execute() or die('Une erreur est survenue);

Car si tu es sûre des types, et que la requête fonctionne bien dans phpmyadmin, il n'y a pas de raison que ca fonctionne pas ...

ketaz69
ketaz69
Niveau 9
04 septembre 2012 à 16:43:47

J'ai ce message maintenant ! :

Une erreur est survenue

ketaz69
ketaz69
Niveau 9
04 septembre 2012 à 16:46:04

Voici le code actuel :

<?php
try
{
$var_tab = array('ad','support','ap','solotop','jungle','any'
,'fr','gb','de','es','ru','pl','br','jp');

for($i=0;$i<sizeof($var_tab);$i++)

{
if (isset($_POST[$var_tab[$i]]) && $_POST[$var_tab[$i]] == true)
$_POST[$var_tab[$i]] = 1;
else
$_POST[$var_tab[$i]] = 0;
}

$bdd = new PDO('mysql:host=localhost;dbname=deathrecapbdd', 'root', '');

$req = $bdd->prepare('INSERT INTO recherche_de_joueurs
(pseudo, niveau, nbrevictoires, elo, age, ad, support, ap, solotop, jungle, any, fr, gb, de, es, ru, pl, br, jp, description) VALUES (:pseudo, :niveau, :nbrevictoires, :elo, :age, :ad, :support, :ap, :solotop, :jungle, :any, :fr, :gb, :de, :es, :ru, :pl, :br, :jp, :description)');
$req->bindValue(':pseudo', $_POST['pseudo'], PDO::PARAM_STR);
$req->bindValue(':niveau', $_POST['niveau'], PDO::PARAM_INT);
$req->bindValue(':nbrevictoires', $_POST['nbvic'], PDO::PARAM_INT);
$req->bindValue(':elo', $_POST['elo'], PDO::PARAM_INT);
$req->bindValue(':age', $_POST['age'], PDO::PARAM_INT);
$req->bindValue(':ad', $_POST['ad'], PDO::PARAM_STR);
$req->bindValue(':support', $_POST['support'], PDO::PARAM_INT);
$req->bindValue(':ap', $_POST['ap'], PDO::PARAM_INT);
$req->bindValue(':solotop', $_POST['solotop'], PDO::PARAM_INT);
$req->bindValue(':jungle', $_POST['jungle'], PDO::PARAM_INT);
$req->bindValue(':any', $_POST['any'], PDO::PARAM_INT);
$req->bindValue(':fr', $_POST['fr'], PDO::PARAM_INT);
$req->bindValue(':gb', $_POST['gb'], PDO::PARAM_INT);
$req->bindValue(':de', $_POST['de'], PDO::PARAM_INT);
$req->bindValue(':es', $_POST['es'], PDO::PARAM_INT);
$req->bindValue(':ru', $_POST['ru'], PDO::PARAM_INT);
$req->bindValue(':pl', $_POST['pl'], PDO::PARAM_INT);
$req->bindValue(':br', $_POST['br'], PDO::PARAM_INT);
$req->bindValue(':jp', $_POST['jp'], PDO::PARAM_INT);
$req->bindValue(':description', $_POST['desires'], PDO::PARAM_STR);
$req->execute() or die('Une erreur est survenue');

}

catch(Exception $e)
{

}

?>

bob63
bob63
Niveau 11
04 septembre 2012 à 17:01:15

$req->bindValue(':ad', $_POST['ad'], PDO::PARAM_STR);

En string, normal ?

Met plutôt ça comme erreur, j'aurais du te le proposer direct :

$req->execute() or die($req->errorInfo());

ketaz69
ketaz69
Niveau 9
04 septembre 2012 à 18:07:24

Ah non j'ai corrigé,

Voici ce que m'affiche l'erreur avec errorinfo :

"Array"

bob63
bob63
Niveau 11
04 septembre 2012 à 20:37:54

Hum, bizzare que ça fonctionne pas à ce niveau :(

Essai de mettre les valeurs en dur à la place des POST :

$req->bindValue(':pseudo', "bob63"], PDO::PARAM_STR);

Par exemple. Pour valider que l'erreur vient pas des POST déjà.

J'ai relu la requête, elle est bonne. Ca doit vraiment être une erreur avec un bindvalue ... un mauvais type ou un truc comme ça.

bob63
bob63
Niveau 11
04 septembre 2012 à 20:38:22
  • Le crochet après bob63 n'a rien à faire là :hap:
ketaz69
ketaz69
Niveau 9
04 septembre 2012 à 20:52:56

J'ai mis ça en code :

<?php
try
{
$var_tab = array('ad','support','ap','solotop','jungle','any'
,'fr','gb','de','es','ru','pl','br','jp');

for($i=0;$i<sizeof($var_tab);$i++)

{
if (isset($_POST[$var_tab[$i]]) && $_POST[$var_tab[$i]] == true)
$_POST[$var_tab[$i]] = 1;
else
$_POST[$var_tab[$i]] = 0;
}

$bdd = new PDO('mysql:host=localhost;dbname=deathrecapbdd', 'root', '');

$req = $bdd->prepare('INSERT INTO recherche_de_joueurs
(pseudo, niveau, nbrevictoires, elo, age, ad, support, ap, solotop, jungle, any, fr, gb, de, es, ru, pl, br, jp, description) VALUES (:pseudo, :niveau, :nbrevictoires, :elo, :age, :ad, :support, :ap, :solotop, :jungle, :any, :fr, :gb, :de, :es, :ru, :pl, :br, :jp, :description)');
$req->bindValue(':pseudo', "Ketaz", PDO::PARAM_STR);
$req->bindValue(':niveau', "30", PDO::PARAM_INT);
$req->bindValue(':nbrevictoires', "1500", PDO::PARAM_INT);
$req->bindValue(':elo', "1920", PDO::PARAM_INT);
$req->bindValue(':age', "18", PDO::PARAM_INT);
$req->bindValue(':ad', "1", PDO::PARAM_BOOL);
$req->bindValue(':support', "0", PDO::PARAM_BOOL);
$req->bindValue(':ap', "1", PDO::PARAM_BOOL);
$req->bindValue(':solotop', "1", PDO::PARAM_BOOL);
$req->bindValue(':jungle', "1", PDO::PARAM_BOOL);
$req->bindValue(':any', "0", PDO::PARAM_BOOL);
$req->bindValue(':fr', "1", PDO::PARAM_BOOL);
$req->bindValue(':gb', "1", PDO::PARAM_BOOL);
$req->bindValue(':de', "0", PDO::PARAM_BOOL);
$req->bindValue(':es', "0", PDO::PARAM_BOOL);
$req->bindValue(':ru', "1", PDO::PARAM_BOOL);
$req->bindValue(':pl', "1", PDO::PARAM_BOOL);
$req->bindValue(':br', "1", PDO::PARAM_BOOL);
$req->bindValue(':jp', "0", PDO::PARAM_BOOL);
$req->bindValue(':description', "test", PDO::PARAM_STR);
$req->execute() or die($req->errorInfo());

}

catch(Exception $e)
{

}

?>

J'ai encore le message "Array" qui apparaît !

bob63
bob63
Niveau 11
04 septembre 2012 à 21:06:37

Il ne faut pas mettre de quote ou guillemets autour des INT ;) Enlèves les tous.

Sinon euhhh en fait depuis un moment tu avais pas mis le bon code car je vois PDO::PARAM_BOOL !! Ca change tout là ... bool c'est true ou false !!

Moi je t'ai fait changer true pour 1 et false pour 0 car j'avais mis PARAM_INT.

Si tu laisse PARAM_BOOL, forcément faut remettre false et true ...

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment