ENREGISTREMENT AFFICHE ALEATOIREMENT + SESSION

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 : ENREGISTREMENT AFFICHE ALEATOIREMENT + SESSION

par thehawk » 09 mars 2007, 18:56

	$reponse = mysql_query(... ton sql avec le rand ...);
	while ($donnees = mysql_fetch_array($reponse))
	{
mysql_query("INSERT INTO temporary_table VALUES(... les differentes valeurs ...)");
}

	$reponse = mysql_query(... ton sql sur la temporary_table ...);
	while ($donnees = mysql_fetch_array($reponse))
	{
... affiche les donnees ...
}
		
voila la trame de mn idée a toi de l'adapter

par dread » 09 mars 2007, 18:46

Je pense que le principe, je l'ai bien intégré.
Malheureusement, n'ayant pas la science infuse (je l'avoue), un peu de code php sur ces mots pour m'éclairer, me donner la démarche à suivre serait d'une aide précieuse.
Je ne demande évidemment pas la solution complète mais une trame, un exemple codé, bref ce que j'ai du mal à percevoir pour le moment.
Merci.

par mere-teresa » 09 mars 2007, 18:40

Bon voila comment je vois les choses ...

Dans ton scripts tu crée ton affichage aléatoire sans limite d'affichage puis tu le stock dans la table temporaire puis tu affiche normalement la table temporaire ainsi l'utilisateur ne verra jamais 2fois la meme anonce
Je suis tout à fait d'accord.

par thehawk » 09 mars 2007, 18:31

Bon voila comment je vois les choses ...

Dans ton scripts tu crée ton affichage aléatoire sans limite d'affichage puis tu le stock dans la table temporaire puis tu affiche normalement la table temporaire ainsi l'utilisateur ne verra jamais 2fois la meme anonce

par dread » 09 mars 2007, 18:28

Le principe m'interesse bien mais c'est dans la pratique que je vais un peu pêché. Où est-ce que j'insère le paramètre aléatoire?

par thehawk » 09 mars 2007, 18:19

moi je verrai a la place de la supression un vidage

par mere-teresa » 09 mars 2007, 17:57

Pour les tables temporaires, il s'agit d'une table de base de données, qui se supprimera à la fin du programme :)

http://dev.mysql.com/doc/refman/5.0/en/ ... table.html

par thehawk » 09 mars 2007, 17:54

Ben en faite le principe de la table temporaire c'est de temporiser ... bon je parle pour ne rien dire ^^

Enfaite tu va "sauvegarder" dans ta table l'affichage (l'ordre) de ta liste de campings puis tu va la resortir ^^ puis tu peux rajouter une tables sessions qui enfaite sera propre a chaque individu ^^ enfin ce n'est qu'une proposition

par dread » 09 mars 2007, 17:50

Salut mere-teresa!
C'est exactement ca le problème: garder le résultat du rand en mémoire.
Pourrais-tu m'en dire plus sur la table temporaire ou l'enregistrement en variables PHP ou aurais-tu des liens vers des sites qui en parlent?

par mere-teresa » 09 mars 2007, 17:41

Ben pour avoir ton rand() c'est bon, ton souci est plutôt de garder le résultat de ce rand() en mémoire...
Pourquoi ne pas créer une table temporaire ? Ou alors tu l'enregistres en variables PHP

ENREGISTREMENT AFFICHE ALEATOIREMENT + SESSION

par dread » 09 mars 2007, 17:29

Bonjour à tous.
Je réalise un annuaire des campings de ma région et je me retrouve face à un soucis.
Je m'explique: J'arrive à afficher les enregistrements des campings (contenus dans une base de données) de façon aléatoire, grâce à ORDER BY RAND (). Le soucis, c'est que j'ai limité l'affichage de ces enregistrements à 8 par page et que lorsque je navigue sur les différentes pages, je peux retrouver des enregistrements de la page 1 sur la page 2 et ainsi de suite.
n fait, l'aléatoire fonctionne sur toutes les pages et sur la totalité des enregistrements sans se soucier si tel ou tel camping se trouvait déjà sur la page 1(par exemple).
Je voulais donc savoir comment vous vous y prendriez pour que l'aléatoire ne s'effectue qu'une seule fois (au premier chargement des données par exemple) pour éviter les doublons lors de la navigation d'un visiteur.
Y aurait-il un rapport avec les SESSIONS.
Je débute et j'ai un peu de mal donc si quelqu'un pouvait m'aider.
Merci par avance!!
Voici le code de ma page même s'il est un peu long:
<?php require_once('Connections/conn_develop.php'); ?>
<?php


