Leg’ deine Eier woanders.
*close*
Noch ein Thread zum gleichen Thema = Zwangspause.
Abfrage funktioniert nicht
Einklappen
Dieses Thema ist geschlossen.
X
X
-
Ich brauche nur ein paar Infos für meine Projektwoche für meine Schüler.
Es geht um PHP und SQL Datenbanken als Einführung. Da ich aber noch eine Freundin habe, fehlt mir die Zeit um mich auf das Projekt vorzubereiten. Daher meine andauernden Fragen. Die Antworten die ich erhalten habe, ermöglichten mir, mehr Zeit meinem 1. Hobby zu witmen, nämlich meine Freundin zu begatten.
Einen Kommentar schreiben:
-
Ich bin zwar noch nicht so sehr lange in diesem Forum aktiv, doch derartige Antworten gehen mir auch auf den Senkel.Zitat von Tastatur Beitrag anzeigenWenn doch jeder ein Selbststudium machen soll, wozu braucht er denn dieses Forum ? Das Forum ist dafür da, ohne ein Studium zu betreiben schnelle Hilfe zu haben. Dafür ist ds ganze Internet da. Ich leg euch gleich ein Ei hier in das Forum.
Ein Forum, unabhängig von der Art und den Schwerpunkten eines Forums, ist zum Austausch von Meinungen gedacht, zum Diskutieren und zur Hilfe zur Selbsthilfe. Die Selbsthilfe besteht nun einmal darin, dass man sich auch mal ein oder zwei Bücher über MySQL besorgt, sich zusätzlich noch weitere Quellen online reinsaugt und wenn man dann an einen Punkt nicht weiter weiß, in einem Forum nachfragt.
Also, entweder ist Programmierung Dein Hobby, dann opferst Du auch gern die Zeit dafür und beschäftigst Dich auch mit den Grundlagen und fängst mit einfacheren Anwendungen an. Oder aber Programmierung ist nicht Dein Hobby und Du möchtest nur ein paar Scripts für irgendwelche Seiten, die Geld abwerfen sollen, dann wirst Du keine fertige Lösung kostenlos gebacken bekommen, die all Deinen Vorstellungen gerecht wird und bist in einem Forum fehl am Platze.
Sicherlich ist ein Forum auch zur Beantwortung von einzelnen Fragen gut, jedoch dann nur um eine Richtung zu weisen oder einen Tipp zur Lösung zu geben, bei einfacheren Angelegenheiten auch mal einen brauchbaren Lösungsweg aufzuzeigen, nicht aber um etwas auszuarbeiten, wozu ein anderer keine Lust hat.Zuletzt geändert von Melewo; 23.04.2013, 18:23.
Einen Kommentar schreiben:
-
Nein, ist es nicht.Zitat von Tastatur Beitrag anzeigenWenn doch jeder ein Selbststudium machen soll, wozu braucht er denn dieses Forum ? Das Forum ist dafür da, ohne ein Studium zu betreiben schnelle Hilfe zu haben.
Einen Kommentar schreiben:
-
Ja. Ja. Alles ist umsonst. Auch das vorkauen Anderer?Zitat von Tastatur Beitrag anzeigenWenn doch jeder ein Selbststudium machen soll, wozu braucht er denn dieses Forum ? Das Forum ist dafür da, ohne ein Studium zu betreiben schnelle Hilfe zu haben. Dafür ist ds ganze Internet da. Ich leg euch gleich ein Ei hier in das Forum.
Dann leg dein Ei auf deine Lochkarten.
Schnelle Hilfe: Ja. Bekommste hier oft. Hab ich auch schon bekommen.
Aber ohne sich mit Grundlagen zu beschäftigen, kommste hier nicht weit.
Auto fahren willste, aber keine Fahrschule besuchen bzw. Grundlagen lernen machen?
Einen Kommentar schreiben:
-
Wenn doch jeder ein Selbststudium machen soll, wozu braucht er denn dieses Forum ? Das Forum ist dafür da, ohne ein Studium zu betreiben schnelle Hilfe zu haben. Dafür ist ds ganze Internet da. Ich leg euch gleich ein Ei hier in das Forum.Angehängte Dateien
Einen Kommentar schreiben:
-
Dann lese dir das Handbuch dazu [COLOR=Red]endlich[/COLOR] mal durch. Dann weist du das (hoffentlich)Zitat von Tastatur Beitrag anzeigenFür mich stellt ich die Frage muß ich die Datenbank mit der Spalte "string"
auf ....
CHAR ()
VARCHAR ()
TINYTEXT
TEXT
BLOB
MEDIUMTEXT
MEDIUMBLOB
LONGTEXT
LONGBLOB
TINYINT ()
SMALLINT ()
MEDIUMINT ()
INT ()
BIGINT ()
FLOAT
DOUBLE (,)
DECIMAL (,)
setzen damit er dies hier " 3,12,13,16,23,41 " erkennt.
Meinen Post oben haste dir sowieso nicht durchgelesen. Geschweige den Hinweis auf REGEX
Einen Kommentar schreiben:
-
Wenn dieser Wert hier " 3,12,13,16,23,41 " in der Datenbank steht und wird in Eingabefeld auch so " 3,12,13,16,23,41 " eingegeben, dann muß er auch gefonden werden.
Für mich stellt ich die Frage muß ich die Datenbank mit der Spalte "string"
auf ....
CHAR ()
VARCHAR ()
TINYTEXT
TEXT
BLOB
MEDIUMTEXT
MEDIUMBLOB
LONGTEXT
LONGBLOB
TINYINT ()
SMALLINT ()
MEDIUMINT ()
INT ()
BIGINT ()
FLOAT
DOUBLE (,)
DECIMAL (,)
setzen damit er dies hier " 3,12,13,16,23,41 " erkennt.
Einen Kommentar schreiben:
-
Tastatur: Grundlagen von Datenbanken unbedingt lernen und beachten
Das musste und habe ich auch lernen und verstehen müssen.
Jeder Datensatz ist eindeutig und nicht irgendein String, der dann per PHP aufgedröselt werden muss. Da brauchste auch keine Datenbank wie MySql für und dann kannte bei Textdateien bleiben. Bei 40.000 Datensätzen:
Also bleib bei MySql und jede einzelne Zahl ist ein Datenfeld.
Klar kann man auch mit SQL-Abfragen eine Regex innerhalb eines Strings durchführen, aber das würde deine Kenntnisse übersteigen.
Solltest du dir das dennoch zutrauen, dann lies dazu das entsprechende Tutorial hier: MySQL :: MySQL 5.1 Referenzhandbuch :: G Beschreibung der MySQL-Syntax für reguläre Ausdrücke
Wenn du das verstanden hast, dann kannste weiter mit Stringsuche in SQL weitermachen
Einen Kommentar schreiben:
-
Das ist großer Quatsch und bringt viele Probleme. Kommando retour.Zitat von Tastatur Beitrag anzeigenIch hab daher die Datenbank einfacher gestalltet, sie hat jetzt nur 2 Spalten. "id" und "string". In der Spalte string sind die Lottozahlen durch Komma getrennt.
Einen Kommentar schreiben:
-
Ich hab das so gemacht wie du beschreiben hast, es kommt auch keine Fehlermeldung, jedoch auch kein Ergebnis.
Ich hab daher die Datenbank einfacher gestalltet, sie hat jetzt nur 2 Spalten. "id" und "string". In der Spalte string sind die Lottozahlen durch Komma getrennt. In das Eingabefeld bzw. in die 6 Eingabefleder sollen dann solche 3,12,13,16,23,41 Zahlenkolonnen eingegeben werden.
Die Datenbank sieht wie folgt aus:
"id" wurde mit INT 20 und "string" mit VARCHAR 20 vergeben.
id; string
1; 3,12,13,16,23,41
2; 3,12,18,30,32,49
3; 12,14,23,24,34,36
4; 4,13,23,30,36,44
5; 5,6,31,39,44,49
6; 6,18,22,29,37,44
7; 4,8,12,16,27,44
8; 9,24,26,37,44,46
9; 5,20,21,26,31,47
10; 8,10,22,26,31,37
$abfrage="SELECT id FROM lotto WHERE
string in ($zahl1,$zahl2,$zahl3,$zahl4,$zahl5,$zahl6)";
Die Abfrage funktioniert, jedoch kommt ein Ergebnis raus
was nicht stinmmen kann. Kann es sein das der "string" nicht erkannt wird?
Oder was mach ich falsch ?
Mittlerweile hab ich festgestellt, wenn ich im Eingabefeld Zahlen ohne (,) Komma eingebe, funktioniert die Abfrage, nur mit Komma geht nichts. Wo leigt der Fehler?Zuletzt geändert von Tastatur; 23.04.2013, 09:04.
Einen Kommentar schreiben:
-
Siehst du, es geht doch, wenn man mal einen kleinen Denkanstoß bekommt.Zitat von Tastatur Beitrag anzeigenDas Problem das die Zahlen drin stehen bleiben habe ich so gelöst.
<input type="text" name="zahl1" value="<?php echo $_POST['zahl1']; ?>" />
Dazu gibst du die (eine) Zahlenkette (z.B. 10, 14, 20, 25, 33, 41) in ein Textfeld ein und machst nach dem Absenden ein Array daraus.Zitat von Tastatur Beitrag anzeigenIch meine damit das die Datenbankstruktur unverändert ist.
Sie sieht wie folgt aus:
id, zahl1, zahl2, zahl3, zahl4, zahl5, zahl6
1, 10, 14, 20, 25, 33, 41
2, 9, 18, 23, 30, 41, 45 Beispieldaten
3, 15, 19, 29, 35, 36, 39
Es soll möglich gemacht werden das komplette Zahlen Array mit past und copy in ein Datenfeld eingefügt werden und dann die Abfrage durchlaufen.
Die Funktion array_unique entfernt doppelte Elemente aus einem Array und gibt das neue Array zurück.PHP-Code:$zahlen = explode(",", $_POST['zahlen']);
Hiermit machst du die Eingabeprüfung, ob Zahlen doppelt eingegeben wurden.
Sind 6 Elemente drin, gehts weiter, wie gehabt, allerdings diesmal mit dem Zahlenarray.PHP-Code:if(count(array_unique($zahlen)) < 6){ //Wurden doppelte Elemente entfernt, sind weniger als 6 Zahlen im Array
echo "Mindestens eine der Zahlen ".implode(" | ", $zahlen)." wurde doppelt eingegeben.";
exit;
}
GrußPHP-Code:$query="SELECT id FROM lotto WHERE
$zahlen[0] in (zahl1, zahl2, zahl3, zahl4, zahl5, zahl6) and
$zahlen[1] in (zahl1, zahl2, zahl3, zahl4, zahl5, zahl6) and
$zahlen[2] in (zahl1, zahl2, zahl3, zahl4, zahl5, zahl6) and
$zahlen[3] in (zahl1, zahl2, zahl3, zahl4, zahl5, zahl6) and
$zahlen[4] in (zahl1, zahl2, zahl3, zahl4, zahl5, zahl6) and
$zahlen[5] in (zahl1, zahl2, zahl3, zahl4, zahl5, zahl6)";
Günni
PS.: Was soll denn mal daraus werden? Die ultimative "Wie waren die Lottozahlen der letzten 40 Jahre-Anwendung"?
Einen Kommentar schreiben:
-
Ich meine damit das die Datenbankstruktur unverändert ist.
Sie sieht wie folgt aus:
id, zahl1, zahl2, zahl3, zahl4, zahl5, zahl6
1, 10, 14, 20, 25, 33, 41
2, 9, 18, 23, 30, 41, 45 Beispieldaten
3, 15, 19, 29, 35, 36, 39
Es soll möglich gemacht werden das komplette Zahlen Array mit past und copy in ein Datenfeld eingefügt werden und dann die Abfrage durchlaufen.
Einen Kommentar schreiben:
-
Was sind denn "solche Datensätze"? Was unterscheidet die denn von anderen?
Einen Kommentar schreiben:
-
Das Problem das die Zahlen drin stehen bleiben habe ich so gelöst.
<input type="text" name="zahl1" value="<?php echo $_POST['zahl1']; ?>" />
Zahlen Array abfragen
Wie kann ich einen Zahlen Array bei einer Datenbank Abfragen?
Es soll unten stehende 12 Datensätze bei einer bestehenden Datenbank
die auch solche Datensätze enthält abgefragt werden.
Wer hat hier eine Lösung wie die Abfrage gestaltet werden kann?
11,49,35,34,1,26
36,9,28,3,37,32
17,39,6,18,26,35
36,40,1,44,19,25
28,2,4,35,5,27
43,20,48,42,10,4
37,34,18,2,10,22
20,27,34,43,24,47
37,49,28,3,24,23
10,25,29,14,12
36,25,7,21,29,5
37,35,1,17,48,4
Elegant wäre es, wenn man in eine Eingabefeld die Zahlenkolonnen mit paste und copy
einfügen könnte.
Einen Kommentar schreiben:
Einen Kommentar schreiben: