Datenbank Ausgabe als Link in Tabelle darstellen

solala123

Erfahrenes Mitglied
Hallo,
ich möchte die Ausgabe aus meiner Datenbank als Link darstellen,
meine Versuche waren so oder ähnlich
<a href=' xxxx'> das href muss irgend wie in die letzte Zeile rein

hier mal mein Code
Code:
$sql = sprintf( 
"SELECT * FROM ResBar WHERE 
	garten = '%s'
OR 
	kueche = '%s'
OR 
	plz = '%s'  
OR 
	ort ='%s' 
OR 
	behindert = '%s' 
OR 
	nacht = '%s'  
",
  
$_POST['garten'],
$_POST['kueche'],
$_POST['plz'],
$_POST['ort'],
$_POST['behindert'],
$_POST['nacht'] ); 


$query = mysql_query( $sql ) or die( mysql_error () );
 
echo "<table  width='100%' border='0'  cellpadding='2' cellspacing='3'   >
  <tbody>
  
 <!--/*      cellspacing='3'  Platz zwischen den einzelnen Kästchen      */--> 
 <!--/*      border='2'  Rand um die Tabelle                             */--> 
   
   
      <tr align='center' height='4'  bordercolor='#000000'  background='images/leiste-schatten-ausgabetabelle.gif' >
	  
      <td><span class='Stil3'>  Bild                   </td>
      <td><span class='Stil3'>  Lokalname              </td>
      <td><span class='Stil3'>  Küche                  </td>
	  <td><span class='Stil3'>  Garten                 </td>
	  <td><span class='Stil3'>  Ruhetage               </td> 
	  <td><span class='Stil3'>  Übernachtung           </td> 
	  <td><span class='Stil3'>  Behinderten- <br>freundlich  </td> 
	  <td><span class='Stil3'>  Telefon                </td> 
	  <td><span class='Stil3'>  Postleitzahl           </td> 
	  <td><span class='Stil3'>  Ort                    </td> 
	  <td><span class='Stil3'>  Strasse                </td> 
	  <td><span class='Stil3'>  Homepage               </td> 	  
    </tr>
";
 // Anzeige wie Datenbanktabelle formatiert ist
while(list($bild,$restaurantname,$kueche,$garten,$montag,$nacht,$behindert,$telefon,$plz,$ort,$strasse,$homepage) = mysql_fetch_row($query))
 {

 //echo $sql; zum Testen ob richtig Übertragen bzw. zugewiesen wird 



 // Anzeige wie Datenbanktabelle formatiert ist
		echo
		"
		<tr  background='images/hintergrund.gif' height='55'>
		<td align=center><span class='Stil2'>" . $bild .           "</td>
		<td align=center><span class='Stil2'>" . $restaurantname . "</td>
		<td align=center><span class='Stil2'>" . $kueche .         "</td>
		<td align=center><span class='Stil2'>" . $garten .         "</td>
		<td align=center><span class='Stil2'>" . $montag .         "</td>
		<td align=center><span class='Stil2'>" . $nacht .          "</td>
		<td align=center><span class='Stil2'>" . $behindert .      "</td>
		<td align=center><span class='Stil2'>" . $telefon .        "</td>
		<td align=center><span class='Stil2'>" . $plz .            "</td>
		<td align=center><span class='Stil2'>" . $ort .            "</td>
		<td align=center><span class='Stil2'>" . $strasse .        "</td>
		<td align=center><span class='Stil2'>" . $homepage  .      "</td> // diese Zeile soll als Link angezeigt werden
		";
	  
	  
}

echo "</tbody></table>";

?>

Die Ausgabe "homepage" möchte ich als Link in der Tabelle angezeigt bekommen

Vielen Dank für Euere Hilfe
mfg
Rainer
 
Wichtig:

- SQL-Injections: http://phpforum.de/forum/showthread.php?t=231777
- Veraltete mysql-Extension: http://phpforum.de/forum/showthread.php?t=264056
- Kontextwechsel: http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel
- Nutze CSS zur Formatierung, nicht die größtenteils veralteten HTML-Attribute.
- Du brauchst HTML-Code nicht per echo auszugeben. EVA-Prinzip: http://phpforum.de/forum/showthread.php?t=221678, http://php-de.github.io/code-optimizing/eva-prinzip.html
- SELECT * und while(list($bild,$restaurantname,…) = mysql_fetch_row($query)) sind ungut. Selektiere die Spalten, die du benötigst und nutze fetch_assoc.