session_start();

if (isset($_GET['menu'])) { // si la donnée est passée en get  
  // elle est explicitement demandée par l'utilisateur, donc on l'utilise :)  
  $menu = $_GET['menu'];  
}  
else { // sinon  
  if (isset($_SESSION['menu'])) { // si la donnée existe en session   
    // c'est qu'elle a été précément demandée par l'utilisateur, donc on l'utilise  
    $menu = $_SESSION['menu'];   
  } else {
   $menu = '1-menu'; // valeur par défaut
   } 
  }  

$_SESSION['menu'] = $menu; // stocke la nouvelle valeur de $menu dans la session 




function pagination($total,$courante)
{
    $prec = $courante - 1; 
    $suiv = $courante + 1; 
    $avder = $total - 1; 
    $adjacentes = 3; 

    $pagination = ""; 

    if($total > 1) 
    {
       
        $pagination .= "<div class=\"pagination\">\n";

        
        if ($courante == 2) 
            $pagination.= "<a href=\"annuaire-camping.php?ville=".$_GET['ville']."&etoile=".$_GET['etoile']."\">« préc</a>";
        elseif ($courante > 2)
            $pagination.= "<a href=\"annuaire-camping.php?ville=".$_GET['ville']."&etoile=".$_GET['etoile']."&page=$prec\">« préc</a>";
        else 
            $pagination.= "<span class=\"desactive\">« préc</span>";

        if ($total < 7 + ($adjacentes * 2))
        {
            
            $pagination.= ($courante == 1) ? "<span class=\"courante\">1</span>" : "<a href=\"annuaire-camping.php?ville=".$_GET['ville']."&etoile=".$_GET['etoile']."\">1</a>";

           for ($compteur = 2; $compteur <= $total; $compteur++)
            {
                if ($compteur == $courante) 
                    $pagination.= "<span class=\"courante\">$compteur</span>";
                else
                    $pagination.= "<a href=\"annuaire-camping.php?ville=".$_GET['ville']."&etoile=".$_GET['etoile']."&page=$compteur\">$compteur</a>";
            }
        }

        elseif($total > 5 + ($adjacentes * 2))
        {
            
            if($courante < 1 + ($adjacentes * 2))
            {
                $pagination.= ($courante == 1) ? "<span class=\"courante\">1</span>" : "<a href=\"annuaire-camping.php?ville=".$_GET['ville']."&etoile=".$_GET['etoile']."\">1</a>";

                
                for ($compteur = 2; $compteur < 4 + ($adjacentes * 2); $compteur++)
                {
                    if ($compteur == $courante)
                        $pagination.= "<span class=\"courante\">$compteur</span>";
                    else
                        $pagination.= "<a href=\"annuaire-camping.php?ville=".$_GET['ville']."&etoile=".$_GET['etoile']."&page=$compteur\">$compteur</a>";
                }

                $pagination.= " ... ";

                $pagination.= "<a href=\"annuaire-camping.php?ville=".$_GET['ville']."&etoile=".$_GET['etoile']."&page=$avder\">$avder</a>";
                $pagination.= "<a href=\"annuaire-camping.php?ville=".$_GET['ville']."&etoile=".$_GET['etoile']."&page=$total\">$total</a>";
            }

            elseif($total - ($adjacentes * 2) > $courante && $courante > ($adjacentes * 2))
            {
                $pagination.= "<a href=\"annuaire-camping.php?ville=".$_GET['ville']."&etoile=".$_GET['etoile']."\">1</a>";
                $pagination.= "<a href=\"annuaire-camping.php?ville=".$_GET['ville']."&etoile=".$_GET['etoile']."&page=2\">2</a>";

                $pagination.= " ... ";

                for ($compteur = $courante - $adjacentes; $compteur <= $courante + $adjacentes; $compteur++)
                {
                    if ($compteur == $courante)
                        $pagination.= "<span class=\"courante\">$compteur</span>";
                    else
                        $pagination.= "<a href=\"annuaire-camping.php?ville=".$_GET['ville']."&etoile=".$_GET['etoile']."&page=$compteur\">$compteur</a>";
                }

                $pagination.= " ... ";

                $pagination.= "<a href=\"annuaire-camping.php?ville=".$_GET['ville']."&etoile=".$_GET['etoile']."&page=$avder\">$avder</a>";
                $pagination.= "<a href=\"annuaire-camping.php?ville=".$_GET['ville']."&etoile=".$_GET['etoile']."&page=$total\">$total</a>";
            }

            else
            {
                $pagination.= "<a href=\"annuaire-camping.php?ville=".$_GET['ville']."&etoile=".$_GET['etoile']."\">1</a>";
                $pagination.= "<a href=\"annuaire-camping.php?ville=".$_GET['ville']."&etoile=".$_GET['etoile']."&page=2\">2</a>";

                $pagination.= " ... ";

                for ($compteur = $total - (2 + ($adjacentes * 2)); $compteur <= $total; $compteur++)
                {
                    if ($compteur == $courante)
                        $pagination.= "<span class=\"courante\">$compteur</span>";
                    else
                        $pagination.= "<a href=\"annuaire-camping.php?ville=".$_GET['ville']."&etoile=".$_GET['etoile']."&page=$compteur\">$compteur</a>";
                }
            }
        }

        if ($courante < $compteur - 1)
            $pagination.= "<a href=\"annuaire-camping.php?ville=".$_GET['ville']."&etoile=".$_GET['etoile']."&page=$suiv\">suiv »</a>\n";
        else
            $pagination.= "<span class=\"desactive\">suiv »</span>\n";
        $pagination.= "</div>\n";
    }

    return ($pagination);
}
	
