online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon fisconion vom 18.03.2022, 10:19 Options

PHP Abfrage für MYSQL

Hi!

Kann mir jemand sagen, warum bei dieser Abfrage der Inhalt meiner Tabelle nicht angezeigt wird?



<?php
mysql_connect("server","nutzer","passwort");

$db_sel = mysql_select_db("datenbank") or die("Auswahl der Datenbank fehlgeschlagen");

$sql = "SELECT * FROM `tabelle` LIMIT 0, 30";

$db_erg = mysql_query( $sql );
if ( ! $db_erg )
{
die('Ungültige Abfrage: ' . mysql_error());
}

echo '<table border="1">';
while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC))
{
echo "<tr>";
echo "<td>". $zeile['1'] . "</td>";
echo "<td>". $zeile['2'] . "</td>";
echo "<td>". $zeile['3'] . "</td>";
echo "<td>". $zeile['4'] . "</td>";
echo "<td>". $zeile['5'] . "</td>";
echo "<td>". $zeile['6'] . "</td>";
echo "</tr>";
}
echo "</table>";

mysql_free_result( $db_erg );
?>


Antwort schreiben

Antwort 1 von son_quatsch vom 18.03.2022, 10:40 Options

Weil deine Tabellenspalten mit Sicherheit nicht "1", "2", "3"... usw heißen. Es ist ein Unterschied, ob du einen Feldindex über eine Zahl oder einen Text ansprichst. Du machst letzteres.

Was du eigentlich wolltest (erkenne die Unterschiede):
echo '<table border="1">';
while ($zeile = mysql_fetch_array( $db_erg, MYSQL_BOTH))
{
echo "<tr>";
echo "<td>". $zeile[1] . "</td>";
echo "<td>". $zeile[2] . "</td>";
echo "<td>". $zeile[3] . "</td>";
echo "<td>". $zeile[4] . "</td>";
echo "<td>". $zeile[5] . "</td>";
echo "<td>". $zeile[6] . "</td>";
echo "</tr>";
}
echo "</table>";


Wie es sehr viel einfacher geht:
echo '<table border="1">';
while( $zeile= mysql_fetch_array( $db_erg, MYSQL_BOTH ) ) {
  echo '<tr>';
  foreach( $zeile as $wert ) echo "<td>$wert</td>";
  echo '</tr>';
}
echo '</table>';

Antwort 2 von fisconion vom 18.03.2022, 11:01 Options

Hallo! Danke für die HIlfe. Es funktioniert. Ich habe aber MYSQL_BOTH wieder geändert, da alle Spalten doppelt angezeigt wurden.

Mit welchen Befehl ann ich eine "Umblätter-Funktion" einbauen, um Platz nach unten zu sparen?

Gruß und nochmal danke!!!!

Antwort 3 von son_quatsch vom 18.03.2022, 11:14 Options

Stimmt, mein Fehler: bei MYSQL_BOTH wäre sowohl der Zugriff über Zahl (0, 1, 2...) als auch den Tabellennamen für die Spalten möglich - was in der Schleife doppelt die Spalten ausgibt.

Deine "Umblätter-Funktion" hast du schon in der SQL-Abfrage drin: LIMIT.

Antwort 4 von fisconion vom 18.03.2022, 11:23 Options

Ja, das mit Limit ist soweit klar. Nur der Link zu den nächsten hier 30 Einträgen fehlt.

Antwort 5 von son_quatsch vom 18.03.2022, 11:50 Options

Wenn dir das mit dem LIMIT tatsächlich klar ist, dann fehlt dir das Verständnis zu HTML-Parametern. Folgendes Beispiel:


<?php

	$oCon= mysql_connect( 'localhost', 'root', '' ) or die( 'Verbindung fehlgeschlagen: '. mysql_error() );
	mysql_select_db( 'test' ) or die( 'Auswahl der Datenbank fehlgeschlagen: '. mysql_error() );

	// Aufrufparameter feststellen und ggf. erfassen
	$iStart= isset( $_REQUEST['start'] )? max( (int)$_REQUEST['start'], 0 ): 0;
	$iProSeite= 30;  // wieviele Datensätze auf einer Seite angezeigt werden

	$sql= "SELECT * FROM tabelle2 LIMIT $iStart, $iProSeite";

	$oErg= mysql_query( $sql ) or die( 'Abfrage fehlgeschlagen: '. mysql_error() );

	$sOut= '<table border="1">';
	while( $aSatz= mysql_fetch_array( $oErg, MYSQL_NUM ) ) {  // alle Ergebnisdatensätze durchlaufen
		$sOut.= '<tr>';
		foreach( $aSatz as $sWert ) $sOut.= "<td>$sWert</td>";  // alle Spalten durchlaufen
		$sOut.= '</tr>';
	}
	$sOut.= '</table>';

	mysql_free_result( $oErg );  // Ergebnis freigeben
	mysql_close( $oCon );  // Verbindung freigeben

	// Link nur anzeigen, wenn nicht bereits am Anfang; MAX() verhindert negative Startpunkte
	if( $iStart> 0 ) $sOut.= '<br><a href="?start='. ( max( $iStart- $iProSeite, 0 ) ). '">vorige Seite</a>';

	// Link immer anzeigen - wir wissen nicht, wieviel Datensätze noch kommen könnten
	$sOut.= '<br><a href="?start='. ( $iStart+ $iProSeite ). '">nächste Seite</a>';

	echo $sOut;

?> 

Antwort 6 von fisconion vom 18.03.2022, 12:11 Options

danke! ich werde mir das mal genauer anschauen. hatte bereits versucht bei limit X, Y , X und Y durch andere parameter zu ersetzen. hat aber nicht geklappt. mir ist aber schon geholfen. DANKE!

Ähnliche Themen

PHP-MySQL Fehler
detommy  01.12.2008 - 29 Hits - 3 Antworten

php/mysql Datenbankzugriff schützen
dasbinichich  17.06.2009 - 333 Hits - 3 Antworten

OpenSource Browsergame in PHP und MySQL
TByte  04.08.2009 - 1031 Hits - 5 Antworten

PHP/MySQL Anzeige von 838:59:59 umgehen
Max1511  14.08.2009 - 499 Hits - 21 Antworten

Anwendung PHP/MySql absichern
wiemachichdas  16.10.2009 - 331 Hits - 4 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026