édition données via base de donnée

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : édition données via base de donnée

Re: édition données via base de donnée

par bostak » 19 déc. 2011, 00:41

merci beaucoup de votre aide, comme d'habitude je peux compter sur vous, mille merci.

Cordialement,

Re: édition données via base de donnée

par Calimero » 18 déc. 2011, 23:50

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

par bostak » 18 déc. 2011, 22:04

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

par xTG » 18 déc. 2011, 21:26

Montres nous le code modifié que tu utilises.

Re: édition données via base de donnée

par bostak » 18 déc. 2011, 20:15

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

par Calimero » 18 déc. 2011, 16:00

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

par bostak » 18 déc. 2011, 15:54

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

par Calimero » 18 déc. 2011, 15:03

ok d'accord je comprend mieux merci de votre réponse. Par contre je ne comprend pas trop ceci

Code : Tout sélectionner

$tableau=displayBillet(1); echo $tableau['titre'];
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

par bostak » 18 déc. 2011, 15:00

ok d'accord je comprend mieux merci de votre réponse. Par contre je ne comprend pas trop ceci

Code : Tout sélectionner

$tableau=displayBillet(1); echo $tableau['titre'];
Je n'ai pas bien compris l'explication.

Cordialement,

Re: édition données via base de donnée

par Calimero » 18 déc. 2011, 14:38

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

par bostak » 18 déc. 2011, 14:28

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

par xTG » 18 déc. 2011, 13:44

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

par bostak » 18 déc. 2011, 13:01

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

par xTG » 18 déc. 2011, 12:51

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.

édition données via base de donnée

par bostak » 18 déc. 2011, 12:49

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,