/** On calcule le nombre total d'entrées de notre table ma_table que l'on stocke dans $nb_entrees */
mysql_select_db($database_conn_develop, $conn_develop);
$query = mysql_query('SELECT COUNT(*) FROM tbl_etab WHERE type_etab="camping"') or die(mysql_error());
$nb_entrees = mysql_result($query,0,0);

/** On configure les variables pour afficher notre requête */
    $entrees_par_page = 8; // nombre d'entrée à afficher par page
    $total_pages = ceil($nb_entrees/$entrees_par_page); // calcul du nombre de pages nécessaires pour tout afficher (on arrondit à l'entier supérieur)
	
/** On récupère le numéro de la page depuis l'URL avec la méthode GET*/
    if(!isset($_GET['page'])){
        $page_courante = 1; // si aucune page n'existe dans l'URL, on attribue 1 à la page courante
    } else {
        $page = $_GET['page'];
        if ($page<1) $page_courante=1; // on ne peut avoir de page inférieure à 1 : dans ce cas la valeur par défaut est 1
        elseif ($page>$total_pages) $page_courante=$total_pages; // on ne peut avoir de page supérieure au nombre total de pages : dans ce cas la valeur par défaut est la dernière page
        else $page_courante=$page; // sinon la page courante est celle indiquée dans l'URL
		}
	
 // $start est la valeur de départ du LIMIT dans notre requête SQL (est fonction de la page courante)
    $start = ($page_courante * $entrees_par_page - $entrees_par_page);	

mysql_select_db($database_conn_develop, $conn_develop);
if ((($_GET['etoile']) != '') && (($_GET['etoile']) != 'toutes')){
$query_rs_ville = "SELECT DISTINCT ville_etab FROM tbl_etab, tbl_camping WHERE tbl_etab.etab_id=tbl_camping.id_etab AND type_etab='camping' AND nb_etoile_camping='".$_GET['etoile']."' ORDER BY ville_etab ASC";
} else {
$query_rs_ville = "SELECT DISTINCT ville_etab FROM tbl_etab WHERE type_etab='camping' ORDER BY ville_etab ASC";
}
$rs_ville = mysql_query($query_rs_ville, $conn_develop) or die(mysql_error());
$row_rs_ville = mysql_fetch_assoc($rs_ville);


