Bonjour à tous !
Voilà, j'ai un petit problème (qui je crois, vient d'une requête SQL) assez embêtant.
Je suis sur Xampp, en localhost, ma version de PHP est la 5.4, enfin je crois, et donc lorsque je fais une certaine requête (je vous mettrai le code après), j'obtiens cette erreur :
[cite]
Notice: Array to string conversion in C:\xampp\htdocs\php\inscription.php on line 36
[/cite]
Voici mon code :
<?php
include("../config_base.php");
if(isset($_POST)){
if(!empty($_POST"pseudo"])
&& !empty($_POST"pass"])
&& !empty($_POST"repass"])
&& !empty($_POST"email"])){
if($_POST"pass"] == $_POST"repass"]){
$pseudo = $_POST"pseudo"];
$sql = "SELECT id FROM users WHERE pseudo='$pseudo'";
$req = mysql_query($sql);
$verification = mysql_num_rows($req);
if($verification < 1){
$email = $_POST"email"];
$sql = "SELECT id FROM users WHERE email='$email'";
$req = mysql_query($sql);
$verification2 = mysql_num_rows($req);
if($verification2 < 1){
/* Tout est bon ! */
$pass = $_POST"pass"];
$avatar_default = "/img/icons/image26.png";
$sitename = mysql_fetch_assoc(mysql_query("SELECT site_titre FROM site_config"));
$sql = "INSERT INTO users ('pseudo','pass','email','avatar','rank','jetons','mission','siteweb') VALUES ('$pseudo','$pass','$email','$avatar_default','1','10','Bienvenue sur $sitename !','0')";
$req = mysql_query($sql);
session_start();
$sql2 = "SELECT * FROM users WHERE pseudo='$pseudo'";
$req2 = mysql_query($sql2) or die("GRAVE, GRAVE, GRAVE ERREUR DE MA PART !".mysql_error()."");
$data = mysql_fetch_assoc($req2);
$_SESSION"id"] = $data"id"];
$_SESSION"pseudo"] = $data"pseudo"];
$_SESSION"pass"] = $data"pass"];
$_SESSION"email"] = $data"email"];
$_SESSION"avatar"] = $data"avatar"];
$_SESSION"rank"] = $data"rank"];
$_SESSION"mission"] = $data"mission"];
$_SESSION"siteweb"] = $data"siteweb"];
} else {
header("Location: /?error=5");
}
} else {
header("Location: /?error=4");
}
} else {
header("Location: /?error=6");
}
} else {
header("Location: /?error=3");
}
} else {
header("Location: /");
}
?>
Je précise, parce-que c'est toujours bien de le faire, ceci est un traitement de formulaire d'inscription ^^
J'attends vos réponses.
Cordialement,
Myloit
Problème Résolu !
Voilà d'où venait l'erreur : le $sitename était donc un
mysql_fetch_assoc
, mais du coup je devais lui préciser que l'information que je voulais dans la table site_config était site_titre :
...],'Bienvenue sur {$sitename"site_sitre"]}',...]
Sujet résolu :)
Salut,
Lorsque tu fais
$sitename = mysql_fetch_assoc(mysql_query("SELECT site_titre FROM site_config"));
Tu récupères les données sous forme de tableau associatif, ce qui revient à déclarer ton tableau de la manière suivante :
$sitename = array(0 => 'Le nom de ton site');
Donc pour récupérer cette valeur, tu dois faire
'Bienvenue sur '.$sitename[0].' !'
au lieu de
'Bienvenue sur $sitename !'
Et comme l'a dit Kareylo, attention à la concaténation (ou au doubles quotes).
Du coup ta requête l.36 devra ressembler à ça
$sql = "INSERT INTO users ('pseudo','pass','email','avatar','rank','jetons','mission','siteweb') VALUES('$pseudo','$pass','$email','$avatar_default','1','10',"Bienvenue sur $sitename[0] !",'0')";
0 étant normalement le premier index du tableau.
Normalement ça devrait fonctionner.
Si ça ne fonctionne pas, donnes nous le résultat de ton tableau en faisant:
var_dump($sitename);
Juste après ta requête, toujours à la l.36
Tu as essayé de faire une conversion d'un tableau vers une chaîne de caractère. J'ai été doublé par Natà ^^
Bonsoir essaye:
<?php
include("../config_base.php");
if(isset($_POST)){
if(!empty($_POST"pseudo"])
&& !empty($_POST"pass"])
&& !empty($_POST"repass"])
&& !empty($_POST"email"])){
if($_POST"pass"] == $_POST"repass"]){
$pseudo = $_POST"pseudo"];
$sql = "SELECT id FROM users WHERE pseudo='$pseudo'";
$req = mysql_query($sql);
$verification = mysql_num_rows($req);
if($verification < 1){
$email = $_POST"email"];
$sql = "SELECT id FROM users WHERE email='$email'";
$req = mysql_query($sql);
$verification2 = mysql_num_rows($req);
if($verification2 < 1){
/* Tout est bon ! */
$pass = $_POST"pass"];
$avatar_default = "/img/icons/image26.png";
$sitename = mysql_fetch_assoc(mysql_query("SELECT site_titre FROM site_config"));
$welcome_message = "Bienvenue sur $sitename !";
$sql = "INSERT INTO users (pseudo, pass, email, avatar, rank, jetons, mission, siteweb) VALUES('".$pseudo."', '".$pass."', '".$email."', '".$avatar_default."', '1', '10', '".$welcome_message."', '0')";
$req = mysql_query($sql);
session_start();
$sql2 = "SELECT * FROM users WHERE pseudo='$pseudo'";
$req2 = mysql_query($sql2) or die("GRAVE, GRAVE, GRAVE ERREUR DE MA PART !".mysql_error()."");
$data = mysql_fetch_assoc($req2);
$_SESSION"id"] = $data"id"];
$_SESSION"pseudo"] = $data"pseudo"];
$_SESSION"pass"] = $data"pass"];
$_SESSION"email"] = $data"email"];
$_SESSION"avatar"] = $data"avatar"];
$_SESSION"rank"] = $data"rank"];
$_SESSION"mission"] = $data"mission"];
$_SESSION"siteweb"] = $data"siteweb"];
} else {
header("Location: /?error=5");
}
} else {
header("Location: /?error=4");
}
} else {
header("Location: /?error=6");
}
} else {
header("Location: /?error=3");
}
} else {
header("Location: /");
}
?>
Merci à tous pour vos réponses !
Je vais voir ce que ça donne, et je validerai la réponse qui m'a aidé :)
F0rZ3r0, le code que tu m'as donné affiche exactement la même chose qu'avant
EDIT : Désolé, je m'étais trompé de code, j'avais modifié celui de l'inscription...
Je vais réessayer
RE-EDIT : Ah bah non, ça fait la même chose en fait...
J'essaye avec le code de Natà.
Re-bonjour !
J'ai essayé avec le code de Natà, et ça me donne ceci :
Parse error: syntax error, unexpected 'Bienvenue' (T_STRING) in C:\xampp\htdocs\php\inscription.php on line 36
Voici mon code actuel :
<?php
include("../config_base.php");
if(isset($_POST)){
if(!empty($_POST"pseudo"])
&& !empty($_POST"pass"])
&& !empty($_POST"repass"])
&& !empty($_POST"email"])){
if($_POST"pass"] == $_POST"repass"]){
$pseudo = $_POST"pseudo"];
$sql = "SELECT id FROM users WHERE pseudo='$pseudo'";
$req = mysql_query($sql);
$verification = mysql_num_rows($req);
if($verification < 1){
$email = $_POST"email"];
$sql = "SELECT id FROM users WHERE email='$email'";
$req = mysql_query($sql);
$verification2 = mysql_num_rows($req);
if($verification2 < 1){
/* Tout est bon ! */
$pass = $_POST"pass"];
$avatar_default = "/img/icons/image26.png";
$sitename = mysql_fetch_assoc(mysql_query("SELECT site_titre FROM site_config"));
$sql = "INSERT INTO users ('pseudo','pass','email','avatar','rank','jetons','mission','siteweb') VALUES('$pseudo','$pass','$email','$avatar_default','1','10','Bienvenue sur $sitename[0] !','0')";
$req = mysql_query($sql) or die("GRAVE, GRAVE, GRAVE ERREUR DE MA PART ! à la ligne 37".mysql_error()."");
session_start();
$sql2 = "SELECT * FROM users WHERE pseudo='$pseudo'";
$req2 = mysql_query($sql2) or die("GRAVE, GRAVE, GRAVE ERREUR DE MA PART !".mysql_error()."");
$data = mysql_fetch_assoc($req2);
$_SESSION"id"] = $data"id"];
$_SESSION"pseudo"] = $data"pseudo"];
$_SESSION"pass"] = $data"pass"];
$_SESSION"email"] = $data"email"];
$_SESSION"avatar"] = $data"avatar"];
$_SESSION"rank"] = $data"rank"];
$_SESSION"mission"] = $data"mission"];
$_SESSION"siteweb"] = $data"siteweb"];
} else {
header("Location: /?error=5");
}
} else {
header("Location: /?error=4");
}
} else {
header("Location: /?error=6");
}
} else {
header("Location: /?error=3");
}
} else {
header("Location: /");
}
?>
EDIT : J'ai trouvé comment arranger l'une des erreurs : il y avait des guillemets dans la ligne 36 ! J'ai corrigé le code.
Maintenant, je tombe sur ce message (j'ai mis un 'or die' après l’exécution de la requête de la ligne 36) :
Notice: Undefined offset: 0 in C:\xampp\htdocs\php\inscription.php on line 36
C'est toujours le $sitename qui pose problème l'index n'est pas définis comme dit:
Essayes de remplacer
$sitename[0]
par
$sitename'0']
Sinon fait un
print_r($sitename);
et postes-nous le résultat.