PHP + MySQL

Diskutiere PHP + MySQL im Programmierung Forum im Bereich Software Forum; Hi ich habe ein kleines Problem mit php + Mysql: Ich habe eine Tabelle mit folgenden Feldern: ID, Nachname, Vorname, Titel, EMAIL, TelNr...
Shifu

Shifu

Threadstarter
Mitglied seit
13.10.2003
Beiträge
1.023
Alter
38
Hi

ich habe ein kleines Problem mit php + Mysql:

Ich habe eine Tabelle mit folgenden Feldern:

ID, Nachname, Vorname, Titel, EMAIL, TelNr, FaxNr, Forschungsgebiet, Verwaltung, Adresse, Raumnummer, Stellung, Sprechstunde

Sämtliche Namen sind auf einer Seite verlinkt und nun brauche ich ein PHP Script, was nach drücken des entsprechenden Links den entsprechenden Datensatz aus der DB ausliest und zu einer Html Seite macht.

Zugriff auf die Datenbank erhalt ich über folgendes script (oder?):
Code:
<?php
	$server ="localhost";
	$benutzer = "root";
	$pass = "";
	$dbname = "ai_2";
	
	$conn = mysql_connect($db_server, $benutzer, $pass);
	if ($conn) {
 mysql_select_db($dbname, $conn);
 echo("<p>Es hat geklappt</p>");
	} else {
 echo("<p>Es konnte keine Verbindung zum MySQL-Host herrgestellt werden. Bitte versuchen Sie es zu einem späteren Zeitpunkt erneut.</p>");
	}
?>
Aber wie komme ich an die Einträge in der Tabelle ran ?
 
chrisu

chrisu

Mitglied seit
14.11.2003
Beiträge
188
also in den links der namen schickst du ne get variale mit in der der name steht

z.b beim Herr müller

Herr Müller


in dem skript datenbank

holst du dir den wert mit

$name =& $_GET['name'];


und als SQL - Abfrage baust du dann halt ein

"WHERE NAME = '$name' " dazu...
 
Shifu

Shifu

Threadstarter
Mitglied seit
13.10.2003
Beiträge
1.023
Alter
38
wenn würd ich es leiber über den PK ID machen

Herr Müller

$ID =& $_GET['ID']

$sql=SELECT Vorname, Nachname, TelNr, FaxNr... from Personen (so heisst die Tabelle in der DB ai_2) WHERE ID = '$ID';

Kann ich den ausgelesenen Daten irgendwie seperate variablen geben (zb $Vorname) damit ich die Daten noch Formatiert ausgeben kann ?
 
chrisu

chrisu

Mitglied seit
14.11.2003
Beiträge
188
logo ;)

entweder mit mysql_fetch_row()

--> liefert ein array mit nuemerischen indizees also [0] ist das erste feld aus deinem select


oder gleich mit mysql_fetch_assoc()

--> das liefert ein assoz. array

also mit ...['Feldname']
 
Shifu

Shifu

Threadstarter
Mitglied seit
13.10.2003
Beiträge
1.023
Alter
38
bin leider immernoch nicht sicher wie mysql_fetch_row (assoc) eigentlich von der Syntax her aufgebaut werden..

wenn ich an die Reihe mit der ID 29 will (PK)

<?php
$ID=29
mysql_select_db ($dbname, $conn);
$result=mysql_fetch_assoc($ID);
echo"

$result['Titel'] $result['Vorname'] $result['Nachname']</p>";
?>

Könnte man das so machen ?
 
chrisu

chrisu

Mitglied seit
14.11.2003
Beiträge
188
;)


du brauchst ne abfrage:

$sql = "SELECT * FROM tabelle";

dann wird die abfrage durchgeführt:

$ergebnis = mysql_query($sql);

dann werden die ergebnisreihenn geholt:

$reihe = mysql_fetch_row($ergebnis);

und dann wird das ausgegeben

echo $row[0],$row[1];


sollten es mehrere reihen sein einfach ne schleife einbauen.
 
