Page 1 sur 1

script lecture d'une table en fonction d'une autre

Posté : 10 juil. 2010, 12:44
par Night'
bonjour tout le monde !!

Je suis en train de codé mon site, mais un problème apparaît lorsque j'arrive à une partie où je ne vois pas du tout comment m'y prendre... :?
je vous explique le problème:

j'ai deux tables: pts_campagnes et pts_precisions
-- phpMyAdmin SQL Dump
-- version 3.2.4
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Jeu 08 Juillet 2010 à 18:35
-- Version du serveur: 5.1.41
-- Version de PHP: 5.3.1

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Base de données: `bigpts_site`
--

-- --------------------------------------------------------

--
-- Structure de la table `pts_campagnes`
--

CREATE TABLE IF NOT EXISTS `pts_campagnes` (
  `campagnes_id` int(11) NOT NULL AUTO_INCREMENT,
  `campagnes_pseudo` varchar(25) NOT NULL,
  `campagnes_nom` varchar(255) NOT NULL,
  `campagnes_ban` int(11) NOT NULL,
  `campagnes_remuneration` double NOT NULL,
  `campagnes_restant` int(11) NOT NULL,
  `campagnes_consignes` text NOT NULL,
  PRIMARY KEY (`campagnes_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

--
-- Contenu de la table `pts_campagnes`
--

INSERT INTO `pts_campagnes` (`campagnes_id`, `campagnes_pseudo`, `campagnes_nom`, `campagnes_ban`, `campagnes_remuneration`, `campagnes_restant`, `campagnes_consignes`) VALUES
(1, 'michel', 'coin pusher', 1, 1, 1, 'blablablabla'),
(2, 'barry white', 'aimme voyance', 2, 2, 10, 'ploploploploplpoploploploplop');

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
-- phpMyAdmin SQL Dump
-- version 3.2.4
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Jeu 08 Juillet 2010 à 18:35
-- Version du serveur: 5.1.41
-- Version de PHP: 5.3.1

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Base de données: `bigpts_site`
--

-- --------------------------------------------------------

--
-- Structure de la table `pts_precisions`
--

CREATE TABLE IF NOT EXISTS `pts_precisions` (
  `precisions_id` int(11) NOT NULL AUTO_INCREMENT,
  `id_campagne` int(11) NOT NULL,
  `precisions_pseudo` varchar(25) NOT NULL,
  `precisions_precisions` text NOT NULL,
  `precisions_etat` varchar(20) NOT NULL,
  `precisions_hide` tinyint(4) NOT NULL,
  PRIMARY KEY (`precisions_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Contenu de la table `pts_precisions`
--


/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
J'ai une page qui s'appelle signup.php
pour accéder à cette page, il faut être connecté.
quand le membre arrive sur cette page, la table pts_campagnes doit se vider dans le contenu d'une boucle.
jusque là c'est simple. le problème qui se pose, est que le membre ne doit pas voir toutes les entrées de la table pts_campagnes:
il ne doit voir que celles où il n'a pas posté de précision, et celles où il posté une précision, mais que le champs precision_hide est egal à 0.
les deux tables pts_campagnes et pts_precision sont liées par les champs campagnes_id et id_camagne.

Est-ce que vous pourriez me mettre sur la voie pour coder ce script ? une idée, ou manière de faire etc...

Merci d'avance,

J'avais préalablement essyé de coder la page, mais elle ne répondait pas à mes attentes.
<?php
	session_start();

	require_once('includes/fonctions.php');

	if (!isset($_SESSION['pseudo']))			/* le membre doit être connecté */
	{
		echo 'Vous devez être connecté';
		exit();
	}

	if (isset($_POST['message']))		/* s'il y a un envoie on enregistre */
	{
		sql_connect();

		$message = mysql_real_escape_string(htmlentities($_POST['message']));		// neutralisation de lenvoie
		$id_campagne = mysql_real_escape_string(htmlentities($_POST['id_campagne']));// neutralisation de lenvoie

		mysql_query('INSERT INTO  pts_precisions VALUES("", "'.$id_campagne.'", "'.$_SESSION['pseudo'].'", "'.$message.'", "en attente", 1)') or die (mysql_error()); //enregistrement
		$nb_restant = mysql_result(mysql_query('SELECT campagnes_restant FROM pts_campagnes WHERE id = "'.$id_campagne.'"'), 0) or die (mysql_error());
		$nb_restant = $nb_restant - 1;
		mysql_query('UPDATE pts_campagnes SET campagnes_restant = '.$nb_restant.' WHERE id = "'.$id_campagne.'"') or die (mysql_error());// mise a jour du nb d'inscription restantes
		
		header('location: signup.php');
		
		sql_close();
	}

	require_once('includes/header.php'); // on affiche la page
?>
<div class="content">
	<?php
		require_once ('includes/menu.php');
	?>
	<div class="content1">
		<?php
			sql_connect();
			
			$reponse_campagnes = mysql_query('SELECT *
											FROM pts_campagnes 
											LEFT JOIN pts_precisions 
											ON campagnes_id = id_campagne
											WHERE precisions_hide != 1') or die (mysql_error());	// on récupère toutes les campagnes

			while ($campagnes = mysql_fetch_array($reponse_campagnes))								// on les affiche
			{
			?>
			
			<div class="campagnes">
				<table>
					<tr>
						<td width="50%" align="left">
							<?php echo $campagnes['campagnes_id'].' / '.$campagnes['campagnes_nom']; ?>
						</td>
						<td width="50%" align="right">
							<?php echo 'rémunération: '.$campagnes['campagnes_remuneration'] .'€'; ?>
						</td>
					</tr>
					<tr>
						<td>
						</td>
						<td align="right">
							<?php echo 'inscriptions restantes: '.$campagnes['campagnes_restant']; ?>
						</td>
					</tr>
				</table>
				<p style="text-align: center;"><img src="images/ban/<?php echo $campagnes['campagnes_ban']; ?>.png" alt="ban" /></p>
				<p>Consignes de l'annonceur: <?php echo $campagnes['campagnes_consignes']; ?></p>
				<form method="post" action="signup.php">
					<p>
						Précision: <br /><textarea name="message" rows="7" cols="80"></textarea>
						<input type="hidden" name="id_campagne" value="<?php echo $campagnes['campagnes_id']; ?>" />
					</p>
					<p><input type="submit" value="Soumettre !" /></p>
				</form>
				<hr />
			</div>
			
			<?php
			}
			
			sql_close();
		?>
	</div>
</div>
<?php
	require_once ('includes/footer.php');
?>
ps: j'ai déjà codé l'espace membre.

merci !

Re: script lecture d'une table en fonction d'une autre

Posté : 16 juil. 2010, 14:48
par Patriboom
Il me semble que tu puisses régler
il ne doit voir que celles où il n'a pas posté de précision, et celles où il posté une précision, mais que le champs precision_hide est egal à 0.
directement dans ta requête MySQL, en y ajoutant simple un WHERE precision = '' OR precision_hide = 0