PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Re : Forum Général PHP » Empêcher la répétition d'un élément tirer aléatoirement » 09-06-2012 09:12:46

Merci beaucoup pour toute l'aide apporté, tout marche parfaitement maintenant smile

#2 Re : Forum Général PHP » Empêcher la répétition d'un élément tirer aléatoirement » 09-06-2012 09:12:46

Ça serait pour tous les internautes et à chaque nouvelle visite.
Sans avoir besoin de s'inscrire.
Avec le système de session ça permettrait de réinitialiser à chaque visite.

#3 Re : Forum Général PHP » Empêcher la répétition d'un élément tirer aléatoirement » 09-06-2012 09:12:46

La finalité serait de pouvoir afficher a un visiteur des bannières et citations tirés aléatoirement, et qui n'apparaitrait qu'une fois uniquement.
Je le fais avec l'id car c'est plus simple pour comprendre et retenir quand c'est un nombre qui tombe.

#4 Re : Forum Général PHP » Empêcher la répétition d'un élément tirer aléatoirement » 09-06-2012 09:12:46

L'id apparaît bien mais ne se stock toujours pas. Et l'erreur : " Notice: Array to string conversion in /home/.../.../test.php on line 8 " est apparu

<?php
session_start();
 
try
{
 $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
 $bdd = new PDO('mysql:host=mysql51-57.perso;dbname=', '', '', $pdo_options);
 $reponse = $bdd->query('SELECT id FROM textealeatoire WHERE id NOT IN ("' . implode(',', $_SESSION['id']) . '") ORDER BY rand() LIMIT 1,1');

 
if (!isset($_SESSION['id'])) {
$id=$_SESSION['id'];
$_SESSION['id']=array();
$_SESSION['id'][]=$id;
    }
    while ($donnees = $reponse->fetch()) {
 $_SESSION['id'][] = $donnees['id'];
 echo $donnees['id'];
    }
    $reponse->closeCursor();
 }
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
 ?>

#5 Re : Forum Général PHP » Empêcher la répétition d'un élément tirer aléatoirement » 09-06-2012 09:12:46

L'id finit encore par être écrasé, auriez-vous une idée?
Je ne vois même pas ou le problème se situerai.
Merci pour votre aide smile

<?php
session_start();
try
{
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
 $bdd = new PDO('mysql:host=mysql51-57.perso;dbname=', '', '', $pdo_options);
 $reponse = $bdd->query('SELECT id FROM textealeatoire WHERE id != "'.$_SESSION['id'].'" ORDER BY rand() LIMIT 1,1');
 
if (isset($_SESSION['id'])) {
        $_SESSION['id'] = array();
    }
    while ($donnees = $reponse->fetch()) {
 $_SESSION['id'][] = $donnees['id'];
 echo $donnees['id'];
    }
    $reponse->closeCursor();
 }
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
 ?>

#6 Re : Forum Général PHP » Empêcher la répétition d'un élément tirer aléatoirement » 09-06-2012 09:12:46

Bonsoir, désolé de sollicité ton aide à nouveau,
Aurais tu une idée de ce qui ne vas pas dans mon code?
Les id s'affichent mais finissent par retomber.


<?php
session_start();

try
{
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
 $bdd = new PDO('mysql:host=mysql51-57.perso;dbname=', '', '', $pdo_options);
 $reponse = $bdd->query('SELECT *, id FROM textealeatoire WHERE id != "'.$_SESSION['id'].'" ORDER BY rand() LIMIT 1,1');

if (isset($_SESSION['id'])) {
        $_SESSION['id'] = array();
    }
    while ($donnees = $reponse->fetch()) {
 $_SESSION['id'] = $donnees['id'];
 echo $donnees['id'];
    }
    $reponse->closeCursor();
 }
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
 ?>

#7 Forum Général PHP » Empêcher la répétition d'un élément tirer aléatoirement » 09-06-2012 09:12:46

kiwiz
Réponses : 14

Je sais afficher avec un ordre aléatoire un texte depuis ma base de données , cependant je n'arrive pas à trouver un moyen d’empêcher la répétition d'un même texte.
A travers un systeme de session, le visiteur clique sur suivant et les textes défilent aléatoirement sans se répéter.

<?php
session_start();
$_SESSION['pseudo'];

try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=mysql51-57.perso;dbname=', '', '', $pdo_options);

$reponse = $bdd->query('SELECT * FROM textesaleatoire ORDER BY rand() LIMIT 1,1');
while ($donnees = $reponse->fetch())
{
?>
       

<table width="100%" border="1" class="arrondiombre">
                <tr>
                <td><?php echo $donnees['textes']; ?></td>
                </tr>
</table>
               

<?php
}  
$reponse->closeCursor();
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>

Pied de page des forums

Propulsé par FluxBB