Page 1 sur 1
Insertion dans une base du contenu d'une fonction
Posté : 09 août 2005, 12:27
par harry67
Bonjour,
Je voudrais insérer dans une base le contenu d'une fonction :
function choixpeaumagique()
{
$maison = array("Gryffondor","Serpentard","Serdaigle","Poufsouffle");
shuffle($maison);
return $maison[0];
}
$sql1 = "INSERT INTO membres (maison)
VALUES('choixpeaumagique()')";
$result = mysql_query($sql1)
or die ("Erreur d'insertion de données dans la base1");
Le problème, c'est que ça ne fonctionne pas, ça m'insère dans la base :
choixpeaumagique()
Comment dois-je m'y prendre?
Posté : 09 août 2005, 12:30
par Cyrano
Je ne comprends pas bien ce que tu veux insérer au juste...

Toute la fonction en format texte ? Ou bien les valeurs du tableau ? Enfin je capte pas ce que tu veux faire...

Insertion dans une base du contenu d'une fonction
Posté : 09 août 2005, 12:32
par harry67
En fait, je veux insérer la variable qui à été sélectionnée et qui provient du tableau.
Posté : 09 août 2005, 12:34
par Cyrano
Ha ben ce n'est pas le contenu de la fonction que tu veux insérer, mais le résultat obtenu de son exécution: ALors il faut correctement séparer le PHP du SQL:
{
$maison = array("Gryffondor","Serpentard","Serdaigle","Poufsouffle");
shuffle($maison);
return $maison[0];
}
$sql1 = "INSERT INTO membres (maison)
VALUES('". choixpeaumagique() ."')";
$result = mysql_query($sql1)
or die ("Erreur d'insertion de données dans la base1");
Essaye comme ça.
Insertion dans une base du contenu d'une fonction
Posté : 09 août 2005, 12:42
par harry67
Désolé, ça marche toujours pas. Voici une plus grosse partie de mon code :
function choixpeaumagique()
{
$maison = array("Gryffondor","Serpentard","Serdaigle","Poufsouffle");
shuffle($maison);
return $maison[0];
}
$message="Nous vous souhaitons bienvenue sur l'école virtuelle du Chemin de Traverse";
$sujet="Bienvenue";
$prior = "Moyenne";
$annee= 1;
$sql1 = "INSERT INTO membres (login,mp,maison,annee,web,mail)
VALUES('$_POST[pseudo]','$_POST[mpasse]','". choixpeaumagique() ."','$annee','$_POST[web]','$_POST[email]')";
$result = mysql_query($sql1)
or die ("Erreur d'insertion de données dans la base");
Posté : 09 août 2005, 12:49
par Cyrano
Ok, alors définis la maison avant la requête. Proposition de corrigé avec en plus des correction d'erreurs :
<?php
function choixpeaumagique()
{
$maison = array("Gryffondor","Serpentard","Serdaigle","Poufsouffle");
shuffle($maison);
return $maison[0];
}
$message="Nous vous souhaitons bienvenue sur l'école virtuelle du Chemin de Traverse";
$sujet="Bienvenue";
$prior = "Moyenne";
$annee= 1;
$maison = choixpeaumagique();
$sql1 = "INSERT INTO membres (login,mp,maison,annee,web,mail)
VALUES('". $_POST['pseudo'] ."','". $_POST['mpasse'] ."','". $maison ."','". $annee ."','". $_POST['web'] ."','". $_POST['email'] ."')";
$result = mysql_query($sql1)
or die ("Erreur d'insertion de données dans la base");
?>
Re: Insertion dans une base du contenu d'une fonction
Posté : 09 août 2005, 14:17
par matt_m
salut
Désolé, ça marche toujours pas. Voici une plus grosse partie de mon code :
function choixpeaumagique()
{
$maison = array("Gryffondor","Serpentard","Serdaigle","Poufsouffle");
shuffle($maison);
return $maison[0];
}
$message="Nous vous souhaitons bienvenue sur l'école virtuelle du Chemin de Traverse";
$sujet="Bienvenue";
$prior = "Moyenne";
$annee= 1;
$sql1 = "INSERT INTO membres (login,mp,maison,annee,web,mail)
VALUES('$_POST[pseudo]','$_POST[mpasse]','". choixpeaumagique() ."','$annee','$_POST[web]','$_POST[email]')";
$result = mysql_query($sql1)
or die ("Erreur d'insertion de données dans la base");
ca devrait fonctionner
c'est ta requete qui plante ou la valeur est vide?
ta fonction te retourne bien une valeur?
Posté : 09 août 2005, 14:52
par Cyrano
Tiens, rajoute donc des tests de validation :
<?php
function choixpeaumagique()
{
$maison = array("Gryffondor","Serpentard","Serdaigle","Poufsouffle");
shuffle($maison);
return $maison[0];
}
/* On commence par récupérer les valeurs du formulaire */
$pseudo = isset($_POST['pseudo']) ? $_POST['pseudo'] : "";
$mpasse = isset($_POST['mpasse']) ? $_POST['mpasse'] : "";
$web = isset($_POST['web']) ? $_POST['web'] : "";
$email = isset($_POST['email']) ? $_POST['email'] : "";
/* Si les valeurs ne sont pas vide, on insère, sinon, on ré-affiche le formulaire */
if(!empty($pseudo) && !empty($mpasse) && !empty($web) && !empty($email))
{
$message="Nous vous souhaitons bienvenue sur l'école virtuelle du Chemin de Traverse";
$sujet="Bienvenue";
$prior = "Moyenne";
$annee= 1;
$maison = choixpeaumagique();
$sql1 = "INSERT INTO membres (login,mp,maison,annee,web,mail)
VALUES('". $pseudo ."','". $mpasse ."','". $maison ."','". $annee ."','". $web ."','". $email ."')";
echo($sql1);
}
else
{
/* Il manque des éléments qui n'ont pas été complétés dans le formulaire */
// ... suite du code ré-affichant le formulaire
}
?>
Insertion dans une base du contenu d'une fonction
Posté : 09 août 2005, 14:59
par harry67
C'est bon pour ce qui est de la reqûete.
Le seul problème maintenant, c'est ma fonction mail, ça n'envoie rien :
$sujet="Inscription école virtuelle";
$from="[email protected]";
$message="Merci de votre inscription à l'école Interactive ou virtuelle si vous préférez du Chemin de Traverse!
Votre pseudo/login est : $_POST[pseudo]
Votre mot de passe est : $_POST[mpasse]
Votre maison : choixpeaumagique();
Votre compte est désormais activé, il ne vous reste plus qu'à vous connecter à l'école.
Pour pouvoir assister à vos cours, vous devez acheter du matériel sur le Chemin de Traverse, voici la liste :
Liste du matériel à avoir :
1 livre d'histoire de la magie
_Un kit de balles de Quidditch
_Une baguette magique
_Un kit de potions
et un grimoire de potions
D'autres objets vous seront demandés pour les autres cours par
la suite.
Instructions de dernière minute :
Pour vous rendre à l'école, vous devez passer par l'intermédiaire du
formulaire de connexion qui se trouve en bas à gauche de chaque
page du site ou par l'intermédiaire du mini-site qui se trouve à
cette adresse : http://hpotter.club.fr/blog/index.htm . Vous
devrez rentrer votre login/pseudo et votre mot de passe.
Une aide pour l'école est disponible dans le forum de
la grande salle.
Bonne scolaritée!";
$headers="From: $from";
mail('$_POST[email]','$sujet','$message','$headers');
D'ou vient le problème, en tout cas, cela ne vient pas du tableau $_POST[email] car j'ai testé pour voir si ce qu'il contenait était bon et ça allait.
Posté : 09 août 2005, 15:02
par mere-teresa
mail('$_POST[email]','$sujet','$message','$headers');
Que font ces apostrophes autour des variables ? 
Et sinon, pourquoi ne pas tester aussi les autres variables....
par exemple
print($_POST[email],$sujet,$message,$headers);
Posté : 09 août 2005, 15:05
par Cyrano
Hum, hum...
$_POST['email']
et non
$_POST[email]
Sinon "email" est interprété comme une constante...
Insertion dans une base du contenu d'une fonction
Posté : 09 août 2005, 15:14
par harry67
C'est bon, tout fonctionne. Merçi beaucoup!
Posté : 09 août 2005, 15:31
par matt_m
et c'etait quoi le probleme?

pense au tag resolu aussi . c'est une habitude a prendre