Shifu

Shifu

Threadstarter
Mitglied seit
13.10.2003
Beiträge
1.023
Alter
38
<?php
$server ="localhost";
$benutzer = "root";
$pass = "";
$dbname = "ai_2";

$conn = mysql_connect($db_server, $benutzer, $pass);
if ($conn) {
mysql_select_db($dbname, $conn);
} else {
echo("

Es konnte keine Verbindung zum MySQL-Host herrgestellt werden. Bitte versuchen Sie es zu einem späteren Zeitpunkt erneut.</p>");
}
?>

<?php
$sql="SELECT * FROM Personen WHERE ID=29";
$ergebnis=mysql_query($sql)
$result= mysql_fetch_assoc($ergebnis)
echo("

$result['Titel'] $result['Vorname'] $result['Nachname']</p>");
echo("...");
?>

bei ... kommen die restlichen sachen, die ich noch auslesen will
 
chrisu

chrisu

Mitglied seit
14.11.2003
Beiträge
188
Code:
<?php
$server ="localhost";
$benutzer = "root";
$pass = "";
$dbname = "ai_2";

$conn = mysql_connect($db_server, $benutzer, $pass);
if ($conn) {
mysql_select_db($dbname, $conn);
} else {
echo("<p>Es konnte keine Verbindung zum MySQL-Host herrgestellt werden. Bitte versuchen Sie es zu einem späteren Zeitpunkt erneut.</p>");
}
$sql="SELECT * FROM Personen WHERE ID=29";
$ergebnis=mysql_query($sql);
 
while ( $result=& mysql_fetch_assoc($ergebnis) ) {
echo "<p><b>",$result['Titel']," ",$result['Vorname']," ",$result['Nachname'],"</p></b>";
}
?>
Es waren noch ein paar syntaxfehler drin und ein paar unnötige dinge.

ich schau jetzt fußball :)
 
Shifu

Shifu

Threadstarter
Mitglied seit
13.10.2003
Beiträge
1.023
Alter
38
thx :D

aber da ID unique ist brauche ich doch die While Schleife nicht, da es doch von vorneherein aussgeschlossen ist, dass es mehrere mit ID=29 gibt oder ?

insofern könnte man dass dann doch so schreiben :
Code:
<?php
$server ="localhost";
$benutzer = "root";
$pass = "";
$dbname = "ai_2";

$conn = mysql_connect($db_server, $benutzer, $pass);
if ($conn) {
mysql_select_db($dbname, $conn);
} else {
echo("<p>Es konnte keine Verbindung zum MySQL-Host herrgestellt werden. Bitte versuchen Sie es zu einem späteren Zeitpunkt erneut.</p>");
}
$sql="SELECT * FROM Personen WHERE ID=29";
$ergebnis=mysql_query($sql);

$result=& mysql_fetch_assoc($ergebnis) 
echo "<p><b>",$result['Titel']," ",$result['Vorname']," ",$result['Nachname'],"</p></b>";
echo "..."
?>
P.S.: Zum ienen kann ich das Fussball gucken auch nebenher und zum anderen ist das Game langweillig
 
chrisu

chrisu

Mitglied seit
14.11.2003
Beiträge
188
klar kannst du das so machen.


jezt eben noch die id=29 gegen die id='$id' austauschen und ein $id =& $_GET['id']

rein und fertig.

ach ja und den '*' im select vielleicht noch durch die entsprechenden spaltennamen ersetzen...


die seite mit de links kannst du ja auch aus der db erstellen lassen. außer du stehst auf intensive tipparbeit ;)


und zum fußball: also die letzten 15 min waren gut.
 
Shifu

Shifu

Threadstarter
Mitglied seit
13.10.2003
Beiträge
1.023
Alter
38
das ist nur ne Einführung an der Uni in PHP (sprich ne Aufgabe)

das ganze muss noch in ne Tabelle der Form

