[RESOLU] Problème d'affichage de news PHP

Eléphant du PHP | 386 Messages

21 juin 2012, 01:22

Bonjour,

J'ai un script PHP de news, et normalement quand un membre poste un article, il y a le nom et le prénom de celui qui l'a posté.
Donc je me connecte, c'est bien moi qui l'a posté, mais quand je connecte un autre membre, c'est son nom et son prénom à la place du miens.

Je pense que si le cookie "pseudo" existe, alors d'après la requête dans home.php, le nom et le prénom devrait être celui qui se connecte.
Mais moi je veux que ce soit celui qui a posté l'article.

PS : Ma base de donnée "wa_news" n'est pas la même que celle de mon espace membre, l'erreur viens peut être de là ?

Vous comprendrez mieux avec les codes :

home.php :
<?php
session_start();
require('include/connect.php');

if (!isset($_COOKIE['pseudo']))
{
	$reponse = '<div class="bloc_03">
					<h1 class="separate"><span class="lettrine">E</span>rreur d\'authentification !</h1>
					<p style="color:#ff0000;">Vous n\'êtes pas autorisé à accéder à cette page.</p>
				</div>';
}
$sql = connect_sql();
$pseudo_membre = $_SESSION['pseudo'];
$requete =  mysql_query("SELECT * FROM wa_communaute WHERE `pseudo`='$pseudo_membre'");
$result = mysql_fetch_array ($requete);

$id = $result['id'];
$pseudo = $result['pseudo'];
$nom = $result['nom'];
$prenom = $result['prenom'];
$mail = $result['mail'];
$sexe = $result['sexe'];

$adresse_image = $sexe ==1 ? 'images/upload/homme.png' : 'images/upload/femme.png';
$filename = 'images/upload/'.$id.'.png';vc
?>
[...]
<?php include('bloc-center.php'); ?>
[...]

bloc-center.php :
				<?php if(isset($_COOKIE["pseudo"])) { ?>
				<?php 
				$db_link = 	mysql_connect("...", "...", "...");
				mysql_select_db("...", $db_link);
				
				if(isset($_POST)) {
					foreach($_POST as $k => $v) {
						$_POST[$k] = trim(htmlspecialchars($v)) ;
					}
				}
				if(isset($_GET)) {
					foreach($_GET as $k => $v) {
						$_GET[$k] = trim(htmlspecialchars($v)) ;
					}
				}
				if(isset($_POST['send'])) {
					if($_POST['send'] == 'new') {
					$sql = "INSERT INTO wa_news (auteur,date,titre,news) values ('".$_POST['auteur']."',now(),'".$_POST['titre']."','".$_POST['news']."')";
					}
					elseif($_POST['send'] == 'update') {
					$sql = 'update wa_news set titre = "'.$_POST['titre'].'", auteur =
					"'.$_POST['auteur'].'", news = "'.$_POST['news'].'", date =
					"'.$_POST['date'].'" WHERE newsId = "'.$_POST['newsId'].'"';
					}
					mysql_query($sql,$db_link) or die(mysql_error());
				}
				if(isset($_GET['delete']) and is_numeric($_GET['delete'])) {
				   mysql_query("delete from wa_news where newsId = \"".$_GET['delete']."\"",$db_link);
				}
				if(isset($_GET['edit']) and is_numeric($_GET['edit'])) {
					$Id = $_GET['edit'] ;
					$sql = 'SELECT * FROM wa_news WHERE newsId="'.$newsId.'" LIMIT 1' ;
					$rc = mysql_query($sql,$db_link);
					while($data = mysql_fetch_array($rc)) { ?>
						<form action="admin.php" method="post">
							<strong>Modification d\'une news :</strong><br /><br />
							Titre<br />
							<input type="text" name="titre" maxlength="120"
							value="<?php echo htmlentities($data['titre']); ?>"/><br />
							Auteur<br />
							<input type="text" name="auteur" maxlenght="60"
							value="<?php echo htmlentities($data['auteur']); ?>" /><br />
							Date de la News<br />
							<input type="text" name="date" size="10" value="<?php echo $data['date']; ?>" />
							News (sans html)<br />
							<textarea name="news" cols="40"
							rows="6"><?php echo htmlentities($data['news']); ?></textarea>
							<br />
							<input type="submit" value="Valider" />
							<input type="hidden" name="newsId" value="<?php echo $_GET['edit']; ?>" />
							<input type="hidden" name="send" value="update" />
						</form>
					<?php }
				}
				else { ?>
					<div class="bloc_03">
						<h1 class="separate">Poster un article</h1>
						<form action="home.php" method="post">
							<input type="text" name="titre" maxlength="120" />
							<textarea name="news" cols="40" rows="6"></textarea><br />
							<input type="submit" value="Valider" />
							<input type="hidden" name="send" value="new" />
						</form>
					</div>
					<?php
					$sql = 'SELECT * FROM wa_news ORDER BY newsId DESC' ;
					$rc = mysql_query($sql,$db_link);
					while($data = mysql_fetch_array($rc)) { 
					$data['date'] = date('d/m/Y');
					?>
					<div class="bloc_03">
						<h1 class="separate"><?php echo $data['titre']; ?></h1>
						Le <?php echo $data['date']; ?> par <?php echo $prenom; ?> <?php echo $nom; ?>
						<br />=> <a href="?delete=<?php echo $data['newsId']; ?>">Supprimer</a> - 
						<a href="?edit=<?php echo $data['newsId']; ?>">Editer</a>
					</div>
					<?php }
				}
				mysql_close();
				?>
				<?php } else { ?>
				<div class="bloc_03">
					<h1 class="separate">Actualités à la Une</h1>
				</div>
				<?php } ?>
