Bonsoir,
Pouvez vous me dire pourquoi ce code ne fonctionne pas ? :
Pseudo : <input type="text" name="pseudo" />
<input type="submit" value="Valider" />
<br/>
<br/>
<?php if (isset($_POST['pseudo']))
{ echo Votre pseudo est $_POST['pseudo']; }
else { echo "Veuillez entrer un pseudo svp !"; } ?>
Le soucis se situe sur cette partie : { echo Votre pseudo est $_POST['pseudo']; }
Plus précisement le "['pseudo']"
Merci d'avance.
Tu as oublié les guillemets
{ echo "Votre pseudo est " . $_POST['pseudo']; }
Merci beaucoup !
J'avais essayé avec les guillemets mais je les avais mal placé et j'avais pas mis le point :p
Rebonsoir,
J'ai fais mon formulaire, j'en fais donc une requête à la base de donnée afin de stocker ce formulaire (je veux écrire sur la bdd).
Malheureusement le script suivant ne fonctionne pas :
<?php $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->execute(array(
'pseudo' => $_POST['pseudo'],
'niveau' => $_POST['niveau'],
'nbrevictoires' => $_POST['nbvic'],
'elo' => $_POST['elo'],
'age' => $_POST['age'],
'ad' => $_POST['ad'],
'support' => $_POST['support'],
'ap' => $_POST['ap'],
'solotop' => $_POST['solotop'],
'jungle' => $_POST['jungle'],
'any' => $_POST['any'],
'fr' => $_POST['fr'],
'gb' => $_POST['gb'],
'de' => $_POST['de'],
'es' => $_POST['es'],
'ru' => $_POST['ru'],
'pl' => $_POST['pl'],
'br' => $_POST['br'],
'jp' => $_POST['jp'],
'description' => $_POST['description']
));
echo 'Le jeu a bien été ajouté !';
?>
J'ai les erreurs suivantes :
( ! ) SCREAM: Error suppression ignored for
( ! ) Notice: Undefined variable: bdd in C:\wamp2\www\websiteDeathRecap\cible.php on line 1
Call Stack
1 0.0005 690752 {main}( ) ..\cible.php:0
( ! ) SCREAM: Error suppression ignored for
( ! ) Fatal error: Call to a member function prepare() on a non-object in C:\wamp2\www\websiteDeathRecap\cible.php on line 1
Call Stack
1 0.0005 690752 {main}( ) ..\cible.php:0
Pouvez vous m'aider ?
Merci d'avance.
$bdd serait pas null par hasard ? ![]()
Euh si comment on l'a défini ? :D
Bon j'ai réussi en fait !
Maintenant j'ai une autre erreur :
( ! ) Parse error: syntax error, unexpected '<' in C:\wamp2\www\websiteDeathRecap\cible.php on line 12
Je vais analyser ça.
la ligne 12 :
<?php $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)');
Si t'as déjà un <?php au début du document, vire celui de la ligne 12 ![]()
ah ah j'suis vraiment tête en l'air !
Merci beaucoup tout va bien pour le moment vous êtes trop fort ![]()
J'ai rajouté ce code afin de mettre "true" pour les cases cochés et "false" pour les décochés :
if (isset($_POST['ad']))
{ echo $_POST['ad'] = true; }
else { $_POST['ad'] = false; }
if (isset($_POST['support']))
{ echo $_POST['support'] = true; }
else { $_POST['support'] = false; }
if (isset($_POST['ap']))
{ echo $_POST['ap'] = true; }
else { $_POST['ap'] = false; }
if (isset($_POST['solotop']))
{ echo $_POST['solotop'] = true; }
else { $_POST['solotop'] = false; }
if (isset($_POST['jungle']))
{ echo $_POST['jungle'] = true; }
else { $_POST['jungle'] = false; }
if (isset($_POST['any']))
{ echo $_POST['any'] = true; }
else { $_POST['any'] = false; }
if (isset($_POST['fr']))
{ echo $_POST['fr'] = true; }
else { $_POST['fr'] = false; }
if (isset($_POST['fr']))
{ echo $_POST['fr'] = true; }
else { $_POST['fr'] = false; }
if (isset($_POST['gb']))
{ echo $_POST['gb'] = true; }
else { $_POST['gb'] = false; }
if (isset($_POST['de']))
{ echo $_POST['de'] = true; }
else { $_POST['de'] = false; }
if (isset($_POST['es']))
{ echo $_POST['es'] = true; }
else { $_POST['es'] = false; }
if (isset($_POST['ru']))
{ echo $_POST['ru'] = true; }
else { $_POST['ru'] = false; }
if (isset($_POST['pl']))
{ echo $_POST['pl'] = true; }
else { $_POST['pl'] = false; }
if (isset($_POST['br']))
{ echo $_POST['br'] = true; }
else { $_POST['br'] = false; }
if (isset($_POST['jp']))
{ echo $_POST['jp'] = true; }
else { $_POST['jp'] = false; }
Le résultat fonctionne mais j'ai des 1 qui apparaissent quand c'est coché donc quand c'est sur true.
J'en ai 1+nombre de "true".
Comment les masquer ?
En fait rien ne fonctionne, ma requête ne rajoute aucune entrée! Pourtant je n'ai absolument aucun message d'erreur.
Voici le code :
<?php
if (isset($_POST['ad']))
{ echo $_POST['ad'] = true; }
else { $_POST['ad'] = false; }
if (isset($_POST['support']))
{ echo $_POST['support'] = true; }
else { $_POST['support'] = false; }
if (isset($_POST['ap']))
{ echo $_POST['ap'] = true; }
else { $_POST['ap'] = false; }
if (isset($_POST['solotop']))
{ echo $_POST['solotop'] = true; }
else { $_POST['solotop'] = false; }
if (isset($_POST['jungle']))
{ echo $_POST['jungle'] = true; }
else { $_POST['jungle'] = false; }
if (isset($_POST['any']))
{ echo $_POST['any'] = true; }
else { $_POST['any'] = false; }
if (isset($_POST['fr']))
{ echo $_POST['fr'] = true; }
else { $_POST['fr'] = false; }
if (isset($_POST['fr']))
{ echo $_POST['fr'] = true; }
else { $_POST['fr'] = false; }
if (isset($_POST['gb']))
{ echo $_POST['gb'] = true; }
else { $_POST['gb'] = false; }
if (isset($_POST['de']))
{ echo $_POST['de'] = true; }
else { $_POST['de'] = false; }
if (isset($_POST['es']))
{ echo $_POST['es'] = true; }
else { $_POST['es'] = false; }
if (isset($_POST['ru']))
{ echo $_POST['ru'] = true; }
else { $_POST['ru'] = false; }
if (isset($_POST['pl']))
{ echo $_POST['pl'] = true; }
else { $_POST['pl'] = false; }
if (isset($_POST['br']))
{ echo $_POST['br'] = true; }
else { $_POST['br'] = false; }
if (isset($_POST['jp']))
{ echo $_POST['jp'] = true; }
else { $_POST['jp'] = false; }
try
{
$bdd = new PDO('mysql:host=localhost;dbname=deathrecapbdd', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$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->execute(array(
'pseudo' => $_POST['pseudo'],
'niveau' => $_POST['niveau'],
'nbrevictoires' => $_POST['nbvic'],
'elo' => $_POST['elo'],
'age' => $_POST['age'],
'ad' => $_POST['ad'],
'support' => $_POST['support'],
'ap' => $_POST['ap'],
'solotop' => $_POST['solotop'],
'jungle' => $_POST['jungle'],
'any' => $_POST['any'],
'fr' => $_POST['fr'],
'gb' => $_POST['gb'],
'de' => $_POST['de'],
'es' => $_POST['es'],
'ru' => $_POST['ru'],
'pl' => $_POST['pl'],
'br' => $_POST['br'],
'jp' => $_POST['jp'],
'description' => $_POST['desires']
));
echo 'Le joueur a bien été ajouté !';
?>
Que dois-je faire je suis vraiment perdu là ? :/
Voici ma base de donnée si ça peut vous aider :

Merci de ta réponse, il faut dire que j'apprends sur le tas j'ai jamais eu de formation donc je fais pas mal d'erreurs ^^'
Pour le côté moche j'ai corrigé voici le code plus propre :
<?php
if (isset($_POST['ad']))
$_POST['ad'] = true;
else $_POST['ad'] = false;
if (isset($_POST['support']))
$_POST['support'] = true;
else $_POST['support'] = false;
if (isset($_POST['ap']))
$_POST['ap'] = true;
else $_POST['ap'] = false;
if (isset($_POST['solotop']))
$_POST['solotop'] = true;
else $_POST['solotop'] = false;
if (isset($_POST['jungle']))
$_POST['jungle'] = true;
else $_POST['jungle'] = false;
if (isset($_POST['any']))
$_POST['any'] = true;
else $_POST['any'] = false;
if (isset($_POST['fr']))
$_POST['fr'] = true;
else $_POST['fr'] = false;
if (isset($_POST['fr']))
$_POST['fr'] = true;
else $_POST['fr'] = false;
if (isset($_POST['gb']))
$_POST['gb'] = true;
else $_POST['gb'] = false;
if (isset($_POST['de']))
$_POST['de'] = true;
else $_POST['de'] = false;
if (isset($_POST['es']))
$_POST['es'] = true;
else $_POST['es'] = false;
if (isset($_POST['ru']))
$_POST['ru'] = true;
else $_POST['ru'] = false;
if (isset($_POST['pl']))
$_POST['pl'] = true;
else $_POST['pl'] = false;
if (isset($_POST['br']))
$_POST['br'] = true;
else $_POST['br'] = false;
if (isset($_POST['jp']))
$_POST['jp'] = true;
else $_POST['jp'] = false;
try
{
$bdd = new PDO('mysql:host=localhost;dbname=deathrecapbdd', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$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->execute(array(
'pseudo' => $_POST['pseudo'],
'niveau' => $_POST['niveau'],
'nbrevictoires' => $_POST['nbvic'],
'elo' => $_POST['elo'],
'age' => $_POST['age'],
'ad' => $_POST['ad'],
'support' => $_POST['support'],
'ap' => $_POST['ap'],
'solotop' => $_POST['solotop'],
'jungle' => $_POST['jungle'],
'any' => $_POST['any'],
'fr' => $_POST['fr'],
'gb' => $_POST['gb'],
'de' => $_POST['de'],
'es' => $_POST['es'],
'ru' => $_POST['ru'],
'pl' => $_POST['pl'],
'br' => $_POST['br'],
'jp' => $_POST['jp'],
'description' => $_POST['desires']
));
echo 'Le joueur a bien été ajouté !';
?>
Pour l'insertion, j'ai corrigé les champs en booléen :
Sinon j'ai du mal à comprendre ta deuxième solution. Pourrais-tu m'éclaircir ?
J'essaye en vain de trouver sur google.
Je réponds à sa place.
Voici une requête préparée avec bindvalue. Ca te permet de spécifier le type de la donnée que tu envoies.
$resultats = $bdd->prepare("INSERT INTO personne(prenomP,ageP) VALUES (:prenom, :age)");
$resultats->bindValue(':prenom', $_POST['prenom'], PDO::PARAM_STR);
$resultats->bindValue(':age', $_POST['age'], PDO::PARAM_INT);
$resultats->execute();
Sinon ta solution de case à cocher est horrible. On fait jamais une multitude de if comme ça .. c'est illisible et inmaintenable.
Tu peux pas mettre tout dans un array du style :
$var_tab = array('ad','support','ap','solotop',...);
Et ensuite boucler sur ton tableau
for($i=0;$i<sizeof($var_tab);$i++)
{
if (isset($_POST['$var_tab[$i]']))
$_POST['$var_tab[$i]'] = true;
else
$_POST['$var_tab[$i]'] = false;
}
Ca à l'avantage de rajouter autant de case à cocher que tu veux, et juste rajouter une valeur dans ton tableau, sous ajouter 3 lignes à chaque fois.
J'ai corrigé ton code, voici un lien :
http://pastebin.com/PCSLeTZV
Vérifie juste les type STR et INT pour la requêtes, car je connais pas tous les types de tes champs.
Merci beaucoup d'avoir pris du temps pour moi
Malheureusement le début du code ne fonctionne pas :
J'ai l'erreur suivante :
( ! ) Notice: Undefined index: ad in C:\wamp2\www\websiteDeathRecap\cible.php on line 22
Pour toutes les cases que je n'ai pas coché.
Tu affectes true et false, et tu as tes champs en 'int'.
=> PHP ne fait pas de magie et ne transforme pas 0 en false et 1 en true
Au final, tu vérifie seulement si le POST existe, mais (je me trompe peut-être sur ce coup), tu devrais vérifier que le POST est bien égal à true. Si c'est le cas alors tu affectes 1. Sinon ca existe pas, alors tu affectes 0.
http://pastebin.com/hv6U4rZA
Oups une autre boulette. Il faut enlever les quotes autour de $var_tab en début de code.
http://pastebin.com/UNsDinbm
Merci je n'ai pas d'erreur cette fois-ci
Mais encore le même soucis !
Pas de donnée crée dans ma table :/
J'ai du mal à comprendre pourquoi le code fonctionne et au final il n'y a rien qui ressort :s
Fait un echo de ton error dans le catch :
echo 'Erreur : '.$e->getMessage();
Après fait un var_dump($_POST) pour vérifier que tes POST récupèrent bien quelque chose. Met le juste après ta boucle par exemple.
Après, copie-colle le code de ta requête (juste la partie insert) dans phpmyadmin, et remplace les valeurs par celle affichées par le var_dump.
Faut commencer à débugguer dans ces cas là ...