<empty> $Titel Vorname, Name
<empty> $Anschrift
Forschungsgruppe: $Forschung
verwaltung: $Verwaltung
Stellung: $Stellung
Telefon: $TelNr
Fax: $FaxNr
email: $EMail
Raumnummer $Raum
Sprechstunde: $Sprech

wobei empty ein leeres Feld der Tabelle ist (hat größe 2*10)

muss ich jetzt die Tabellenform über lauter echo machen oder gehts eleganter ?
 
chrisu

chrisu

Mitglied seit
14.11.2003
Beiträge
188
da gibts jetzt mehrere möglichkeiten.

welche man verwendet hängt vom eigenen geschmack ab. manche verabscheuen die eine und andere eben ne andere..... :sleepy


1.

echo "

<table>
<tr>
<td>Name</td>
<td>$name</td>
.
.
.
";

--> also ein echo"..."; mit dem ganzen html code dazwischen.


2.

echo"<table>";
echo"<tr>";
echo"<td>Name</td>";
echo"<td>$name</td";
.
.
.

--> also jede zeile bekommt ein eigenes echo



3.

?>
<table>
<tr>
<td>Name</td>
<td><?php echo $name; ?></td>
.
.
.

---> also vor der html ausgbabe wird der php"bereich" beendet damit man normales html schreiben kann. an den stellen an denen die variablen eingesetzt werden sollen öffnet man diesen wieder kurz.
 
Shifu

Shifu

Threadstarter
Mitglied seit
13.10.2003
Beiträge
1.023
Alter
38
habe mal intuitiv auf Version 2 zurückgegriffen (auch wenn ich da massiv zusammengefasst hab und mich mein Tuto dafür schlagen wird)

Bei Version 1 hat er bei mir rumgemosert
 
stpe

stpe

Mitglied seit
14.11.2001
Beiträge
2.729
zum einen: wenn Du nur eine ergebniszeile erwartest, wuerde ich den erfolg des auslesens aus der db mit if abfangen, also z.b.:
Code:
if ($arrRes=@mysql_fetch_array($ergebnis)) {
   echo "<td>name</td>
         <td>".$arrRes[name]."</td>...";
} else {
   echo "ein datensatz mit der id ".$_GET[id]." ist nicht vorhanden.";
}
zum zweiten wuerde ich immer die erste echo-variante von chrisnolde bevorzugen. zum einen ist's hinterher viel einfach zu lesen, zweitens tippst Du Dir bei laengeren passagen sonst immer einen wolf.
 
Shifu

Shifu

Threadstarter
Mitglied seit
13.10.2003
Beiträge
1.023
Alter
38
Finale Lösung:

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Aufgabe 4</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
$server ="localhost";
$benutzer = "root";
$pass = "";
$dbname = "ai_2";

$conn = mysql_connect($db_server, $benutzer, $pass);
if ($conn) {
	mysql_select_db($dbname, $conn);
} else {
	echo("<p>Es konnte keine Verbindung zum MySQL-Host herrgestellt werden. Bitte versuchen Sie es zu einem späteren Zeitpunkt erneut.</p>");
}
$sql="SELECT * FROM personen WHERE ID=30";
$ergebnis=mysql_query($sql);

$result=mysql_fetch_assoc($ergebnis); 
echo"
<table width='400' border='0' cellspacing='0' cellpadding='0'>

  <tr>
    <th width='175' scope='col'></th>
    <th width='275' scope='col'></th>
  </tr>
  <tr>
    <td></td>
    <td><p><b>",$result['Titel']," ",$result['Vorname']," ",$result['Name'],"</p></b><br></td>
  </tr>
  <tr>
    <td></td>
    <td>Institut für Angewandte Informatik</td>
  </tr>
  <tr>
    <td>Forschungsgruppe</td>";
	if ($result['Folink']==Null) {
  echo"<td>", $result['Forschung'],"</td>";
	} else {
  echo"<td><a href=",$result['Folink'],">",$result['Forschung'],"</a></td>";
	}
  echo"
  </tr>
  <tr>
    <td>Verwaltungsfunktion</td>
    <td>",$result['Verwaltung'],"</td>
  </tr>
  <tr>
    <td>Stellung</td>
    <td>",$result['Stellung'],"</td>
  </tr>
  <tr>
    <td>Telefon</td>
    <td>",$result ['TelNr'],"</td>
  </tr>
  <tr>
    <td>Fax</td>
    <td>",$result['FaxNr'],"</td>
  </tr>
  <tr>
    <td>eMail:</td>
    <td><a href=mailto:",$result['Mail']," target='_blank'>",$result['Mail'],"</a></td>
  </tr>
  <tr>
    <td>Raumnummer</td>
    <td>",$result['Raumnummer'],"</td>
  </tr>
  <tr>
    <td>Sprechstunde</td>
    <td>",$result['Sprechstunde'],"</td>
  </tr>
