Frage zur Datenbindung...

pontifex

Mitglied
Hallo NG,

bei der Erstellung einer Seite mit php ist leider das folgende Problem für mich aufgetreten.

Mittels des folgenden Strings (.... content.php?area=yxc&lang=de) versuche ich die dazugehörigen Informationen aus einer Mysql Datenbank zu erhalten:


PHP:
<?php
 $area1 = $_GET['area'];
$lang = $_GET['lang'];

$mysqlhost="server";
$mysqluser="testgui";
$mysqlpwd="testgui";
$mysqldb="testgui";

$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die
("Error 14: Die Verbindung zur Datenbank konnte nicht hergestellt werden.");

mysql_select_db($mysqldb, $connection) or die
("Error 15: Die Datenbank konnte gewählt werden.");

$sql = ""SELECT * FROM inhalt WHERE Bereich =  $area1 AND Sprache = $lang'";

$adressen_query = mysql_query($sql) or die("Error 16: Die Anforderung der Daten war nicht erfolgreich.");

?>

Mein Problem ist nun, dass ich die Informationen (im SQL *) aus den einzelnen Spalten in Variablen speichern möchte, die ich dann an einer bestimmten Stelle im HTML Code "schreiben" lassen.

Danke!
PM
 
Hmm...was genau willst du machen?...
du kannst das ganze mit einer while-Schleife machen:
PHP:
while ($row = mysql_fetch_array($adressen_query))
                    {
                    echo $row["spalte1"];
                    echo $row["spalte2"];
                    usw.
                    }

hast du sowas gemeint?

Auf jeden Fall ist mir folgendes aufgefallen:
PHP:
$sql = ""SELECT * FROM inhalt WHERE Bereich =  $area1 AND Sprache = $lang'";

Am Anfang hast du da 2 ""...schreib es nur mit einem;-):
PHP:
$sql = "SELECT * FROM inhalt WHERE Bereich = $area1 AND Sprache = $lang";

gruss
 
Hallo.
danke für den Hinweis im SQL Statement.

Nun zur Deine Frage. Die Tabelle enthält folgende Spaltenstruktur:

ID
Land
Sprache
Inhalt
Datum
Bereich


Nun möchte ich quasi die für das SQL passende Zeile auslesen und die Daten aus den o. a. Zellen einer Variablen Zuordnen, so dass ich sie später im HTML Code mittels einem "write" Statement ausgeben lassen kann.

Muss zugeben, dass ich ursprünglich von Asp/asp.net komme. :-(

Danke!
PM
 
PHP:
while ( $record = mysql_fetch_assoc ( $adressen_query ) 
  {
  echo $record['ID'];
  echo $record['Land'];
  echo $record['Sprache'];
  // usw.
  }
Was unterm Strich dasselbe ist wie von Spescha, allerdings kannst Du die Spalten mit Namen ansprechen, was sicherlich übersichtlicher ist und bei späterer Änderung der Tabellenstruktur keine Probleme bereitet.

Viel Spaß dabei,
Micha

PS: Ehm - zu schnell geschossen....
mysql_fetch_array ( $sqlresult ) ohne zweiten Parameter gibt ja sowohl als auch numerische und assoziatives Ergebnis zurück... Hab's bislang immer nur mit MYSQL_NUM verwendet.
Gibt's hier keinen Knopf "Beitrag löschen?" ;-)
 
Zuletzt bearbeitet:
Wenn du die Daten nicht gleich in einer while Schleife ausgeben lassen willst, sondern sie quasi zwischenspeichern möchtest, dann funktioniert das auch so ähnlich wie von Spescha beschrieben.
Zunächst gehe ich mal davon aus, dass das Ergebnis der Abfrage mehrere Zeilen betrifft:

PHP:
<?php 
$area1 = $_GET['area']; 
$lang = $_GET['lang']; 

$mysqlhost="server"; 
$mysqluser="testgui"; 
$mysqlpwd="testgui"; 
$mysqldb="testgui"; 

$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die 
("Error 14: Die Verbindung zur Datenbank konnte nicht hergestellt werden."); 

mysql_select_db($mysqldb, $connection) or die 
("Error 15: Die Datenbank konnte gewählt werden."); 

$sql = "SELECT * FROM inhalt WHERE Bereich =  $area1 AND Sprache = $lang"; 

$adressen_query = mysql_query($sql) or die("Error 16: Die Anforderung der Daten war nicht erfolgreich."); 

//hier nun die Ergänzung
//lege zunächst ein leeres array an

$variablen = array("ID;Land;Sprache;Inhalt;Datum;Bereich");
//so beinhaltet jeder array genau eine Zeile
//dann folgt das auslesen der Zeilen

while($adressen = mysql_fetch_array($adressen_query))
{
array_push($variablen,implode(";",$adressen));
}

//Ausgabe:

for($i=1;$i<count($variablen);$i++)
{
$ausgabe = explode(";",$variablen[i]);
//$ausgabe[0] := ID
//$ausgabe[1] := Land usw.

//hier html Teil
}


?>

Unter c kann man ein array auch als Matrix gestalten also variablen[1][5]. Habe bisher keine Möglichkeit gefunden das auch in php zu nutzen, wäre jedoch in diesem Beispiel sehr sinnvoll wenn es geht. Damit könntest du dir das implode/explode sparen.

Wenn die Ausgabe natürlich nur eine Zeile betrifft, dann kannst du dir das ganze mit array im array sparen. Frage einfach $adressen[...] ab.

PS: habe das ganze jetzt mal so verstanden, dass du die Daten nicht in der while Schleife ausgeben möchtest. Ansonsten reicht natürlich die im letzten post beschriebene Variante
 
Zuletzt bearbeitet:
fh_study hat gesagt.:
Wenn du die Daten nicht gleich in einer while Schleife ausgeben lassen willst, sondern sie quasi zwischenspeichern möchtest, dann funktioniert das auch so ähnlich wie von Spescha beschrieben.
Zunächst gehe ich mal davon aus, dass das Ergebnis der Abfrage mehrere Zeilen betrifft:

PHP:
<?php 
$area1 = $_GET['area']; 
$lang = $_GET['lang']; 

$mysqlhost="server"; 
$mysqluser="testgui"; 
$mysqlpwd="testgui"; 
$mysqldb="testgui"; 

$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die 
("Error 14: Die Verbindung zur Datenbank konnte nicht hergestellt werden."); 

mysql_select_db($mysqldb, $connection) or die 
("Error 15: Die Datenbank konnte gewählt werden."); 

$sql = "SELECT * FROM inhalt WHERE Bereich =  $area1 AND Sprache = $lang"; 

$adressen_query = mysql_query($sql) or die("Error 16: Die Anforderung der Daten war nicht erfolgreich."); 

//hier nun die Ergänzung
//lege zunächst ein leeres array an

$variablen = array("ID;Land;Sprache;Inhalt;Datum;Bereich");
//so beinhaltet jeder array genau eine Zeile
//dann folgt das auslesen der Zeilen

while($adressen = mysql_fetch_array($adressen_query))
{
array_push($variablen,implode(";",$adressen));
}

//Ausgabe:

for($i=1;$i<count($variablen);$i++)
{
$ausgabe = explode(";",$variablen[i]);
//$ausgabe[0] := ID
//$ausgabe[1] := Land usw.

//hier html Teil
}


?>

Unter c kann man ein array auch als Matrix gestalten also variablen[1][5]. Habe bisher keine Möglichkeit gefunden das auch in php zu nutzen, wäre jedoch in diesem Beispiel sehr sinnvoll wenn es geht. Damit könntest du dir das implode/explode sparen.

Wenn die Ausgabe natürlich nur eine Zeile betrifft, dann kannst du dir das ganze mit array im array sparen. Frage einfach $adressen[...] ab.

PS: habe das ganze jetzt mal so verstanden, dass du die Daten nicht in der while Schleife ausgeben möchtest. Ansonsten reicht natürlich die im letzten post beschriebene Variante

oO Auf die Idee einfach $vari[][] zu machen bist nich gekommen? :)
Btw: du brauchst kein array_push etc. wenn du nur [] schreibst, dann fügt er es sowieso ganz hinten an. Bsp:

while($row = mysql_fetch_assoc($id)){
$array[] = $row;
}

Und schon haste alles so erreichbar:
$array[0]['titel']
$array[1]['titel']
etc...
 
Hallo Leute,
vielen Dank für Eure vielseitigen Vorschläge, habe jetzt mal den Code angepasst. Leider fliegt er immer raus folgenden Code raus:

PHP:
$adressen_query = mysql_query($sql) or die("Error 16: Die Anforderung der Daten war nicht erfolgreich.");

Leider weiss ich auch nicht genau, wie ich eine genaue Fehlermeldung hinbekomme, warum es nicht klappt:

hier nochmal der gesamte code:

PHP:
 <?php

$area1 = $_GET['area'];
$lang = $_GET['lang'];

$mysqlhost="localhost";
$mysqluser="testgui";
$mysqlpwd="testgui";
$mysqldb="testgui";

$connection=@mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die
("Error 14: Die Verbindung zur Datenbank konnte nicht hergestellt werden.");

mysql_select_db($mysqldb, $connection) or die
("Error 15: Die Datenbank konnte gewählt werden.");

$sql = "SELECT * FROM Tabelle1 WHERE Bereich = $area1 AND Sprache = $lang";

$adressen_query = mysql_query($sql) or die("Error 16: Die Anforderung der Daten war nicht erfolgreich.");

while ( $record = mysql_fetch_row ( $adressen_query )) 
{
echo $record['ID'];
echo $record['Land'];
echo $record['Sprache'];
echo $record['Inhalt'];
echo $record['Datum'];
echo $record['Bereich'];
} 

?>


<?
echo $record['Inhalt']
?>
 
Hallo Oliver,
danke für den Tipp, nun wird die folgende Fehlermeldung bezogen auf den o. a. SourceCode ausgeworfen:

1054: Unknown column 'planung' in 'where clause'
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in content.php on line 23
1054: Unknown column 'planung' in 'where clause'

Dabei liegt der folgende Link zu grunde:

/content.php?area=planung&lang=de

"planung" ist dabei der Inhalt einer Zelle in der Spalte Bereich.

Danke
PM
 
Zurück