mysql_select_db($database_conn_develop, $conn_develop);
if ((($_GET['ville']) != '') && (($_GET['ville']) != 'toutes')){
$query_rs_etoile = "SELECT DISTINCT nb_etoile_camping FROM tbl_etab, tbl_camping WHERE tbl_etab.etab_id=tbl_camping.id_etab AND ville_etab='".$_GET['ville']."' ORDER BY nb_etoile_camping ASC";
} else {
$query_rs_etoile = "SELECT DISTINCT nb_etoile_camping FROM tbl_camping ORDER BY nb_etoile_camping ASC";
}
$rs_etoile = mysql_query($query_rs_etoile, $conn_develop) or die(mysql_error());
$row_rs_etoile = mysql_fetch_assoc($rs_etoile);



mysql_select_db($database_conn_develop, $conn_develop);


if (($_GET['ville']) == ''){ $_GET['ville'] = 'toutes';}
if (($_GET['etoile']) == ''){ $_GET['etoile'] = 'toutes';}

if ((($_GET['ville'])!='toutes') && (($_GET['etoile'])=='toutes')){
	$query_rs_camping = "SELECT nom_etab, cp_etab, ville_etab, url_photo4, titre_photo1, date_ouverture, nb_etoile_camping, id_camping FROM tbl_etab, tbl_camping WHERE tbl_etab.etab_id=tbl_camping.id_etab AND ville_etab='".$_GET['ville']."' order by rand() LIMIT $start, $entrees_par_page";
}
else{
	if ((($_GET['etoile'])!='toutes') && (($_GET['ville'])=='toutes')){
		$query_rs_camping = "SELECT nom_etab, cp_etab, ville_etab, url_photo4, titre_photo1, date_ouverture, nb_etoile_camping, id_camping FROM tbl_etab, tbl_camping WHERE tbl_etab.etab_id=tbl_camping.id_etab AND nb_etoile_camping='".$_GET['etoile']."' order by rand() LIMIT $start, $entrees_par_page";
	}
	else{
		if (($_GET['ville']=='toutes') && ($_GET['etoile']=='toutes')){
			$query_rs_camping = "SELECT nom_etab, cp_etab, ville_etab, url_photo4, titre_photo1, date_ouverture, nb_etoile_camping, id_camping FROM tbl_etab, tbl_camping WHERE tbl_etab.etab_id=tbl_camping.id_etab order by rand() LIMIT $start, $entrees_par_page";
		}
		else{
			$query_rs_camping = "SELECT nom_etab, cp_etab, ville_etab, url_photo4, titre_photo1, date_ouverture, nb_etoile_camping, id_camping FROM tbl_etab, tbl_camping WHERE tbl_etab.etab_id=tbl_camping.id_etab AND ville_etab='".$_GET['ville']."' AND nb_etoile_camping='".$_GET['etoile']."' order by rand() LIMIT $start, $entrees_par_page";
		}
	}
}
$resultat = mysql_query($query_rs_camping);

?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Menu CSS avec contenu</title>
<meta name="Description" content="Comment faire un menu CSS"/>
<meta name="Keywords" content=" Menu CSS, menu CSS, menu déroulant, test menu horizontal, menu hover"/>
<link href="annuaire.css" rel="stylesheet" type="text/css" />

<link href="bandeau-piedpage.css" rel="stylesheet" type="text/css" />
<link href="pagination.css" rel="stylesheet" type="text/css" />
<!--[if lte IE 6]>
		<link rel="stylesheet" type="text/css" href="annuaire-ie.css" media="screen" />
	<![endif]-->
				
			<script type="text/javascript">
			<!--
			window.onload=montre;
			function montre(id) {
			var d = document.getElementById(id);
			for (var i = 1; i<=10; i++) {
			if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
			}
			if (d) {d.style.display='block';}
			}
			//-->
			function submit(){
				document.forms['frm_ville'].submit();
			}
			</script>
			
</head>

<body>
<div id="global">

	<?php
		include('./'.$menu . '.htm');
		include('bandeau-piedpage.htm');
	?>
	