PHP:
// Escaping für Kontextwechsel nach HTML
$e = function ($s) { return htmlspecialchars($s, ENT_QUOTES, 'UTF-8'); };

echo '<td align=center><span class="Stil2"><a href="' . $e($homepage) . '">' . $e($homepage) . '</a></td>';
 
Hallo mermshaus
vielen Dank das hat natürlich funktioniert und deine anderen Tips werde ich mir gleich anschauen und versuchen sie umzusetzen.

mfg
Rainer
 
Hallo,
ich weiß jetzt nicht mehr was das Beste oder Sicherste ist.
Dazu ist mir Euere Meinung wichtig
Es geht um die Verbindung zur Datenbank

1.
PHP:
// die Konstanten auslagern in eigene Datei
// die dann per require_once ('konfiguration.php'); 
// geladen wird.
 
// Damit alle Fehler angezeigt werden
error_reporting(E_ALL);
 
// Zum Aufbau der Verbindung zur Datenbank
define ( 'MYSQL_HOST',      ' xxxxxxx' );
define ( 'MYSQL_BENUTZER',  'xxxxxxxx' );
define ( 'MYSQL_KENNWORT',  'xxxxxxxxx' );
define ( 'MYSQL_DATENBANK', 'xxxxxxxxx' );  // DB......



$db_link = mysqli_connect (MYSQL_HOST, 
                           MYSQL_BENUTZER, 
                           MYSQL_KENNWORT, 
                           MYSQL_DATENBANK);
 
if ( $db_link )
{
    echo 'Verbindung erfolgreich: ';
    print_r( $db_link); // nur zur Kontrolle vorübergehend
}
else
{
    // hier sollte dann später dem Programmierer eine
    // E-Mail mit dem Problem zukommen gelassen werden
    die('keine Verbindung möglich: ' . mysqli_error());
}

und hier die 2. Variante

PHP:
// Verbindung herstellen
$link = mysql_connect("xxxxxxxxx","xxxxxxxxx","xxxxxxxxxx");

// Anfrage erstellen
$query = sprintf("SELECT * FROM ResBar WHERE user='%s' AND password='%s'",
            mysql_real_escape_string($user),
            mysql_real_escape_string($password));

mysql_select_db("xxxxxxxxxx") or die ("Die Datenbank existiert nicht.");


habe jetzt auf empfehlung von Euch meine Abfrage auf msqli umgebaut und da habe ich noch ein Problem mit der DB Abfrage
Da ich nicht alle Daten anzeigen möchte weiß ich hier nicht wie die "WHERE" Abfrage eingebaut werden muß.

PHP:
require_once ('konfiguration-ResBar.php');



$sql = "SELECT * FROM ResBar";  // in diese Zeile muß die WHERE Abfrage 
 
$db_erg = mysqli_query( $db_link, $sql );
if ( ! $db_erg )
{
  die('Ungültige Abfrage: ' . mysqli_error());
}
 
echo '<table border="1">';
while ($zeile = mysqli_fetch_array( $db_erg, MYSQL_ASSOC))
{
	echo "<tr>";
	echo "<td>". $zeile['id'] . "</td>";
	echo "<td>". $zeile['bild'] . "</td>";
	echo "<td>". $zeile['restaurantname'] . "</td>";
	echo "<td>". $zeile['familienname'] . "</td>";
	echo "<td>". $zeile['vorname'] . "</td>";
	echo "<td>". $zeile['montag'] . "</td>";
	echo "<td>". $zeile['strasse'] . "</td>";
	echo "<td>". $zeile['plz'] . "</td>";
	echo "<td>". $zeile['telefon'] . "</td>";	
	echo "</tr>";
}

echo "</table>";
 
mysqli_free_result( $db_erg );

und das ist meine Auswahltabelle

Code:
<form action="Ausgabe.php" method="post" name="finden" >


<fieldset><legend><span class="Stil1">Suchkriterien</span></legend>

