Page 1 sur 1
édition données via base de donnée
Posté : 18 déc. 2011, 12:49
par bostak
Bonjour,
J'ai un petit problème que je n'arrive pas à régler, tout d'abord voilà mon code :
index.php
Code : Tout sélectionner
elseif ($_GET["page"] == "update")
{
include("pages/takeId.php");
$iduser = takeId($_SESSION["login"]);
include("pages/editBillet.php");
$titre = displayBillet($iduser);
$content = displayBilletContent($iduser);
include("views/vueEditBillet.php");
}
editBillet.php
Code : Tout sélectionner
<?php
function displayBillet($iduser)
{
$requete = mysql_query("SELECT title FROM billets WHERE id_users='".$iduser."'");
while($row=mysql_fetch_assoc($requete))
{
$titre = $row["title"];
}
return($titre);
}
function displayBilletContent($iduser)
{
$requete = mysql_query("SELECT content FROM billets WHERE id_users='".$iduser."'");
while($row=mysql_fetch_assoc($requete))
{
$content = $row["content"];
}
return($content);
}
vueEditBillet.php
Code : Tout sélectionner
<table>
<tr>
<td>
Titre :
</td>
<td>
<?php
echo'<input type="text" name="title" value="'.$titre.'" />';
?>
</td>
</tr>
<tr>
<td>
<?php
echo'<textarea name="content" value="'.$content.'"> </textarea>';
?>
</td>
</tr>
<tr>
<td>
<input type="submit" name="editer" value="editer" />
</td>
</tr>
</table>
Lorsque je veux éditer un billet, je récupère de ma BDD le titre et le contenu du billet, j'arrive bien à récupérer le titre du billet mais impossible de récupérer le contenu et je ne vois pas pourquoi, j'ai fait la même procédure que pour récupérer le titre. Autre petit soucis aussi, je voudrais éditer le billet sur lequel je clic, parce que la il me prend le premier qui vient, parce que je ne lui précise pas le "idbillets" qu'il y a à éditer et la je ne sais pas non plus comment procéder. Pourriez vous m'aider ?
Cordialement,
Re: édition données via base de donnée
Posté : 18 déc. 2011, 12:51
par xTG
Cela n'a pas de sens ce que tu fais, il vaudrait mieux récupérer le tout en une requête et renvoyer un tableau...
Ou si tu veux vraiment utiliser une fonction pour chaque élément utiliser de la POO et stocker le tout dans un objet.
Re: édition données via base de donnée
Posté : 18 déc. 2011, 13:01
par bostak
petit rectification alors :
editBillet.php
Code : Tout sélectionner
<?php
function displayBillet($iduser)
{
$requete = mysql_query("SELECT title, content FROM billets WHERE id_users='".$iduser."'");
while($row=mysql_fetch_assoc($requete))
{
$titre = $row["title"];
$content = $row["content"];
}
return($titre);
return($content);
}
et donc dans index.php
Code : Tout sélectionner
elseif ($_GET["page"] == "update")
{
include("pages/takeId.php");
$iduser = takeId($_SESSION["login"]);
include("pages/editBillet.php");
$titre = displayBillet($iduser);
$content = displayBillet($iduser);
include("views/vueEditBillet.php");
}
Mais mon problème persiste quand même.
Cordialement,
Re: édition données via base de donnée
Posté : 18 déc. 2011, 13:44
par xTG
Une fonction ne peut retourner qu'une seule variable.
Mais tu peux par contre renvoyer un tableau.

