# Eine Datenzeile aus SQL anhand einer ID ausgeben



## SinanBuddha (3. Mai 2008)

Hi Leute...

Ich hab folgendes Problemchen... 

Ich habe (kurze Version) eine Datenbank mit den Spalten:
ID ----- Name ----- eMail ----- Alter ----- Geschlecht

ID wird automatisch vergeben...

Jetzt habe ich folgende Daten drin:
ID ----- Name ----- eMail ----- Alter ----- Geschlecht
1 ----- Hans ----- h@m.de ----- 20 ----- m
2 ----- Tina ----- tin@h.com ----- 25 ----- w
3 ----- Max ----- m@x.org ----- 19 ----- m

Jetzt zu meinem Problem...
Ich schaff es einfach nicht eine ausgabe.php zu machen, die eine bestimmte Zeile ausgibt, wenn man als URL folgendes eingibt:

http://mein.server.de/ausgabe.php?id=2

Dieser URL sollte dann nur folgendes Ausgeben:

ID ----- Name ----- eMail ----- Alter ----- Geschlecht
2 ----- Tina ----- tin@h.com ----- 25 ----- w

Ich hab schon etliche Tuts gelesen, aber bei mir werden immer alle Zeilen ausgegeben...

Bitte Hülfe... :suspekt:


----------



## Fat-Z (3. Mai 2008)

Hey SinanBuddha,

das ist eigentlich kein Problem . 
Hast du es schon versucht mit: 

```
SELECT COUNT(*) FROM $deintabellenname$ WHERE ID='$spaltenname$'
```


Fat-Z


----------



## No-Body (3. Mai 2008)

hi

```
<?php
$abfrage = "SELECT * FROM xxx WHERE id = '1'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
   {
   echo "$row->name <br>";
   }
?
```

hier wird die id 1 abgefragt und mit $row->name  nur der name 

Gruß No-Body

Aso und die übermittelte id aus GET speicherst du in einer variablen und list dann 

WHERE id = '1'";   =  WHERE id = '$xxx'";

Gruß No-Body


----------



## SinanBuddha (3. Mai 2008)

Ich bin echt plöt, oder? Ich raff das immer noch nicht...

Meine ausgabe.php sieht jetzt so aus:

```
<html>
<head>
<title>Inhalte ausgeben</title>
</head>
<body>

<?php

$host = "localhost";
$user = "user";
$password = "passwort";
$dbname = "datenbank";
$tabelle ="tabelle";

<?php
$abfrage = "SELECT * FROM $tabelle WHERE id = '1'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
   {
   echo "$row->name <br>";
   }
? 

</body>
</html>
```

Ich will, dass, wenn ein User die URL: http://www.mein-server.de/ausgabe.php?id=2

eingibt, dann nur die Zeile ausgibt, die in der Spalte "id" eine 2 hat...


----------



## No-Body (3. Mai 2008)

<?php
$id = $_GET["id"];

$link = mysql_connect("localhost","xxx","xxx") or die ("Keine Verbindung moeglich");
mysql_select_db("xxx") or die ("Die Datenbank existiert nicht");

 	$abfrage = "SELECT * FROM xxx WHERE id = '$id'";
	$ergebnis = mysql_query($abfrage);
	$ergebnis = mysql_fetch_array($ergebnis);

echo "$row->name <br>";

?>

So geht das schon richtig 

Gurß No-Body


----------



## SinanBuddha (3. Mai 2008)

Ich hab jetzt folgendes in der ausgabe.php:


```
<?php

$host = "localhost";
$user = "user";
$password = "password";
$dbname = "dbname";
$tabelle ="tabelle";

$id = $_GET["id"];

$link = mysql_connect("$host","$user","$password") or die ("Keine Verbindung moeglich");
mysql_select_db("$dbname") or die ("Die Datenbank existiert nicht");

$abfrage = "SELECT * FROM $tabelle WHERE id = '$id'";
$ergebnis = mysql_query($abfrage);
$ergebnis = mysql_fetch_array($ergebnis);

echo "$row->name <br>";

?>
```

Wenn ich jetzt http://www.meinserver.de/ausgabe.php?id=14 eingebe erhalte ich eine weiße Seite... Obwohl die Zeile 14 etwas enthält...

Ich verzweifle... *flenn*


----------



## No-Body (3. Mai 2008)

LoooL 

Sry das ich lachen muste is okidoki erstmal brauchst du das nicht :


> $host = "localhost";
> $user = "user";
> $password = "password";
> $dbname = "dbname";
> $tabelle ="tabelle";



da wir hiermit schon eine verbindung zum server herstehlen :


> $link = mysql_connect("localhost","xxx1","xxx2") or die ("Keine Verbindung moeglich");
> mysql_select_db("xxx3") or die ("Die Datenbank existiert nicht");



also in xxx1 fügste deinen phpmyadmin usernamen ein ,und in xxx2 dein phpmyadmin passwort und in xxx3 wie deine Datenbank heist 



> $abfrage = "SELECT * FROM $tabelle WHERE id = '$id'";



und warum machst du da ein $tabelle  wen deine tabele blabla heist kommt da nur blabla hin und keine variable 

Gruß No-Body


----------



## SinanBuddha (3. Mai 2008)

Ok... erst schomma Danke für deine Mühe... Darfst lachen...  

Allerdings kommt jetzt ne Fehlermeldung:


```
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /usr/export/...../db_ausgabe.php on line 10
```


```
<?php

$id = $_GET["id"];

$link = mysql_connect("localhost","adminusername","passwort") or die ("Keine Verbindung moeglich");
mysql_select_db("NameDerDatenbank") or die ("Die Datenbank existiert nicht");

$abfrage = "SELECT * FROM NameDerTabelle WHERE id = '$id'";
$ergebnis = mysql_query($abfrage);
$ergebnis = mysql_fetch_array($ergebnis);

echo "$row->name <br>";

?>
```

Und die Zeile mit dem Fehler ist:

```
$ergebnis = mysql_fetch_array($ergebnis);
```


----------



## No-Body (3. Mai 2008)

Ich denke du gipst der Variablen auch keinen Wert ($id)

Mach mal als Ausgabe das hier:

```
<?php
$id = $_GET["id"];
echo "$id";
?>
```

Wen da kein Wert kommt also du must schon den passenden Wert da einfügen 
GET["id"]; ich habe jetzt nur aus gefonheit id da hin geschrieben da könnte natürlich alles stehen 

Gruß No-Body


----------



## SinanBuddha (3. Mai 2008)

Also die id soll aus der URL gelesen werden...

Wenn ich als URL

http://mein.server.de/ausgabe.db?id=3

eingebe, soll die ganze Zeile ausgeben werden, die bei "id" den Wert 3 hat...

Wenn ich als URL

http://mein.server.de/ausgabe.db?id=20

eingebe, soll die ganze Zeile ausgegeben werden, die bei "id" den Wert 20 hat...

Also die Spalte "id" gibt es in meiner Tabelle... und mit jedem neuen Eintrag ist der Wert eins größer als zuvor...

*koppkratz*

Also mit deinem kurzen Code bekomm ich wieder ne weiße Seite... grml


----------



## No-Body (3. Mai 2008)

> http://mein.server.de/ausgabe.db?id=3



wen deine Url so heist müste er den namen aus der tabelle mit der id ausgeben ,wenn du nix falsch eingegeben hast ,die fehler meldung sagt mir so nix kontrolier mal alles op wirklich alle sachen so heisen wie du sie auch in der datenbank hast !

Gruß No-Body


----------



## SinanBuddha (3. Mai 2008)

http://img113.imageshack.us/img113/8783/zwischenablage04dx2.jpg

Ist alles richtig eingeben... auch Groß-/Kleinschreibung beachtet... arglglgl


----------



## DeeJTwoK (3. Mai 2008)

Hi, 
in den letzten Posts heisst dein Script immer ausgabe.db. Ich hoffe das heisst in Wirklichkeit ausgabe.php, sonst wird das nächlich nichts. 

Wenn du das Script also so aufrufst:

```
http://localhost/ausgabe.php?id=3
```

Dann sollte das so eigentlich funktionieren


```
<?php

$id = (int)$_GET["id"]; //damit kein schadcode eingefügt werden kann

//ist ja klar, dass hier eigentlich deine richtigen daten drin stehen. ich denke das hast du ;)
$link = mysql_connect("localhost","adminusername","passwort") or die ("Keine Verbindung moeglich");

mysql_select_db("buffalo", $link) or die ("Die Datenbank existiert nicht");

$abfrage = "SELECT * FROM `alpha` WHERE id = $id";
echo ">".$abfrage."<"; //testausgabe

$ergebnis = mysql_query($abfrage, $link);
$zeile = mysql_fetch_array($ergebnis);

echo $zeile["name"]."<br>";

?>
```
Falls das so nicht funktioniert, würde ich mal die Testausgabe angucken und evtl. über phpmyadmin abschicken und sehen, was passiert.


----------



## No-Body (3. Mai 2008)

Hi DeeJTwoK

Wie hab ich ihn meinen Script was falsch gemacht? bei mir geht das!!

mfg No-Body


----------



## SinanBuddha (4. Mai 2008)

Hi... Danke...
Sieht jetzt schon anders aus... Allerdings bekomm ich jetzt nur



> >SELECT * FROM `alpha` WHERE id = '2'<



ausgegeben... 

Ich könnt noch verzweifeln...


----------



## DeeJTwoK (4. Mai 2008)

No-Body hat gesagt.:


> Hi DeeJTwoK
> 
> Wie hab ich ihn meinen Script was falsch gemacht? bei mir geht das!!
> 
> mfg No-Body


Nee, direkt falsch gemacht hast du nichts, aber bei dir warens immer nur Schnipsel, die nicht direkt auf seine DB etc. angepasst waren. Ich habs jetzt nur noch mal schön zusammengefasst, was ich alles mitbekommen habe. 

@SinanBuddha: Hast du mein ganzes Script so wie es ist kopiert, oder hast du nur einen Teil übernommen? Denn bei meinem Script dürfte diese Ausgabe eigentlich nicht kommen. Ich hab nämlich keine einfachen Anführungszeichen drin. Aber egal:

```
SELECT * FROM `alpha` WHERE id = 2
```
Schick doch mal das in phpmyadmin ab und guck was als Ergebnis kommt.
Oder lass dir auch mal den MySQL-Error ausgeben:

```
$ergebnis = mysql_query($abfrage, $link);
echo ">".mysql_error()."<";
```

Und poste doch mal bitte das Script, so wie du es jetzt hast. User und Passwort kannst du ja durch XXX ersetzen.


----------



## Fat-Z (5. Mai 2008)

Hey SinanBuddha, ich hab gerade im Thema gelesen dass du Daten aus einer "SQL" Datenbank abrufen willst. Bist du dir sicher dass du "SQL" meinst oder nicht "mySQL"?
Weil wenn du "SQL" meinst dann schauts natürlich gleich ganz anders aus 


Fat-Z


----------



## SinanBuddha (5. Mai 2008)

Ist MySQL...


----------

