Je cours un cronjob tous les jours pour un site de notation qui exécute un script qui choisissent 3 images aléatoires de chaque catégorie les visiteurs peuvent ensuite évaluer les images les unes contre les autres comme "Image 1 versus image 2 -> lequel préférez-vous? ", cela fonctionne très bien.Comment puis-je m'assurer que deux lignes avec le même numéro dans la base de données ne sont pas choisies?
Le problème est permet de dire qu'il ya deux du même type d'images
Supposons
- id 1 est une ford mustang gt vue avant
- id 2 est une ford mustang gt vue de face juste légèrement différente que l'ID 1
Ceci est un problème parce que si les deux id 1 et id 2 est choisi, c'est comme dire deux images assez identiques sont contre chaque autre? Donc, j'ai créé une « colonne de séparation » où je donne les images qui représentent le même le même nombre dans ce cas simplifié id 1 et id 2 ont tous deux numéro de séparateur 1 :)
structure de base de données
Tableau Voitures
cars_id | cars_category | cars_source | separator
--------+---------------+---------------+-----------
1 | 1 | 123.jpg | 1
2 | 1 | 242.jpg | 1
3 | 2 | 532.jpg | 2
4 | 2 | 531.jpg | 3
5 | 2 | 45fd.jpg | 3
6 | 3 | da3.jpg | 4
script PHP actuel qui choisir 3 images au hasard dans chaque catégorie
$cat1 = 1;
$cat2 = 2;
$cat3 = 3;
$stmt = $dbCon->prepare(" INSERT INTO daily_versus (daily_versus_source, daily_versus_category) "
. " (SELECT cars_source, cars_category "
. " FROM cars "
. " WHERE cars_category IN (?) ORDER BY RAND() LIMIT 3) "
. " UNION "
. " (SELECT cars_source, cars_category "
. " FROM cars "
. " WHERE cars_category IN (?) ORDER BY RAND() LIMIT 3) "
. " UNION "
. " (SELECT cars_source, cars_category "
. " FROM cars "
. " WHERE cars_category IN (?) ORDER BY RAND() LIMIT 3) ");
$stmt->bind_param('iii', $cat1, $cat2, $cat3);
if ($stmt->execute()) {
echo "Success VERSUS/INSERT";
} else {
echo "Fail VERSUS/INSERT";
}
les œuvres ci-dessus comme un charme, mais ce serait le plus intelligent approac h pour intégrer les numéros de séparateur de sorte que deux voitures identiques ne peuvent pas être choisies ... Donc, fondamentalement, si une voiture avec le numéro de séparateur "x" a été choisi le script ne peut pas choisir une autre voiture avec ce même numéro de séparateur?
Cela n'a pas rapport à ce que j'ai demandé – Javaish