| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

27-10-2011, 14:08
|
|
darkii
Registrierter Benutzer
|
|
Registriert seit: Oct 2011
Beiträge: 9
|
|
Sudoku bissl mehr als Grundstruktur steht
Erstmal hallo liebes PhP Ressource Team,
endeckt habe ich euch durch Home.
In semtlichen Foren in denen ich bis jetzt war wurde ich Grundlegend mit meiner Frage ignoriert.
nun probier ichs mal bei euch  Ich entwickle gerade ein Php Sudoku wo ich an einigen Punkten nicht weiter komme.
1. Ich schaff es zwar rauszubekommen welche Zeilen und Spalten falsch sind aber nicht wie ich diese Fehler in meinem Sudoku markiere
2. hab ich nach einer Eingabe nicht mehr die möglichkeit die Eingabe zu verändern
3. Sind meine eingaben trotz Konstanten nicht sicher da ich die Konstanten überschreibe
Ich hoffe ihr könnt mir da helfen Code kommt hier:
Sry Code zulange ich schick in per Pastebin:
[PHP] <?php session_start(); ?> <html> <head> <meta http-equiv="Content-Type" conte - Pastebin.com
|

27-10-2011, 14:16
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Zitat:
|
In semtlichen Foren in denen ich bis jetzt war wurde ich Grundlegend mit meiner Frage ignoriert.
|
Das kann ich mir lebhaft vorstellen.
Auch ich finde den Code ekelig.
1. diese Konstanten
2. diese fürchterlichen Variablenbezeichner
3. die dauernden Wiederholungen
Vor readonly fehlt jeweils ein Leerzeichen
Auch heißt es readonly="readonly" wenn mich nicht alles täuscht
|

27-10-2011, 14:17
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
da der Code mir zu unübersichtlich ist, um selbst nachzusehen, was er macht, gib uns doch bitte mal ein paar Infos, worum es geht: Ist es ein Sudoku-Generator oder ein Sudoku-Solver?
Was ich schonmal nicht gut finde, ist, dass du alles in eine riesige Datei gepackt hast. Du solltest besser die Logik von der Ausgabe trennen. Ein objektorientierter MVC-Entwurf wäre das sinnvollste.
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

27-10-2011, 14:27
|
|
darkii
Registrierter Benutzer
|
|
Registriert seit: Oct 2011
Beiträge: 9
|
|
Also es ist ein simpler Sudoku Solver der mir aus einer Textdatei eine Array hollt die dann in eine Tabelle übergeben wird.
Dass soll das ganze auf Knopf druck die User eingabe übernehmen und prüfen ob das sudoku richtig ist aber nur dadurch das in keiner Reihe/Spalte etwas doppelt vorkommen darf. Sollte dann etwas falsch sein soll er mir die Reihe/Spalte in ein hell rot machen und da wo der Fehler steckt Möglichst dunkel rot.
Und wegen der unübersichtlichkeit sry bin erst seit 2 Monaten am Php programmieren
|

27-10-2011, 14:34
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Also eigentlich auch kein Solver, sondern nur ein Tool, um zu überprüfen, ob es richtig ist – ein Validator.
Du willst, dass das Tool dir den Fehler hervorhebt, aber es wird dir bei doppeltem Auftreten einer Zahl beide markieren müssen, da es nicht ohne weiteres ermitteln kann, welche von beiden jetzt falsch ist. Dafür würdest du wieder einen Solver benötigen, der aus der gegebenen Ausgangssituation alles automatisch vervollständigen kann. Nur auf diese Weise kann er auch Fehler finden. Wenn du dagegen alles eingibst, was du bisher hast (also ohne die vorgegebenen Zahlen von den selbst eingetragegen unterscheiden zu können), wird er dir immer nur sagen können, dass etwas falsch ist, aber nicht wo.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

27-10-2011, 14:41
|
|
darkii
Registrierter Benutzer
|
|
Registriert seit: Oct 2011
Beiträge: 9
|
|
Es wäre für mich in Ordnung wen er dann zwei falsch makieren würde natürlich wäre es andersherum besser
|

27-10-2011, 14:53
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Du müsstest die fehlerhaften Stellen vorher ausfindig machen und beim Zusammenbauen der Tabelle an diesen Stellen z. B. ein bestimmtes class-Attribut hinzufügen. Ein weiteres Problem ist, dass du (soweit ich das sehe) die dritte Regel vergessen hast: Jede Zahl darf und muss genau ein Mal in jedem 3×3-Block vorkommen.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

27-10-2011, 14:58
|
|
darkii
Registrierter Benutzer
|
|
Registriert seit: Oct 2011
Beiträge: 9
|
|
Die hab ich bewusst weg gelassen da sie zu einer sudoku berechnung ja nicht nötig ist .
Fehler sind in dem Code bisslang noch keine eher muss ich eine problemlösung finden
Momentan mache ich ja leider nur fehlerhafte Spalten/ Zeilen ausfindig und welche Zahl in der Zeile fehlt.
Ps: Jedes Kästchen hatt bei mir die Atributte i1-i81 hast du das mit class attributen gemeint ?
Geändert von darkii (27-10-2011 um 15:10 Uhr)
|

27-10-2011, 15:57
|
|
darkii
Registrierter Benutzer
|
|
Registriert seit: Oct 2011
Beiträge: 9
|
|
Ich hab da grad ne kleine Idee zu meinem Problem das der User es beeinflussen kann
for ($i=0 ; $i<= 80 ;$i++) {
if ($_SESSION['sudoku'][$i]== " " || "") {
unset ( $_SESSION['sudoku'][$i] );
}
}
ich will damit meine Standard Array also die gebenen Werte extrahieren und diese dann mit einer neuen Vergleichen (Eine neue also eine die meine Tabelle ausfüllt) und sollte bei den gegebenen Keys was anders sein solls die dann mit der SESSION austauschen so würde ich verhindern das ein User das ganze manipuliert nur ist die Frage kann ich das umsetzten ?
Sry ich drücke mich bei sowas sehr unverständlich aus
Geändert von darkii (27-10-2011 um 16:52 Uhr)
|

27-10-2011, 17:21
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Zitat:
Zitat von darkii
for ($i=0 ; $i<= 80 ;$i++) {
if ($_SESSION['sudoku'][$i]== " " || "") {
unset ( $_SESSION['sudoku'][$i] );
}
}
|
Bitte Code immer in den entsprechenden Code-Tags posten (siehe Signatur). Der Teil hinter dem || ergibt immer false, meinst du vielleicht
PHP-Code:
$_SESSION['sudoku'][$i]== " " || $_SESSION['sudoku'][$i]== ""
Oder vielleicht sogar
PHP-Code:
trim($_SESSION['sudoku'][$i]) == ""
Was soll uns dieser Codeschnipsel sonst noch sagen? Das sieht aus, wie ein bisschen Session-Cleanup, aber wofür ist das im Kontext deines Problems gut?
Zitat:
Zitat von darkii
Sry ich drücke mich bei sowas sehr unverständlich aus 
|
Das glaube ich irgendwie auch langsam
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

28-10-2011, 08:19
|
|
darkii
Registrierter Benutzer
|
|
Registriert seit: Oct 2011
Beiträge: 9
|
|
Für den Kontext eher weniger aber fürs Verständniss und für die Verhinderung das User das Sudoku manipulieren.
Fürs Verständniss:
$Sudoku ist meine zufällige Array die ich aus einer Textdatei ziehe
$_Session["sudoku"] ist meiner Array die bei dem Klick auf den Ok Button wieder mitgenommen wird und dann in meine Tabelle eingetragen wird
$_POST ist quasi alles was in der Tabelle steht und vom User eingegeben wird sie wird dann in die Session geschrieben.
Nun würde ja meine $_POST die Session überschreiben und inteligente User (soll vorkommen) könnten Firebug/Dragonfly nutzen und die gegebenen Zahlen einfach ändern. Und deshalb mocht ich meine $-Session mit keys von leeren Einträgen aus der Array befreien um diese Werte dann mit der $_POST vergleichen um dadurch geänderte Werte wieder zu ändern
Klingt komplex ist aber so ^^ den nötigen Befehl dazu habe ich noch nicht gefunden ^^
Und zur Problemlösung an sich trägt es auch mal gar nichts bei
|

01-11-2011, 10:27
|
|
ronronron3005
Registrierter Benutzer
|
|
Registriert seit: Feb 2010
Ort: Hohenstein-Ernstthal
Beiträge: 44
|
|
Zitat:
Zitat von darkii
...
In semtlichen Foren in denen ich bis jetzt war wurde ich Grundlegend mit meiner Frage ignoriert...
|
Ausser bei SelfPHP
__________________
Wozu brauchen wir Kraftwerke, wenn der Strom aus der Steckdose kommt.
|

02-11-2011, 08:30
|
|
darkii
Registrierter Benutzer
|
|
Registriert seit: Oct 2011
Beiträge: 9
|
|
Aber da auch keine Lösung oder Hilfe ^^ Hier nochjemand etwas beizusteuern das mir helfen könnte ?
|

02-11-2011, 08:53
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Zitat:
|
Klingt komplex ist aber so ^^
|
Ich halte den Ansatz für grundsätzlich falsch.
Schaue dir den Datenfluss an.
Es gibt 2 Quellen:
1. Halb ausgefüllte Sudokus in der Datei
2. Die User Eingaben
Den Index auf das gerade verwendete Sudoku lagerst du in Session. Es gibt für den User keine Möglichkeit dieses zu manipulieren.
Vom User kommen NUR die Daten, welche er eingibt. Daran kann er soviel manipulieren, wie er will. Darf er ja, soll er ja auch sogar.
|

02-11-2011, 12:39
|
|
darkii
Registrierter Benutzer
|
|
Registriert seit: Oct 2011
Beiträge: 9
|
|
Das Problem ist blos immoment überschreibt die Eingabe die Daten die eingetragen werden ich muss eben nun schauen das ich das ganze teile...
Aber wichtiger wäre mir überhaupt das er die Fehler berechnen kann.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|