Antworten auf deine Fragen:
Neues Thema erstellen

[mysql] Content aus der Datenbank auslesen und ausgeben

Shran

Nicht mehr ganz neu hier

Hi,

um folgenden Code geht es:
PHP:
 <?php
$mysqlhost="localhost";
$mysqluser="root";
$mysqlpwd="";
$mysqldb="root";
$action="1";

$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die
("Verbindungsversuch fehlgeschlagen");

mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht wählen.");

$sql = 'SELECT * from content';

$id_query = mysql_query($sql) or die("Anfrage nicht erfolgreich");

while ($con = mysql_fetch_array($id_query)){

echo$con["titel"];
echo$con["content"];
}
?>
So weit so gut, ich kann jetzt Titel und Content aus der Datenbank auslesen und ausgeben, aber ich will nur einen speziellen ausgeben!
z.b. den mit der ID 1(bei action schon vorgesehen)
Wie kann ich jetzt Content und Titel nur für ID 1 ausgeben lassen?

Hier noch mal die Datenbank:
id| content | titel
Beispiel:
0| Testseite| Home

Danke für eure Hilfe ;)
 
Zuletzt bearbeitet von einem Moderator:

Duddle

Posting-Frequenz: 14µHz

AW: Problem mit mysql

Das machst du, indem du deine Abfrage ("SELECT ....") weiter einschränkst. Wie das geht? Nun, zu SQL gibt es mehr als viele Tutorials, Google spuckt direkt auch eine schöne Einstiegsseite aus, die du in den ersten paar Kapiteln durchlesen und verstehen solltest. Ohne diese Grundlagen kommst du nicht allzu weit in der Datenbankarbeit.


Duddle
 

Shran

Nicht mehr ganz neu hier

AW: Problem mit mysql

ja das wusste ich auch^^ nur wie soll ich die id jetzt immer ändern?
also mit action variabel machen? oder vlt. ne funktion schreiben??
 

splasch

Nicht mehr ganz neu hier

AW: Problem mit mysql

Über eine Variable kanste die nummer beliebig ändern.

Du mußt dich schon genauer ausdrücken was du vor hast bzw woher das Script wissen soll welche Id jetzt genohmen werden soll.

Mfg Splasch
 

Shran

Nicht mehr ganz neu hier

AW: [mysql] Content aus der Datenbank auslesen und ausgeben

So:
$sql = 'SELECT * from content WHERE id='.$action.'';

Ja mein Problem ist nur, wie kann ich das jetzt während der Laufzeit ändern.
Angenommen ich hab 3 Links und will auf den 3 Seiten dann 3 unterschiedliche Inhalte haben, z.b. von id 2, 3 und 6 ;)

Das ist jetzt auch mein Problem.
Hier mal das fertige Script, habs jetzt hinbekommen:
PHP:
<?
if(isset($_GET['action']))
{
   $action = $_GET['action'];
 //echo$action;
 $sql = 'SELECT * from content WHERE id='.$action.'';

$id_query = mysql_query($sql) or die("Anfrage nicht erfolgreich");

while ($con = mysql_fetch_array($id_query)){

echo"<b><u>".$con["titel"]."
</u></b>";

echo$con["content"];

}}
else if($action == "0"){

 $sql = 'SELECT * from content WHERE id= 0';
 
$id_query = mysql_query($sql) or die("Anfrage nicht erfolgreich");

while ($con = mysql_fetch_array($id_query)){

echo"<b><u>".$con["titel"]."
</u></b>";

echo$con["content"];
}}
?>
Jetzt ist nur noch die Frage ob es vor SQL Inejctions sicher ist???
 
Zuletzt bearbeitet:

MyBad

localhorst

AW: [mysql] Content aus der Datenbank auslesen und ausgeben

Hallo!

gib doch einfach jedem Link eine Variable mit.
Zum Beispiel:
<a href="index.php?inhalt=1">Link 1</a>

Dann kannst du diese Variable aus der url dann in die $action laden:
$action = $_GET["inhalt"]; // In der Variable steht dann 1

Gruß
Tim

EDIT: Hab wohl deinen letzten Post überlesen ...
EDIT 2: Ist nicht sicher vor mysql-Injections. Du überprüfst die übergebene Variable ja nicht weiter. Dies bedeutet ich könnte noch weiteres SQL anhängen.
 
Zuletzt bearbeitet:

stroyer

Aktives Mitglied

