sauver les grilles invalides

This commit is contained in:
2026-07-30 14:35:35 +02:00
parent 1f543ba622
commit 95b46e7a69
4 changed files with 58 additions and 41 deletions
+13 -11
View File
@@ -93,8 +93,9 @@ class Grille implements ArrayAccess
$grilles = $this->gen_grilles();
$grilles->current();
$this->valide = $grilles->valid();
if ($grilles->valid()) {
if ($this->valide) {
$this->definitions = [
"horizontales" => [],
"verticales" => []
@@ -119,11 +120,10 @@ class Grille implements ArrayAccess
$this->definitions["verticales"][$x][] = $definition;
}
}
$this->save($id);
return true;
} else {
return false;
}
$this->save($id);
return $this->valide;
}
public function gen_grilles($i = 0, $lettres_ligne = NULL)
@@ -239,6 +239,7 @@ class Grille implements ArrayAccess
$_SESSION["grille"] = $this->grille;
$_SESSION["definitions"] = $this->definitions;
$_SESSION["valide"] = $this->valide;
}
public function load($id)
@@ -246,14 +247,15 @@ class Grille implements ArrayAccess
session_id("$this->largeur,$this->hauteur,$id");
session_start(["use_cookies" => false]);
if (!isset($_SESSION)) {
if (isset($_SESSION) && isset($_SESSION["grille"])) {
$this->grille = $_SESSION["grille"];
$this->definitions = $_SESSION["definitions"];
$this->valide = $_SESSION["valide"];
return true;
} else {
return false;
}
$this->grille = $_SESSION["grille"];
$this->definitions = $_SESSION["definitions"];
return true;
}
+27 -19
View File
@@ -475,6 +475,8 @@ APPRENTI:
- Michel Laclos: Bleu de travail
APPRET:
- Jean Teularge: Malgré son nom se met avant
APPRISE:
- Sue après avoir travaillé
APT:
- Jacques Drillon: Capabl
ARA:
@@ -958,8 +960,9 @@ BIOS:
BIS:
- Sport Cérébral: Cris dans le poulailler
- Bernard Philippet: Demande d'assistance
- Mot de rappel flatteur
- Rappel
- Couleur de pain gris tirant sur le beige
- Petite précision d'adresse
BLANC:
- Corinne Beltz: Toujours liquide quand il est sec
BLANCHE:
@@ -1188,7 +1191,6 @@ CAVIAR:
CCCCC:
- Michel Laclos: D
CD:
- Compact Disc
- Disque laser
- Lettres diplomatiques
CE:
@@ -1304,6 +1306,8 @@ CINTRE:
- Lucien Lacau: A moitié rond quand il est plein
CIRAGE:
- Marc Aussitot: Etat second
CIRE:
- Hervé Hardouin: Tabarly le portait à l'endroit comme à l'envers
CIRCONCIS:
- Wikipourri: Manque de peau
CIRCONFLEXE:
@@ -2654,7 +2658,7 @@ FENAISON:
FER:
- Sport Cérébral: Pour chauffer ou refroidir
FERRY:
- Georges Perec: Peut vous transporter sauf sil sappelle jules
- Georges Perec: Peut vous transporter sauf sil sappelle Jules
FESSES:
- Bernard Philippet: On donne cher de leur peau
FESSIER:
@@ -2732,6 +2736,8 @@ FRAC:
- Julien Soulié: Exige le fric pour le fric
FREINAGE:
- Yannick Le Nagard: Use la gomme en ne la mettant plus
FRERE:
- Fils à papa
FRIGIDE:
- Terme utilisé par l'homme pour décrire la femme qui a moins d'appétit sexuel que lui
FRITES:
@@ -3518,6 +3524,8 @@ KABIG:
- Veste bretonne à capuchon
KAPO:
- Dans les camps nazis, détenu en charge des autres
KEBAB:
- Parfois chiche
KEFIR:
- Boisson gazeuse du Caucase
KEN:
@@ -3875,7 +3883,7 @@ MAIN:
MAJOR:
- Thierry Larsan: Premier d'un concours ou premier ministre
MAJUSCULE:
- Dédale: Capitale d'etat
- Dédale: Capitale d'état
MALAISE:
- Jean Teularge: Indonésienne ou ça ne va pas
MALFAITEUR:
@@ -3889,7 +3897,7 @@ MANCHE:
MANCHETTE:
- Georges Perec: Concerne triplement un auteur de la série noire faisant du karaté en première page dun journal
MANET:
- Arcane: Artiste à lolympia
- Arcane: Artiste à lOlympia
MANGER:
- Ambrose Bierce: Accomplir successivement (et avec succès) les fonctions de mastication, humectation et déglutition
MANIFESTANTS:
@@ -3974,6 +3982,7 @@ MENU:
- Lionel Leteur: Ce nest pas à la cuisine quon l’épluche
- Sport Cérébral: Peut comporter du gros poisson mais ne convient qu'au fretin
- Bernard Philippet: Fin ou donne faim
- Mets sur une liste
MER:
- Max Favalelli: Ses paquets ne sont pas toujours recommandés
- Lucien Lacau: On peut la prendre par une anse
@@ -4268,6 +4277,8 @@ NEZ:
- Jean-Paul Vanden Branden: Coule quand tout est gelé
- Michel Laclos: N'a pas une vue précise des choses
- Hervé Hardouin: Coupe la poire en deux
NIA:
- Dédale: Parla pour ne rien dire
NIAGARA:
- Marc Aussitot: Un film dont la chute est connue dès le début
NICE:
@@ -4285,11 +4296,11 @@ NIELLE:
- Maladie des céréales
NIET:
- Marc Aussitot: Tintin au pays des soviets
- Didier Léonard: Sort si ça rase poutine
- Didier Léonard: Sort si ça rase Poutine
NIHILISTE:
- Ambrose Bierce: Russe qui nie l'existence de tout sauf de Tolstoï. Le fondateur du mouvement est Tolstoï
NIL:
- Sport Cérébral: Tout pour les egyptiens, rien pour les romains
- Sport Cérébral: Tout pour les Egyptiens, rien pour les Romains
- Grand fleuve d'Afrique
NINAS:
- Petit cigare fait de débris de tabac
@@ -4300,7 +4311,7 @@ NL:
NN:
- Nouvelle norme en abrégé
- Suite d'étoiles
'NO':
NO:
- Didier Léonard: Docteur ou veto
- Drame lyrique du Japon
NOBLES:
@@ -5422,7 +5433,7 @@ REVERS:
REVIENS:
- Marc Aussitot: Nom courant dune chose prêtée
REVISER:
- SC: Repasser pour ne pas avoir à repasser
- Sport Cérébral: Repasser pour ne pas avoir à repasser
REVISION:
- Marc Aussitot: On ne suit plus ses conseils
REVUES:
@@ -5751,10 +5762,9 @@ SENS:
- Bernard Philippet: Aucun des cinq n'est le bon
SENT:
- Michel Laclos: Flaire ou fleure
SENTIMENTS:
- PARTAGES Quand votre belle-mère est en train de reculer dans un ravin avec votre voiture neuve
SEP:
- Pièce de charrue qui porte le soc Avance avec l’âge
- Pièce de charrue qui porte le soc
- Avance avec lage
SEPS:
- Lézard à pattes très courtes
SEPTENNAT:
@@ -5785,7 +5795,6 @@ SESAME:
- Jacques Drillon: Il entre dans une galette ou il permet d'y accéder
SET:
- Dédale: Manche avec revers
- Manche au tennis
SETON:
- Drain sortant de l'orifice d'une plaie
SEUL:
@@ -5800,7 +5809,7 @@ SEVICES:
- Jacques Flament: Marquent à tous les coups
SEXE:
- Lionel Leteur: Un simple numéro pour la sécu
- Frédéric Dard: 'MASCULIN Ce qu''il y a de plus léger au monde : une simple pensée le soulève !'
- Frédéric Dard: 'Ce qu''il y a de plus léger au monde : une simple pensée le soulève !'
SEXES:
- André Counson: Leur différence ne doit pas empêcher leur égalité
SFTP:
@@ -5815,7 +5824,6 @@ SHERPA:
- Michel Vanobost: Monte des blancs en neige
SI:
- Yves Cunow: La seule note de musique
- Note de musique élevée
- Avec lui, on met Paris en bouteille
- Début de rêve
- Permet les châteaux en Espagne
@@ -5963,7 +5971,7 @@ SQL:
SS:
- Sa Sainteté devant le pape
- Forces Nazies
- Sécurité sociale
- Sécu
SSD:
- Support de stockage plus rapide que le HDD, sans pièces mécaniques
SSH:
@@ -6220,7 +6228,7 @@ TEMPS:
- Michel Laclos: Pas toujours recherché par celui qui l'a perdu
- Ce qui empêche tout d'arriver en même temps
TENEBRES:
- Jacques Drillon: Elles ont fourni une affaire à balzac
- Jacques Drillon: Elles ont fourni une affaire à Balzac
TENIA:
- Animal d'interieur
TENTACULE:
@@ -6476,7 +6484,7 @@ TUE:
- Julien Soulié: Impose le silence ou déjà silencieuse
TUER:
- Ambrose Bierce: Créer une vacance sans nommer un successeur
TUETETE:
TUE-TETE:
- Marc Aussitot: Casse au moins les oreilles
TUMULUS:
- Michel Laclos: Bosse dans les pompes funèbres
@@ -6550,7 +6558,7 @@ URE:
UREE:
- Déchet organique du corps humain
URI:
- Philippe Harang: Dans zurich ou pas très loin
- Philippe Harang: Dans Zurich ou pas très loin
- Canton suisse
URINE:
- Charge un pistolet au besoin
+8 -11
View File
@@ -1,7 +1,4 @@
<?php
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
include_once "Grille.php";
@@ -35,17 +32,17 @@ $basedir = $_SERVER["REQUEST_SCHEME"] . "://" . $_SERVER["HTTP_HOST"] . dirname(
if (!isset($_GET["grille"]) || $_GET["grille"] == "") {
do {
$id = uniqid();
$grille_valide = $grille->genere($id);
} while (!$grille_valide);
$grille->genere($id);
} while (!$grille->valide);
$_GET["grille"] = $id;
header("Location: $basedir/?" . http_build_query($_GET));
} else {
$id = htmlspecialchars($_GET["grille"]);
$grille_valide = $grille->load($id) || $grille->genere($id);
$grille->load($id) || $grille->genere($id);
}
function formatter_definition($definition) {
function formatter_definition(Array $definition) {
if (isset($definition["nb_mots"]) && $definition["nb_mots"] > 1) {
$nb_mots = $definition["nb_mots"];
$nb_mots = " <small>($nb_mots mots)</small>";
@@ -61,7 +58,7 @@ function formatter_definition($definition) {
return ucfirst($definition["definition"]) . $nb_mots . $auteur;
}
function definition_courante($definitions, $position) {
function definition_courante(Array $definitions, int $position) {
foreach ($definitions as $id => $definition) {
if ($position <= $definition["fin"])
return [$id, $definition];
@@ -129,7 +126,7 @@ function definition_courante($definitions, $position) {
</h1>
<h1 class="small width"><a href=".">Mots■croisés</a></h1>
<div class="grille-et-definitions">
<?php if ($grille_valide): ?>
<?php if ($grille->valide): ?>
<div class="grille">
<table>
<tr>
@@ -154,10 +151,10 @@ function definition_courante($definitions, $position) {
$title = [];
[$iddh, $definition_horizontale] = definition_courante($grille->definitions["horizontales"][$y], $x);
[$iddv, $definition_verticale] = definition_courante($grille->definitions["verticales"][$x], $y);
if (isset($definition_horizontale["definition"])) $title[0] = "→ " . $definition_horizontale["definition"];
if (isset($definition_horizontale["definition"])) $title[0] = "→ " . strip_tags($definition_horizontale["definition"]);
if (isset($definition_horizontale["nb_mots"])) $title[0] .= " [" . $definition_horizontale["nb_mots"] . " mots]";
if (isset($definition_horizontale["auteur"])) $title[0] .= " (" . $definition_horizontale["auteur"] . ")";
if (isset($definition_verticale["definition"])) $title[1] = "↓ " . $definition_verticale["definition"];
if (isset($definition_verticale["definition"])) $title[1] = "↓ " . strip_tags($definition_verticale["definition"]);
if (isset($definition_verticale["nb_mots"])) $title[1] .= " [" . $definition_verticale["nb_mots"] . " mots]";
if (isset($definition_verticale["auteur"])) $title[1] .= " (" . $definition_verticale["auteur"] . ")";
$title = htmlspecialchars(implode("\n", $title));
+10
View File
@@ -194,9 +194,11 @@ h2 {
margin: 1em auto 0 auto;
display: flex;
align-items: baseline;
position: relative;
}
.nouvelle-grille::before {
position: absolute;
content: "";
height: 16px;
width: 16px;
@@ -220,6 +222,14 @@ h2 {
cursor: pointer;
}
#lignes {
cursor: row-resize;
}
#colonnes {
cursor: col-resize;
}
.nouvelle-grille button {
text-decoration: underline;
}