<div id="contenu">
	<?php 
	while($row_rs_camping = mysql_fetch_array($resultat)) { ?>
	        <table class="tableau" height="110px" width="461px" border="0" cellspacing="0" cellpadding="0" background="Images/annuaire/vignette-annuaire.gif">
	        
	        <tr>
	          <td class="photo" rowspan="4" height="97px" width="140px" ><img src="<?php echo $row_rs_camping['url_photo4']; ?>" alt="<?php echo $row_rs_camping['titre_photo1']; ?>"/></td>
        <td class="nom" colspan="2" width="315px" height="30px"><a href="fiche-camping.php?num_camping=<?php echo $row_rs_camping['id_camping']; ?>"><?php echo $row_rs_camping['nom_etab']; ?></a></td>
      </tr>
	        <tr>
	          <td width="315px" height="24px" colspan="2"><span class="Style1"><?php echo $row_rs_camping['cp_etab']; ?> <?php echo $row_rs_camping['ville_etab']; ?></span></td>
      </tr>
	        <tr>
	          <td colspan="2" width="315px" height="18px" valign="top"><span class="Style1"><?php echo $row_rs_camping['date_ouverture']; ?></span></td>
      </tr>
	        <tr>
	          <td width="150px" height="25px" valign="top"><span class="Style1"><?php if (($row_rs_camping['nb_etoile_camping']) != '0'){ echo '<img src="Images/etoile/etoile'.$row_rs_camping['nb_etoile_camping'].'.gif"  alt="Camping '.$row_rs_camping['nb_etoile_camping'].' étoiles"></img>';}; ?></span></td>
        <td class="fiche" width="165px" height="25px" valign="top"><a href="fiche-camping.php?num_camping=<?php echo $row_rs_camping['id_camping']; ?>">Fiche complète</a></td>
      </tr>
        </table>
		<?php } ?>
	      
   
 </div>
  
  <div id="filtre">
   <table class="tri" border="0" cellspacing="0" cellpadding="0" valign="top">
  <tr>
    
    <form id="frm_ville" name="frm_ville" method="GET" action="annuaire-camping.php">
	<td class="ville" width="400px" valign="top">Tri par ville
            <select name="ville" id="ville" onchange="submit()">
              <?php
	if ($_GET['ville'] == 'toutes') {
        echo '<option value="toutes" selected="selected">Toutes les villes</option>';
    } else {
        echo '<option value="toutes">Toutes les villes</option>';
	} 
	
do {  

if ($_GET['ville'] == $row_rs_ville['ville_etab']) {
        echo '<option value="'.$row_rs_ville['ville_etab'].'" selected="selected">'.$row_rs_ville['ville_etab'].'</option>';
    } else {
        echo '<option value="'.$row_rs_ville['ville_etab'].'">'.$row_rs_ville['ville_etab'].'</option>';
	} 

} while ($row_rs_ville = mysql_fetch_assoc($rs_ville));

?>

       </select></td>
	   
    <td class="etoile" width="380px" valign="top">Tri par étoiles
    
	<!--<form id="frm_etoile" name="frm_etoile" method="GET" action="annuaire-campingtest.php">-->
	<select name="etoile" id="etoile" onchange="submit()">
      <?php
	  
	  if ($_GET['etoile'] == 'toutes') {
        echo '<option value="toutes" selected="selected">Toutes les étoiles</option>';
    } else {
        echo '<option value="toutes">Toutes les étoiles</option>';
	} 
	
do {  

	if ($_GET['etoile'] == $row_rs_etoile['nb_etoile_camping']) {
        echo '<option value="'.$row_rs_etoile['nb_etoile_camping'].'" selected="selected">'.$row_rs_etoile['nb_etoile_camping'].'</option>';
    } else {
        echo '<option value="'.$row_rs_etoile['nb_etoile_camping'].'">'.$row_rs_etoile['nb_etoile_camping'].'</option>';
	} 

} while ($row_rs_etoile = mysql_fetch_assoc($rs_etoile));
  
?>
			</select>
			
	   </td></form>
	   <td valign="top"><?php
   echo pagination($total_pages,$page_courante);
 	?></td>
      </tr>
</table>

</div>

</div>
</body>
</html>
<?php

mysql_free_result($rs_ville);

mysql_free_result($rs_etoile);
?>