</table>
";
?>
<p><a href="http://www.hachenberg.org">wwe</a></p>
</body>
</html>
-- damit können wir wohl closen --
 
Thema:

PHP + MySQL

PHP + MySQL - Ähnliche Themen

  • 2008R2: Apache, PHP, MySQL - Update's

    2008R2: Apache, PHP, MySQL - Update's: Moin aus Meißendorf, wie die Überschrift schon vermuten lässt, habe ich erhebliche Probleme, die o.g. Versionen zu aktualisieren; vermutlich sehe...
  • Suche FreeWebhoster mit PHP und MySQL

    Suche FreeWebhoster mit PHP und MySQL: Hallo. Suche FreeWebhoster mit PHP und MySQL. Kann mir jemand helfen? MFG
  • GELÖST SQL-Dump einer Datenbank überraschend klein

    GELÖST SQL-Dump einer Datenbank überraschend klein: :blush Liebe Mituser! Für meine Vorgesetzten habe ich eine Pflegeeinrichtungsdatenbank (Altenheime, Physiotherapeuten etc.) mit MySQL und PHP...
  • GELÖST Ich habe den FIWUS quasi aus dem Netz geschossen

    GELÖST Ich habe den FIWUS quasi aus dem Netz geschossen: Mein Projekt FIWUS (http://freies-in-wort-und-schrift.info) auf Basis von WORDPRESS liegt bei einem Hoster, bei dem ich Speicherplatz gemietet...
  • Problem mit MySql verbindung über PHP

    Problem mit MySql verbindung über PHP: Hallo, ich hoffe das ich das hier richtig gepostet habe, da ich es genau so gut auch in Datenbanken machen kann, aber ich fand das es hier besser...
  • Ähnliche Themen

    • 2008R2: Apache, PHP, MySQL - Update's

      2008R2: Apache, PHP, MySQL - Update's: Moin aus Meißendorf, wie die Überschrift schon vermuten lässt, habe ich erhebliche Probleme, die o.g. Versionen zu aktualisieren; vermutlich sehe...
    • Suche FreeWebhoster mit PHP und MySQL

      Suche FreeWebhoster mit PHP und MySQL: Hallo. Suche FreeWebhoster mit PHP und MySQL. Kann mir jemand helfen? MFG
    • GELÖST SQL-Dump einer Datenbank überraschend klein

      GELÖST SQL-Dump einer Datenbank überraschend klein: :blush Liebe Mituser! Für meine Vorgesetzten habe ich eine Pflegeeinrichtungsdatenbank (Altenheime, Physiotherapeuten etc.) mit MySQL und PHP...
    • GELÖST Ich habe den FIWUS quasi aus dem Netz geschossen

      GELÖST Ich habe den FIWUS quasi aus dem Netz geschossen: Mein Projekt FIWUS (http://freies-in-wort-und-schrift.info) auf Basis von WORDPRESS liegt bei einem Hoster, bei dem ich Speicherplatz gemietet...
    • Problem mit MySql verbindung über PHP

      Problem mit MySql verbindung über PHP: Hallo, ich hoffe das ich das hier richtig gepostet habe, da ich es genau so gut auch in Datenbanken machen kann, aber ich fand das es hier besser...
    Oben