<table width="100%" border="0" cellpadding="2" cellspacing="0"   bgcolor="#2F2F2F"><tr><td colspan="3" ><table width="100%" border="0" cellpadding="2" cellspacing="0" bgcolor="#EBC09A">
  <tr>
    <th colspan="5" scope="col"><img src="images/leiste-schatten-oben-braun.gif" width="100%" height="24" /></th>
  </tr>
  <tr>
    <td width="1%">&nbsp;</td>
    <td width="25%"><span class="Stil3">Plz. mind. 3 Stellen</span></td>
    <td width="26%"><span class="Stil3">Ort</span></td>
    <td colspan="2">&nbsp;</td>
  </tr>
  
  
  <tr>
    <td>&nbsp;</td>
    <td>
    <input name="plz" type="text" size="6" maxlength="6" />     </td>
    
    <td colspan="3">
    <input name="ort" type="text" size="40" maxlength="38" />    </td>
  </tr>
  
  
  <tr>
    <td><span class="Stil2"></span></td>
    <td width="25%"><span class="Stil3">Art der K&uuml;che</span></td>
    <td width="25%"><span class="Stil3">Garten</span></td>
    <td width="25%"><span class="Stil3">Behinderten gerecht</span></td>
    <td width="25%"><span class="Stil3">&Uuml;bernachtung m&ouml;glich</span></td>
  </tr>
  
  
  
<tr>
    <td>&nbsp;</td>
    <td>
        <select name="kueche" id="kueche"  size="1" maxlength="30" >
        <option> </option>
        <option>fränkisch</option>
        <option>deutsch</option>
        <option>italienisch</option>
        </select>    </td>
    <td>
        <select name="garten" id="garten"  size="1" maxlength="5" >
        <option> </option>
        <option>ja</option>
        <option>nein</option>
        </select>    </td>
    <td>
        <select name="behindert" id="behindert"  size="1" maxlength="5" >
        <option> </option>
        <option>ja</option>
        <option>nein</option>
        </select>    </td>
    <td>
        <select name="nacht" id="nacht"  size="1" maxlength="5" >
        <option> </option>
        <option>ja</option>
        <option>nein</option>
        </select>   </td>
</tr>
<tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td colspan="2">&nbsp;</td>
</tr>
<tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td colspan="2">&nbsp;</td>
</tr>
<tr>
    <td colspan="5" >&nbsp;
        <input type="submit" name="submit" value="suchen" />
        <input type="reset" value="Löschen" onClick="return confirm('Wirklich Eingaben verwerfen?')" /></td>
 </tr>
 <tr>
    <td colspan="5">
        <img src="images/leiste-schatten-unten-braun.gif" width="100%" height="24" />    </td>
</tr>
</table></td>
</tr>
</table>
</fieldset>


           
</form>


ein kleines Beispiel würde mir schon (hoffentlich) genügen damit ich selber weiter komme.

Danke
mfg
Rainer
 
Gar nicht schwierig.

PHP:
$query = sprintf("SELECT * FROM ResBar WHERE user='%s' AND password='%s'",
            mysqli_real_escape_string($db_link, $user),
            mysqli_real_escape_string($db_link, $password));

Reicht das schon zur Antwort?

Die mysqli-Funktionen (oder -Methoden) hängen eben zwingend an einer Instanz/„Verbindung“, wohingegen die Angabe der Verbindung bei den mysql-Funktionen „freiwillig“ war.
 
hallo mermshaus
Danke, ja das reicht damit komme ich erst mal weiter.

Hast Du oder auch jemand anders eine Antwort auf meine erste Frage, was als Zugang besser ist ?

Danke
mfg
Rainer
 
Die Frage verstehe ich nicht so richtig. In den beiden Beispielen steht von der Funktion her unterschiedlicher Code und einmal nutzt du zudem mysql und einmal mysqli.
 
Falls die Frage auf Mysql vs MysqlI bezogen ist:
MysqlI.

mysql_irgendwas ist für Neuentwicklungen inakzeptabel.

Sonst: Wie soll man beurteilen, was besser ist, wenn die Codes verschiedene Sachen machen?
Wenns das Gleiche wär, nur auf verschiedene Arten, könnte man das ja beurteilen. Aber sonst...
 
Zurück