AW: [mysql] Content aus der Datenbank auslesen und ausgeben

Bezüglich SQL-Injection: Wenn es sich bei $_GET['inhalt'] nur um eine zahl handeln kann, kann man die Query per $_GET['inhalt']*=1; schützen.
Ungültige Zahlen sollten dann aber abgefangen werden (Wenn fetch ein leeres Array liefert)
 

Shran

Nicht mehr ganz neu hier

AW: [mysql] Content aus der Datenbank auslesen und ausgeben

Ich kenne schattenbaum ;)
Ja es handelt sich nur um eine Zahl.
Ich werd deine Anweisung mal testen... mal schauen wie man das noch schützen kann.

edit:
Mit
$_GET['inhalt']*=1
soll ich das dann schützen?
gut bei mir ist Inhalt = action, aber jetzt frage ich mich wofür die eins steht?
 
Zuletzt bearbeitet:

splasch

Nicht mehr ganz neu hier

AW: [mysql] Content aus der Datenbank auslesen und ausgeben

Gemeint ist damit das du einen 2 Parameter übergibst.

PHP:
<a href="index.php?inhalt=seite&page=1">Link 1</a>
#Schützen kannst du dich auch einfach in dem du den Get wert in intger umwandelst.

$page=(int)$_GET['page'];
$inhalt=mysql_escape_string($_GET['inhalt']);

SELECT  
 *  
FROM  
 content 
WHERE 
 id='$page';

Mfg Splasch
 
D

Dyne

Guest

AW: [mysql] Content aus der Datenbank auslesen und ausgeben

Um eine unbekannte Eingabe in eine Zahl umzuwandeln solltest du einen Cast-Operator verwenden. Das sieht dann so aus:

PHP:
 $sql = 'SELECT * from content WHERE id=' . (int)$action;
(int) ist ein Cast-Operator, er wandelt $action in ein Integer (also eine blanke Zahl) um, das keinen schadhaften SQL-Code mehr enthalten kann.



Alternativ kannst du auch die Funktion intval($action) benutzen.

Die Methode mit dem $action*=1 funktioniert prinzipiell genauso. (Die Eingabe wird mit 1 multipliziert und dabei in eine Zahl umgewandelt.) Sauberer ist allerdings die Werkzeuge zu nutzen, die PHP einem bietet.
 

stroyer

Aktives Mitglied

AW: [mysql] Content aus der Datenbank auslesen und ausgeben

So weit ich mitbekommen hab beinhaltet $inhalt die id und es wird keine zweite übergeben. Umwandeln würde ich die Variable schon bei $action=(int)$_GET['inhalt'];
Dann geht nähmlich $sql = "SELECT * from content WHERE id=$action";
 
D

Dyne

Guest

AW: [mysql] Content aus der Datenbank auslesen und ausgeben

Ja, mir ging es eher darum zu erklären was das *=1 bedeutet, bzw. wie man es besser macht. Wann du umwandelst ist eigentlich schnuppe.
 

splasch

Nicht mehr ganz neu hier

AW: [mysql] Content aus der Datenbank auslesen und ausgeben

In der Art genau kenn ich das auch nicht.
Aber ich denke es handelt sich dabei um eine normale Rechen Operation wie bei += oder -=

Das Bedeudet also Ergebniss = GetWert * 1

Mfg Splasch
 
D

Dyne

Guest

AW: [mysql] Content aus der Datenbank auslesen und ausgeben

$a *= 1 ist die verkürzt Schreibweise für $a = $a * 1.
Grundsätzlich ist das auch völlig richtig und wandelt $a in ein Integer um. Aber für guten PHP-Code empfehle ich den Cast-Operator, weil:

  • für andere PHP-Entwickler schneller erkennbar ist, was hier eigentlich geschehen soll (nämlich Type-Casting und keine Multiplikation).
  • (int) in der Ausführung schneller ist
 
C

calimero78

Guest

AW: [mysql] Content aus der Datenbank auslesen und ausgeben

Warum überprüfst Dur Deine $GET Werte nicht mit einem regulären Ausdruck:

if ( preg_match( '~[0-9]{1,5}~', $_GET['page'] ) )
$action = $_GET['page'];
else
$action = '1'; // z.B. eine Fehlerseite / -Meldung

Das verlangt mindestens eine Ziffer, lässt numerische Werte zwischen 0 und 99999 zu und Tags und Code würden nicht matchen.

Oder?
 
Zuletzt bearbeitet:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben