|
|
|
23.01.20, 10:04
|
#1
|
Anfänger
Registriert seit: Nov 2019
Beiträge: 32
Bedankt: 8
|
[Erledigt] Frage zu Text aus SQLITE und Get ID
Hallo. Ich soll ein kleines online Textspiel erstellen, also ausschließlich Text mit 1-2 Links, die zu weiterem Text mit 1-2 Links führen.
Wäre get ID dafür sinnvoll? Und wie setze ich das um?
Im Umfang soll es ~100 Texte + Links sein.
Wie müsste ich das für eine SQLITE umändern?
(Der Acc der DB ist ausschließlich auf lesen, somit brauche ich mir um die bösen Hacker keine Gedanken machen.)
Mein Level ist kurz nach absoluter Neuling und ich werde das Wissen nach der Aufgabe auch nicht weiter benötigen, daher habe ich nicht wirklich vor, mich durch das php manual zu lesen.
Ich Danke für jeden Tipp.
P.S: Es soll keiner sagen, ich würde es nicht selbst versuchen. Wer Fehler findet, möge bitte seinen Code posten. Und obriges nicht vergessen. Danke.
Zitat:
<?php
// Verbindung zum Datenbankserver
mysql_connect("host", "benutzer", "passwort") or die (mysql_error ());
// Datenbank auswählen
mysql_select_db("dbname") or die(mysql_error());
// Daten aus der Datenbank abrufen, wobei der Wert von id aus in der URL berücksichtigt wird
$strSQL = "SELECT * FROM test WHERE id=" . $_GET["id"];
$rs = mysql_query($strSQL);
// Schleifendurchlauf durch $rs
while($row = mysql_fetch_array($rs)) {
// Schreibe die Daten der Person
echo "<dt>Text: </dt><dd>" . $row["Text"] . "</dd>";
echo "<dt>Link: </dt><dd>" . $row["Link"] . "</dd>";
}
// Schließt die Datenbankverbindung
mysql_close();
?>
|
Geändert von RandomUser1111 (26.01.20 um 22:39 Uhr)
Grund: Frage wurde sehr ausführlich beantwortet
|
|
|
25.01.20, 00:37
|
#2
|
Stammi
Registriert seit: Jan 2010
Beiträge: 1.145
Bedankt: 1.445
|
War jetzt die aufgabe dass du das programmieren sollst oder war sie, dass du jemanden finden sollst der das für dich programmiert?
Der schnipsel .php ist ja ganz nett, aber welchen teil deiner aufgabe bzw. welchen teilaspekt soll der erfüllen und wie hast du vor, den rest zu lösen? Und in welchem zusammenhang steht der schnipsel zu thread titel "sqlite..."?
Beschreib es ruhig einfach mal ohne code, vielleicht hilft es dir zu verstehen was du schon hast und was dir noch fehlt.
__________________
Irgendwie komisch, dass das was wir gemeinhin als "unmenschlich" bezeichnen, ausschließlich Verhalten von Menschen beschreibt.
Geändert von nichdiemama (25.01.20 um 00:43 Uhr)
|
|
|
25.01.20, 13:18
|
#3
|
Anfänger
Registriert seit: Nov 2019
Beiträge: 32
Bedankt: 8
|
Zitat:
Zitat von nichdiemama
War jetzt die aufgabe dass du das programmieren sollst oder war sie, dass du jemanden finden sollst der das für dich programmiert?
Der schnipsel .php ist ja ganz nett, aber welchen teil deiner aufgabe bzw. welchen teilaspekt soll der erfüllen und wie hast du vor, den rest zu lösen? Und in welchem zusammenhang steht der schnipsel zu thread titel "sqlite..."?
Beschreib es ruhig einfach mal ohne code, vielleicht hilft es dir zu verstehen was du schon hast und was dir noch fehlt.
|
Nun, ich würde den code nehmen und dann wie folgt vorgehen:
ID1: Text1 | Link1 Link2
ID2: Text 2 | Link 1 Link 2
Und die dann eben untereinander verlinken, wenn es passt.
Das S***** dann mit foo.bar/index.php?id=1 starten und fertig.
Warum SQLITE? Nun, ich würde es lieber in eine Datei als eine DB packen, kann man mir folgen? Man kann es viel einfacher weitergeben, als erst via import in eine MySQL zu laden.
Lieber wäre mir foo.bar/1 als startlink zu haben,
aber mir ist nicht klar wie das gehen soll.
Gesehen habe ich das schon oft, das eben foo.bar/1 und nicht foo.bar/1/ oder foo.bar/index.php?id=1 da steht.
MfG
|
|
|
26.01.20, 05:06
|
#4
|
Web-Developer
Registriert seit: May 2016
Beiträge: 86
Bedankt: 39
|
- mysql ist, wie der Name schon sagt für MySQL und außerdem gibt es in PHP schon Ewigkeiten kein mysql mehr, sondern nur noch mysqli. (Am Besten die Quelle für diesen Code-Schnipsel unwiderruflich löschen)
- SQL ist eine Datenbanksprache & funktioniert mit MySQL, SQLlite usw. (soll heißen, die Syntax der Datenbank-Abfragen kann bleiben...)
- Nutze [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ], es ist nicht nur besser, sondern kann mit MySQL, SQLite und noch mehr umgehen (je nach dem welche Treiber für PDO auf dem Server installiert sind).
- Der abschließende PHP-Tag ?> ist nicht nötig, wenn daraufhin keine Zeichen mehr folgen
Zitat:
Zitat von RandomUser1111
(Der Acc der DB ist ausschließlich auf lesen, somit brauche ich mir um die bösen Hacker keine Gedanken machen.)
|
Das reicht um an alle Daten zu kommen.
|
|
|
Folgendes Mitglied bedankte sich bei MuetzeOfficial:
|
|
26.01.20, 08:51
|
#5
|
Anfänger
Registriert seit: Nov 2019
Beiträge: 32
Bedankt: 8
|
Hast du den auch eine Version die du empfehlen kannst, auf basis des codes den ich bereits gepostet habe? Ansonsten ist das hier unnötige dissusion, da für mich unnütz und eigentlich auch Zeitverschwendung, so nützlich die Hinweise auch sein mögen.
Den, wie ich oben schon erwähnte:
Zitat:
Mein Level ist kurz nach absoluter Neuling und ich werde das Wissen nach der Aufgabe auch nicht weiter benötigen, daher habe ich nicht wirklich vor, mich durch das php manual zu lesen.
|
Und an welche Daten sollten sie kommen, wenn sie den einen Weg fänden?
Alle Textlinks?
|
|
|
26.01.20, 13:55
|
#6
|
Web-Developer
Registriert seit: May 2016
Beiträge: 86
Bedankt: 39
|
Von was eine Version? Bei PHP wäre es 7.2+ zu empfehlen. Bei SQLite ist Version 3 aktuell.
Edit: Ja. ID nutzen ist eigentlich fast immer sinnvoll. Gibt halt mehr Performance und Du triffst eine Zeile 100%.
Zitat:
Zitat von RandomUser1111
Und an welche Daten sollten sie kommen, wenn sie den einen Weg fänden?
Alle Textlinks?
|
Alle Daten die in der Datenbank, die gespeichert sind und zusätzlich kann man auch das Passwort ändern und die Datenbank "übernehmen".
Aber, wenn Du mit PDO Dein GET-Reuqest bindest, hast Du eh schon ein Inject-Schutz....
Geändert von MuetzeOfficial (26.01.20 um 14:06 Uhr)
|
|
|
Folgendes Mitglied bedankte sich bei MuetzeOfficial:
|
|
26.01.20, 14:44
|
#7
|
Web-Developer
Registriert seit: May 2016
Beiträge: 86
Bedankt: 39
|
Beispiel
Ich habe jetzt folgende Tabelle mit dem Namen test in der Datenbank dbname erstellt (Namen klein geschrieben...):
Code:
CREATE TABLE `dbname`.`test` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT , `text` TEXT NOT NULL , `link` VARCHAR(255) NOT NULL , PRIMARY KEY (`id`));
Dazu habe ich ein Beispiel erstellt...
file.php listet alle Einträge auf.
file.php?id=1 zeigt Eintrag mit ID 1
Und wenn der Eintrag nicht vorhanden ist, kommt ein entsprechend eine Meldung...
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
Geändert von MuetzeOfficial (26.01.20 um 14:52 Uhr)
|
|
|
Folgendes Mitglied bedankte sich bei MuetzeOfficial:
|
|
26.01.20, 16:24
|
#8
|
Anfänger
Registriert seit: Nov 2019
Beiträge: 32
Bedankt: 8
|
Zitat:
Zitat von MuetzeOfficial
Ich habe jetzt folgende Tabelle mit dem Namen test in der Datenbank dbname erstellt (Namen klein geschrieben...):
Code:
CREATE TABLE `dbname`.`test` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT , `text` TEXT NOT NULL , `link` VARCHAR(255) NOT NULL , PRIMARY KEY (`id`));
Dazu habe ich ein Beispiel erstellt...
file.php listet alle Einträge auf.
file.php?id=1 zeigt Eintrag mit ID 1
Und wenn der Eintrag nicht vorhanden ist, kommt ein entsprechend eine Meldung...
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
|
Ok, allein schon deswegen weil du dir soviel Mühe gemacht hast, werde ich mal versuchen die Tage mir das Wissen anzueignen, was du mir da mühevoll zusammengestellt hast. Vielen Dank!
Was mir nur aufgefallen ist, ist das alle Ausgaben doppelt ausgegeben werden. ^^
Kannst du mir vielleicht zusätzlich noch sagen,
wie foo.bar/foo umgesetzt wird? Ich habe das letztens gesehen und war verwirrt wie das funktionieren kann, so ganz ohne id, / und ähnlichem. Hier genauso: [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
Übrigens eine sehr tolle Webseite! Ich habe soetwas ähnliches.
P.S: Bei News fehlen alle Bilder.
Geändert von RandomUser1111 (26.01.20 um 17:10 Uhr)
|
|
|
26.01.20, 17:11
|
#9
|
Web-Developer
Registriert seit: May 2016
Beiträge: 86
Bedankt: 39
|
Kommt darauf an, was Du mit foo & bar meinst. Foo & Bar wird nur gerne als Beispielnamen für Funktionen, Kassen usw. genommen. Eine Funktion oder der gleichen ist beides nicht.
Die News ziehe per RSS von foruncut. Kann sein, dass die da was geändert haben. Muss ich mal schauen, so mal sich die Seite eh nicht wirklich lohnt, von den Besucherzahlen her.
Der Link kommt aus der Datenbank. Ich schreibe per HTACCESS & Mod Rewrite die URLs um:
Code:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/?$ index.php?include=$1 [L]
Damit bekomme ich ja immer ein GET-Request (GET include) und damit kann ich ja quasi schauen, ob dafür ein passender Eintrag in der Datenbank ist oder eine andere Seite aufgerufen wird, wie Impressum usw. und damit weiter arbeiten und wenn Nichts trifft halt ein 404 Error ausgeben.
|
|
|
Folgendes Mitglied bedankte sich bei MuetzeOfficial:
|
|
26.01.20, 17:31
|
#10
|
Anfänger
Registriert seit: Nov 2019
Beiträge: 32
Bedankt: 8
|
Zitat:
Zitat von MuetzeOfficial
Kommt darauf an, was Du mit foo & bar meinst. Foo & Bar wird nur gerne als Beispielnamen für Funktionen, Kassen usw. genommen. Eine Funktion oder der gleichen ist beides nicht.
Die News ziehe per RSS von foruncut. Kann sein, dass die da was geändert haben. Muss ich mal schauen, so mal sich die Seite eh nicht wirklich lohnt, von den Besucherzahlen her.
Der Link kommt aus der Datenbank. Ich schreibe per HTACCESS & Mod Rewrite die URLs um:
Code:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/?$ index.php?include=$1 [L]
Damit bekomme ich ja immer ein GET-Request (GET include) und damit kann ich ja quasi schauen, ob dafür ein passender Eintrag in der Datenbank ist oder eine andere Seite aufgerufen wird, wie Impressum usw. und damit weiter arbeiten und wenn Nichts trifft halt ein 404 Error ausgeben.
|
Achja, ist ja interessant! Dankeschn für die Aufklärung!
Habe das mit der htaccess gleich mal ausprobiert und es hat auf anhieb geklappt!
Die Links werden übrigens nur als Text und nicht als Link behandelt.
Also bleibt genau das. Kein Link, nur Text.
Das doppelte taucht nur bei der Ausgabe von allen Einträgen auf.
P.S: Soll ich deine URL mal zensieren? Datenschutz und so. Ist vielleicht in diesem Forum besser.
EDIT: Die Links tauchen jetzt auf, habe es mit
ersetzt, dann ging es.
|
|
|
26.01.20, 18:19
|
#11
|
Web-Developer
Registriert seit: May 2016
Beiträge: 86
Bedankt: 39
|
Möglich, ich habe das schnell in 5 Minuten getippt ohne zu kontrollieren.
Im HREF solltest Du nur [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ] statt [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ] verwenden.
|
|
|
26.01.20, 18:28
|
#12
|
Anfänger
Registriert seit: Nov 2019
Beiträge: 32
Bedankt: 8
|
Zitat:
Zitat von MuetzeOfficial
|
Ich bin hier etwas überfordert... es taucht kein Linktext auf...
Zitat:
echo '<td>Link: </td><td><a href=' . $row["link1"] . '>rawurlencode('$row['linktext2'])'')</a></td><tr>';
echo '<td>Link: </td><td><a href=' . $row["link2"] . '>' . $row["linktext2"] . '</a></td>';
|
habe ich versucht. Grrr!
|
|
|
26.01.20, 18:54
|
#13
|
Web-Developer
Registriert seit: May 2016
Beiträge: 86
Bedankt: 39
|
Die Zahlen müssen weg. Wenn die Spalten link & linktext heißen. Dann muss es so aussehen (Groß- & Kleinschreibung, wie in der Datenbank):
PHP-Code:
echo '<td>Link: </td><td><a href='.rawurlencode($row['link']).'>'.htmlspecialchars($row['linktext']).'</a></td><tr>';
Der oberste sieht auch recht falsch aus. Wenn Du eine gute IDE, wie PHPStorm oder so nutzt, zeigt Dir diese, die Fehler auch an....
|
|
|
Folgendes Mitglied bedankte sich bei MuetzeOfficial:
|
|
26.01.20, 19:11
|
#14
|
Anfänger
Registriert seit: Nov 2019
Beiträge: 32
Bedankt: 8
|
Zitat:
Zitat von MuetzeOfficial
Die Zahlen müssen weg. Wenn die Spalten link & linktext heißen. Dann muss es so aussehen (Groß- & Kleinschreibung, wie in der Datenbank):
PHP-Code:
echo '<td>Link: </td><td><a href='.rawurlencode($row['link']).'>'.htmlspecialchars($row['linktext']).'</a></td><tr>';
Der oberste sieht auch recht falsch aus. Wenn Du eine gute IDE, wie PHPStorm oder so nutzt, zeigt Dir diese, die Fehler auch an....
|
Dankeschön!
Vielleicht sollte ich mir doch, wenigstens die Grundlagen aneignen...
Nun noch eine letzte Frage, dann gebe ich endlich Ruhe:
Warum wird es doppelt angezeigt, wenn alle Einträge aufgelistet werden sollen?
Zitat:
} else {
$stmt = $pdo->prepare('SELECT text FROM test');
$stmt->execute();
while ($row = $stmt->fetch()) {
echo '<tr>';
echo '<td colspan="4">Willkommen!</td>';
echo '</tr>';
}
}
?>
|
Zeigt:
Willkommen!
Willkommen!
an. Also doppelt.
|
|
|
26.01.20, 19:24
|
#15
|
Web-Developer
Registriert seit: May 2016
Beiträge: 86
Bedankt: 39
|
Du durchläufst da ja eine [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]-Schleife. Und die ist ja dafür da, jeden Datenbank-Eintrag einzeln auszugeben. Und wenn 2 Einträge vorhanden sind, dann kommt auch 2 mal eine Ausgabe.
|
|
|
Folgendes Mitglied bedankte sich bei MuetzeOfficial:
|
|
26.01.20, 19:34
|
#16
|
Anfänger
Registriert seit: Nov 2019
Beiträge: 32
Bedankt: 8
|
Zitat:
Zitat von MuetzeOfficial
Du durchläufst da ja eine [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]-Schleife. Und die ist ja dafür da, jeden Datenbank-Eintrag einzeln auszugeben. Und wenn 2 Einträge vorhanden sind, dann kommt auch 2 mal eine Ausgabe.
|
Ah ich verstehe. Und wenn ich jetzt nur den text ausgeben lassen müsste (wie in meinem falle) hätte ich es nur löschen müssen.
Warum
Zitat:
echo '<td colspan="4">Willkommen!<tr><a href="/1">Starte das Spiel</a></td>';
|
jetzt
Zitat:
Starte das Spiel
Willkommen!
|
und nicht
Zitat:
Willkommen!
Starte das Spiel
|
anzeigt bleibt aber noch ein Rätsel.
Übrigens:
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
Das hier ist nur dank dir und deiner Hilfe möglich gewesen!
|
|
|
26.01.20, 19:57
|
#17
|
Web-Developer
Registriert seit: May 2016
Beiträge: 86
Bedankt: 39
|
Du bringst irgendwie immer die HTML-Tags durch einander....
colspan
Wenn Du in einer Zeile 4 Spalten hast, aber in der nächsten Zeile nur eine Spalte, dann verbindest Du 4 Spalten mit colspan="4"
Dazwischen ist bei Dir ein <tr>...
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
___
Fehler im HTML-Text kannst Du Dir mit dem [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ] anzeigen lassen.
|
|
|
Folgendes Mitglied bedankte sich bei MuetzeOfficial:
|
|
26.01.20, 22:34
|
#18
|
Anfänger
Registriert seit: Nov 2019
Beiträge: 32
Bedankt: 8
|
Zitat:
Zitat von MuetzeOfficial
Du bringst irgendwie immer die HTML-Tags durch einander....
colspan
Wenn Du in einer Zeile 4 Spalten hast, aber in der nächsten Zeile nur eine Spalte, dann verbindest Du 4 Spalten mit colspan="4"
Dazwischen ist bei Dir ein <tr>...
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
___
Fehler im HTML-Text kannst Du Dir mit dem [ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ] anzeigen lassen.
|
Ich werde versuchen es mir zu merken, Dankeschön!
Ja, wir verstehen alle nicht warum wir mit programmierung beschäftigt werden. Es ist ja im Prinzip nützlich für die Zukunft, aber das sollte man vielleicht überdenken, wenn die Klasse aus Zeichnern besteht...
EDIT: Falls es jemanden der das mal ließt, interessiert:
Heute haben sich mehrere an unseren Lehrer gewandt um den Grund für diese Aufgabe zu erfahren:
Der Grund der Aufgabe, war einerseits sich mit alten aber doch modernen Mitteln der Kunst auseinanderzusetzen und ein Bewusstsein dafür zu schaffen, welche Arbeit in diesem steckt.
Darum sollte auch kein Programm zum erstellen (Inform, TADS, Quest) genutzt werden.
Unter diesen Gesichtspunkten ist die Aufgabe durchaus als lehrreich von uns eingestuft worden.
Es wäre nur wesentlich motivierender gewesen, das vorher gesagt bekommen zu haben.
Wir sind übrigens auf einer Kunsthochschule, keiner "normalen". Just for information.
Geändert von RandomUser1111 (27.01.20 um 08:19 Uhr)
|
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:18 Uhr.
().
|