Envoyer un id dans la base de données

Eléphanteau du PHP | 38 Messages

03 juil. 2013, 11:45

Bonjour,

Alors je vais être le plus précis possible, pour avoir des réponses les plus précises possible, donc le post risque d'être un peu long.

Je suis en train de développer un script en PHP, en me basant sur un livre, sauf que moi je veut y ajouter des fonctionnalité, je vais vous faire un descriptif de ma base de donnée ainsi que de l'architecture de mes fichiers PHP, ensuite je vous laisserez le code source qui me pose soucis, puis l'explication du problème.

Voici l'architecture de mes fichiers PHP:

On peut noter que j'ai coder de manière à peu près organiser, (merci de me dire si des amélioration peuvent-être faite, je suis débutant).

Image

Voici ensuite l'architecture de ma base SQL:

Image

Problème:

Mon soucis est le suivant, je voudrait enregistrer l'id de l'auteur et l'insérer dans le champs, "auteur_id" de ma table blagues l'orsque je poste une blague.
Afin qui je puisse identifier quel auteur à poster la blague.
A la suite je ferai bien sur un script de connexion et déconnexion.
Je ne sais pas comment m'y prendre, sachant que les champs sont déjà crée, mais en PHP je ne sais pas comment faire cela, à partir du code déjà existant.

Voici je pense les fichiers à modifier qui sont cela, ainsi que leur code sources:

Image

Code sources:

blagues.html.php:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
		"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
	<head>
		<meta http-equiv="content-type"
				content="text/html; charset=utf-8"/>
	</head>
	<body>
		<p><a href="?ajoutpub">Ajoutez votre propre pub</a></p>
		<p>Les dernières pubs postés:</p>
		<?php foreach ($blagues as $blague): ?>
			<form action="?supprblague" method="post">
				<blockquote>
					<h5>		<?php echo htmlspecialchars($blague['titre'], ENT_QUOTES,
								'UTF-8'); ?></h5>
					<p>
						<?php echo htmlspecialchars($blague['texte'], ENT_QUOTES,
								'UTF-8'); ?>
						<input type="hidden" name="id" value="<?php
								echo $blague['id']; ?>"/>
					</p>
				</blockquote>
			</form>
		<?php endforeach; ?>
	</body>
</html>
form.html.php:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
		"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
	<head>
		<title>Ajouter une pub</title>
		<meta http-equiv="content-type"
				content="text/html; charset=utf-8"/>
		<style type="text/css">
		textarea {
			display: block;
			width: 100%;
		}
		</style>
	</head>
	<body>
		<form action="?" method="post">
			<div>
				<label for="texte_blague">Saisissez votre pub :</label><br /><br />			
				Titre de la pub : <input type="text" name="titre_pub" id="titre_pub"/><br />
				<textarea id="texte_blague" name="texte_blague" rows="3" cols="40"></textarea>
			</div>
			<div><input type="submit" value="Ajouter"/></div>
		</form>
	</body>
</html>
index.php:
<?php
if (get_magic_quotes_gpc())
{
	function stripslashes_profond($valeur)
	{
		$valeur = is_array($valeur) ?
				array_map('stripslashes_profond', $valeur) :
				stripslashes($valeur);

		return $valeur;
	}

	$_POST = array_map('stripslashes_profond', $_POST);
	$_GET = array_map('stripslashes_profond', $_GET);
	$_COOKIE = array_map('stripslashes_profond', $_COOKIE);
	$_REQUEST = array_map('stripslashes_profond', $_REQUEST);
}

if (isset($_GET['ajoutpub']))
{
	include 'form.html.php';
	exit();
}
if (isset($_POST['texte_blague']))
{
	include 'bd.inc.php';

	$texte_blague = mysqli_real_escape_string($lien, $_POST['texte_blague']);
	$sql = 'INSERT INTO blagues SET
			titre_pub = "' . $titre_pub . '",
			texte_blague = "' . $texte_blague . '",
			date_blague = CURDATE()';

	if (!mysqli_query($lien, $sql))
	{
		$erreur = "Erreur dans l'ajout de la blague : " . mysqli_error($lien);
		include 'erreur.html.php';
		exit();
	}

	header('Location: .');
	exit();
}