Merci d'avance :)

ViPHP
xTG
ViPHP | 7331 Messages

21 juin 2012, 09:38

<?php echo $prenom; ?> <?php echo $nom; ?>
Et pourquoi ne pas utiliser les vrai valeurs ? A savoir ce qui se trouve retourné dans la requête : $data ? :D

Eléphant du PHP | 386 Messages

21 juin 2012, 12:34

Tu veux dire en mettant : <?php echo $data['prenom']; ?> <?php echo $data['nom']; ?> ?
Ca va pas marché, il n'y a pas les champs prénom et nom dans la base de donnée wa_news
Et je préfère que ce soit le nom du membre qui poste :cry:

ViPHP
xTG
ViPHP | 7331 Messages

21 juin 2012, 13:13

Tu ne stockes donc pas l'identité de la personne qui poste ? C'est quoi la colonne auteur de ta table ?
Si tu ne la stockes pas comment veux-tu pouvoir l'afficher ?

Eléphant du PHP | 386 Messages

21 juin 2012, 13:44

Enfaite, oui il y a un champs "auteur" mais je préfère que ce soit directement de nom et le prénom qui soit automatiquement affiché.
Je préfère qu'on ai moins de champs à remplir, juste le champs "article", pas d'auteur : je préfère qu'il s'affiche automatiquement

Comment on peut faire ? :(

ViPHP
xTG
ViPHP | 7331 Messages

21 juin 2012, 14:02

Bah lors de l'enregistrement de l'article tu stockes $_COOKIE['pseudo'] dans la colonne auteur. :D
Et lors de l'affichage tu affiches la colonne auteur.

Eléphant du PHP | 386 Messages

21 juin 2012, 14:13

Euuu, tu peux me montrer avec le code que j'ai mis plus haut ^^ lol

Heureusement que t'es là, parce que y'a que toi qui me répond :)
Merci

Eléphant du PHP | 386 Messages

21 juin 2012, 14:19

Je crois que j'ai réussi, donc ça affiche bien le pseudo :) Merci,
Maintenant pour afficher le prénom et le nom, je vais créer deux autres cookies avec comme valeur le prénom et le nom, il reste plus qu'à faire ce que tu m'a dit.

Mais comment faire pour stocker $_COOKIE['prenom'] et $_COOKIE['nom'] dans la colonne auteur, parce que y'en a deux ! :wink:

ViPHP
xTG
ViPHP | 7331 Messages

21 juin 2012, 15:41

Une concaténation en PHP se fait ainsi :
$variable1 = 'hello';
$variable2 = 'world';
$affich = $variable1 . ' ' . $variable2; // concaténation aussi d'un espace
echo $affich; // hello world

Eléphant du PHP | 386 Messages

21 juin 2012, 16:37

C'est pas comme ça que j'ai fait, mais merci quand même ^^

J'ai crée deux autres cookie avec les variables $nom et $prenom
Ensuite j'ai mis $_COOKIE['nom'] et $_COOKIE['prenom'] dans la colonne "Auteur"

Et ça fonctionne :)
Résolu