Re: édition données via base de donnée
Posté : 18 déc. 2011, 14:28
par bostak
et si je fais comme ceci :
Code : Tout sélectionner
function displayBillet($iduser)
{
$requete = mysql_query("SELECT title, content FROM billets WHERE id_users='".$iduser."'");
while($row=mysql_fetch_array($requete))
{
$titre = $row["title"];
$content = $row["content"];
}
return($titre);
return($content);
}
Par contre je n'ai toujours pas mon "content" qui s'affiche.
Cordialement,
Re: édition données via base de donnée
Posté : 18 déc. 2011, 14:38
par Calimero
L'éxécution de la fonction s'arrête au premier return() rencontré. Le deuxième est tout simplement ignoré. Comme xTG te l'a précisé : une fonction ne peut retourner qu'une seule variable...
Si tu veux retourner à la fois le titre et le contenu depuis cette fonction, il va falloir passer un tableau en valeur de retour contenant les deux valeurs, par exemple :
function displayBillet($iduser){
$requete = mysql_query("SELECT title, content FROM billets WHERE id_users='".$iduser."'");
while($row=mysql_fetch_array($requete))
{
$titre = $row["title"];
$content = $row["content"];
}
return(array('titre'=>$titre, 'content'=>$content);
}
$tableau=displayBillet(1);
echo $tableau['titre'];
Attention également à la requête SQL dans ta fonction, qui peut ramener 0, 1 ou plusieurs billets suivant le contenu de la table (hors le reste de la fonction ne gère que le cas où le nombre de billets pour l'utilisateur est 1).
Re: édition données via base de donnée
Posté : 18 déc. 2011, 15:00
par bostak
ok d'accord je comprend mieux merci de votre réponse. Par contre je ne comprend pas trop ceci
Je n'ai pas bien compris l'explication.
Cordialement,
Re: édition données via base de donnée
Posté : 18 déc. 2011, 15:03
par Calimero
ok d'accord je comprend mieux merci de votre réponse. Par contre je ne comprend pas trop ceci
Je n'ai pas bien compris l'explication.
Cordialement,
C'est un petit exemple d'utilisation de la fonction modifiée pour retourner un tableau.
La première ligne affecte le tableau retourné à une variable $tableau, la seconde fait une lecture et un affichage de la valeur accessible depuis l'index 'titre' du tableau.
Re: édition données via base de donnée
Posté : 18 déc. 2011, 15:54
par bostak
ok d'accord j'avais compris cela mais je ne comprend pas bien le 1 en paramètre de la fonction displayBillet
Re: édition données via base de donnée
Posté : 18 déc. 2011, 16:00
par Calimero
ok d'accord j'avais compris cela mais je ne comprend pas bien le 1 en paramètre de la fonction displayBillet
Ta fonction est écrite pour accepter un iduser en paramètre (pour injection dans la requête SQL), alors j'ai simplement mis un 1 pour l'exemple.
Re: édition données via base de donnée
Posté : 18 déc. 2011, 20:15
par bostak
merci j'ai compris maintenant, mais par contre mon titre s'affiche bien mais j'ai toujours pas mon "content" qui s'affiche.
Cordialement,
Re: édition données via base de donnée
Posté : 18 déc. 2011, 21:26
par xTG
Montres nous le code modifié que tu utilises.
Re: édition données via base de donnée
Posté : 18 déc. 2011, 22:04
par bostak
Voilà le code modifié :
index.php
Code : Tout sélectionner
elseif ($_GET["page"] == "update")
{
include("pages/takeId.php");
$iduser = takeId($_SESSION["login"]);
include("pages/editBillet.php");
$tableau=displayBillet($iduser);
include("views/vueEditBillet.php");
}
editBillet.php
Code : Tout sélectionner
<?php
function displayBillet($iduser)
{
$requete = mysql_query("SELECT title, content FROM billets WHERE id_users='".$iduser."'");
while($row=mysql_fetch_array($requete))
{
$titre = $row["title"];
$content = $row["content"];
}
return(array('titre'=>$titre, 'content'=>$content));
}
vueEditBillet.php
Code : Tout sélectionner
<table>
<tr>
<td>
Titre :
</td>
<td>
<?php
echo'<input type="text" name="title" value="'.$tableau['titre'].'" />';
?>
</td>
</tr>
<tr>
<td>
<?php
echo'<textarea name="content" value="'.$tableau['content'].'"> </textarea>';
?>
</td>
</tr>
<tr>
<td>
<input type="submit" name="editer" value="editer" />
</td>
</tr>
</table>
Cordialement,
Re: édition données via base de donnée
Posté : 18 déc. 2011, 23:50
par Calimero
vueEditBillet.php
<tr>
<td>
<?php
echo'<textarea name="content" value="'.$tableau['content'].'"> </textarea>';
?>
</td>
</tr>
Un textarea a un comportement un peu différent des autres champs de formulaire, comme l'input text du titre. Il n'a pas d'attribut
value !
Le contenu du textarea doit être écrit simplement entre les balises :
<textarea name="quelquechose">Comme ceci</textarea>
Re: édition données via base de donnée
Posté : 19 déc. 2011, 00:41
par bostak
merci beaucoup de votre aide, comme d'habitude je peux compter sur vous, mille merci.
Cordialement,