if (isset($_GET['supprblague']))
{
	include 'bd.inc.php';
	$id = mysqli_real_escape_string($lien, $_POST['id']);
	$sql = "DELETE FROM blagues WHERE id = '$id'";
	if (!mysqli_query($lien, $sql))
	{
		$erreur = 'Erreur de suppression de la blague : ' . mysqli_error($lien);
		include 'erreur.html.php';
		exit();
	}

	header('Location: .');
	exit();
}

include 'bd.inc.php';

$resultat = mysqli_query($lien, 'SELECT id, titre_pub, texte_blague FROM blagues');
if (!$resultat)
{
	$erreur = 'Erreur de lecture des blagues : ' . mysqli_error($lien);
	include 'erreur.html.php';
	exit();
}

while ($ligne = mysqli_fetch_array($resultat))
{
	$blagues[] = array('id' => $ligne['id'],
					   'titre' => $ligne['titre_pub'],
	                   'texte' => $ligne['texte_blague']);
}

include 'blagues.html.php';
?>
Merci d'avance, je remercie également els bénévoles de ce forum pour leur aides.
Bonne journée.

Mammouth du PHP | 2278 Messages

03 juil. 2013, 12:45

moi j'ajouterais une table:
blague_auteur
id_blague
id_auteur
et zou...
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 38 Messages

03 juil. 2013, 12:58

moi j'ajouterais une table:
blague_auteur
id_blague
id_auteur
et zou...
Oui mais ensuite je ne saurais modifier tout le code par mes moyens.

Eléphant du PHP | 79 Messages

03 juil. 2013, 15:18

ton schéma n'est pas bon, désoler de te le dire :s

Si tu début en programmation, et que tu suis une formation actuellement je te conseil fortement de valider ton travail par un de tes professeurs, dans le cas ou tu est autodidacte, poste ton schéma sur un forum comme celui ci pour le valider ou avoir peut être un autre point de vu.

Voici le schéma que je ferai avec les informations que tu nous as transmises :

Image

Lien du schéma http://www.dev-systeme.fr/img/blague.mwb

Il s'explique de la manière suivante :

Un utilisateur s'enregistre sur le site et doit donné différentes informations pour la valider (mail, mots de passe, pseudo, nom, prénom). Un profil lui sera donné par WEBMASTER pour définir sont niveau d'investissement sur la plateforme. L'utilisateur participe au site en postant des blague à une date donnée, cette blague doit faire partie d'une catégorie pour pouvoir mieux les trier / répertorier.

Requête SQL pour récuperer les informations :

# tous les utilisateurs :
SELECT utilisateur.*, profil.libelle as profile 
FROM utilisateur, profil 
WHERE utilisateur.profil = profil.id ;

# un utilisateur en fonction de sont id :
SELECT utilisateur.*, profil.libelle as profile 
FROM utilisateur, profil 
WHERE utilisateur.profil = profil.id AND utilisateur.id = ? ;

# récupérer toutes les blagues :
SELECT blague.*, utilisateur.*, categorie.libelle as categorie 
FROM blague, utilisateur, categorie 
WHERE blague.categorie = categorie.id AND blague.utlisateur = utilisateur.id ;

# récupérer les blagues d'un utilisateur :
SELECT blague.*, utilisateur.*, categorie.libelle as categorie 
FROM blague, utilisateur, categorie 
WHERE blague.categorie = categorie.id AND blague.utlisateur = utilisateur.id AND utilisateur.id = ? ;

Le principe est simple, je vois que tu utilises Mysql workbench, ce qui est une très bonne chose en soit. Pourquoi ? Et bien après avoir modélisé tes données, tu peux aller faire des teste sur tes requêtes SQL dans le section "SQL Developpement". Pour se faire tu dois configurer ton serveur local (127.0.0.1) dans la section "Server Administration", rien de bien compliquer.

Je vois que tu décode en ut8 tout au long de ton code, une bonne configuration de ta base de donnée en amont t'éviterai se soucis !! Utilise l'encodage "utf8_generel_ci". Tu trouveras cette config dans l'encadré "catalog tree" et en cliquant droite sur mydb / edit schema. Tu pourras changer le nom, et surtout le type d'encodage.

Image

En te souhaitant bon courage, et n'hésite pas si tu as des questions.

Ciao