Wo ist der Fehler, ich suche seit 1h...

x0x

Erfahrenes Mitglied
Code:
PHP:
<?php
include ("attachment/mysql.php");
mysql_select_db($db_name,$connection);

while ($row = mysql_fetch_array("SELECT * FROM blabla"))
{
echo
?>
.
.
.
<?php
;
}
mysql_close($connection);
?>

Angezeigter Fehler:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in meineseite.php on line 5
 
du musst dein Query per "mysql_query()" ausführen..... dessen Ergebnis kannst du dann mit "mysql_fetch_array() " verarbeiten;
 
Hab den Code nun so geändert:

PHP:
$result = mysql_query("SELECT * FROM blabla");

while ($row = mysql_fetch_array($result))

Nun kommt der selbe Fehler in der Zeile der While Schleife, hat also nix verändert. Obwohl es doch die Änderung war die du meintest oder?
 
PHP:
<?php 
include ("attachment/mysql.php"); 
mysql_select_db($db_name,$connection); 
$result = mysql_query('SELECT * FROM blabla');
if(mysql_num_rows($result) > 0)
{
    while ($row = mysql_fetch_array($result)) 
    { 
    echo 
?> 
. 
. 
. 
<?php 
; 
} 
}
mysql_close($connection); 
?>

Kann es sein das Du auf leere results fetchst ?
probiers mal so....

Gruss Danilo
 
wenn ich das so mache kommt ein fehler in der zeile der num rows.

das ist komisch. der code ist doch eigentlich richtig, cih verstehe nicht, warum das nicht geht. die mysql.php ist auch in ordnung...

liegt es vielleicht an der tabelle in der datenbank?
 
Also ich weis net, aber würde es net besser so sein


PHP:
<?php 
include ("attachment/mysql.php"); 

#Ich weis ja net ob du in der mysql.php schon connectest#

mysql_connect("$dbhost","$dbuser","$dbpass")or die
  ("Keine Verbindung moeglich");

mysql_select_db("$dbname")or die ("Die Datenbank existiert nicht");


$result = mysql_query("SELECT * FROM blabla"); 
if (mysql_num_rows ($result) > 0) 
{ 
    while ($row = mysql_fetch_array($result)) 
    { 
    echo 
?> 
. 
. 
. 
<?php 
; 
} 
} 
mysql_close($connection); 
?>

Ich bin mir aber nicht sicher ob es so mit dem While klappt
 
Original geschrieben von Gariel
Also ich weis net, aber würde es net besser so sein


PHP:
<?php 
include ("attachment/mysql.php"); 

#Ich weis ja net ob du in der mysql.php schon connectest#

mysql_connect("$dbhost","$dbuser","$dbpass")or die
  ("Keine Verbindung moeglich");

mysql_select_db("$dbname")or die ("Die Datenbank existiert nicht");


$result = mysql_query("SELECT * FROM blabla"); 
if (mysql_num_rows ($result) > 0) 
{ 
    while ($row = mysql_fetch_array($result)) 
    { 
// Hier ist das PROBLEM
// -----------------------------------------------
// Nimm das echo weg. Das brauchst du nicht. alles was nach ?> kommt ist sowieso HTML
    echo 
?> 
. 
. 
. 
<?php 
; 
} 
} 
mysql_close($connection); 
?>


Ich bin mir aber nicht sicher ob es so mit dem While klappt
 
Auch beim weglassen des "echo" kommt noch der Fehler. Ich connecte auch schon in der mysql.php.

Ich zeig euch mal hier alle Dateien die was damit zu tun haben:

mysql.php:
PHP:
<?php
$db_host = "XXX";
$db_user = "XXX";
$db_pw = "XXX";
$db_name = "XXX";
$connection = mysql_connect("$db_host","$db_user","$db_pw");
?>

index.php(hier wird die datei mit dem fehler includet):
PHP:
<?php
session_start();
?>
.
.
.
<td width="100%" valign="top">
<?php
switch($site){
case "*": include("sites/*.php"); break;
case "*": include("sites/*.html"); break;
case "*": include("sites/*.html"); break;
case "*": include("sites/*.html"); break;
case "*": include("sites/Fehlerseite.php"); break;
case "*": include("sites/*.html"); break;
// other cases
case "loginver": include("sites/*/login_ver.php"); break;
// other cases
default: include("sites/startseite.php"); break;
}
?>
</td>
.
.
.

Und nun die komplette Fehlerseite:
PHP:
<?php
include ("attachment/mysql.php");
mysql_select_db($db_name,$connection);
$result = mysql_query("SELECT * FROM blabla");

while ($row = mysql_fetch_array($result))
{
?>
<table border="1" cellpadding="0" cellspacing="0">
<tr>
<td colspan="2"><img src="<?php echo "$row[*]"; ?>" width="80" height="80"></td>
</tr>
<tr>
<td>LALA:</td>
<td><?php echo "$row[*]"; ?></td>
</tr>
<tr>
<td>Link:</td>
<td><a href="<?php echo "$row[link]"; ?>" target="blank"><?php echo "$row[link]"; ?></a></td>
</tr>
<tr>
<td>DumdiDUm:</td>
<td><?php echo "$row[*]"; ?></td>
</tr>
<tr>
<td>Beschreibung:</td>
<td><?php echo "$row[about]"; ?></td>
</tr>
</table>
<br>
<?php
}
mysql_close($connection);
?>


Ist zwar ein bisschen viel Code aber ich denke nur so kommen wir zur Lösung, denn alle bisherigen Ansätze waren ja vergeblich. Meines Erachtens gibt es auch kein normalen Fehler...
Ist bestimmt wieder irgendwas von wegen Tippfehler oder sowas...
 
Original geschrieben von u-Danilo
PHP:
<?php 
include ("attachment/mysql.php"); 
mysql_select_db($db_name,$connection); 
$result = mysql_query('SELECT * FROM blabla');
if(mysql_num_rows($result) > 0)
{
    while ($row = mysql_fetch_array($result)) 
    { 
    echo 
?> 
. 
. 
. 
<?php 
; 
} 
}
mysql_close($connection); 
?>


Kann es sein das Du auf leere results fetchst ?
probiers mal so....
Ist zwar im Grunde nicht falsch, vorher abzufragen, ob überhaupt was im Recordset steht, aber zwigend erforderlich ist das nich. Wenn keine Werte aus der Tabelle selektiert wurden oder die Tabelle leer ist, dann wird die while-Schleife gar nicht erst ausgeführt, da das Recordset in diesem Falle ja keine Ergebenisse liefert.

@xox

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in meineseite.php on line 5

Was will diese Fehlermeldung wohl sagen? Genau, dass das übergebene mySQL Resource nicht gültig ist. Sprich, bei der Abfrage kam es zu einem Problem. Und was sollte man an dieser Stelle machen? Genau:

PHP:
$result = mysql_query("SELECT * FROM blabla") OR die(mysql_error());
Ebenfalls ist es sehr hilfreich, alle SQL-Anweisungen erst immer in eine mySQL Konsole einzugeben um zu sehen, was überhaupt im Recordset drin steht und ob da schon eventuelle Fehler aufgetreten sind (Nebenbei möchte hier an dieser Stelle anmerken, dass der Tabellenname 'blabla' nicht gerade sehr aussagekräftig ist ;) )

Noch eine kleine Anmekrung zur Verbindungsherstellung:

PHP:
<?php 
$db_host    = "XXX"; 
$db_user    = "XXX"; 
$db_pw      = "XXX"; 
$db_name    = "XXX"; 
$connection = mysql_connect($db_host,$db_user,$db_pw) OR die('cant connect to database');
mysql_select_db($db_name,$connection) OR die('cant select table: '.$db_name.''); 
?>
Erstens brauchen die Parameter bei der Funktion mysql_connect nicht in Double-Quotes zu stehen und zweitens würde ich die Funktion mysql_select_db ebenfalls in die externe Datei mit reinpacken, es sei denn, du arbeitest innerhalb der Scripte mit verschiedenen Datenbanken auf dem gleichen Host.

** edit **
Mir ist eben auch gerade deine Ausgabe der Daten aufgefallen. Da sind auch einige Fehler drin.

PHP:
<td>DumdiDUm:</td> 
<td><?php echo $row[*]; ?></td> 
</tr> 
<tr> 
<td>Beschreibung:</td> 
<td><?php echo $row['about']; ?></td>
</tr>
Erstens sollten der Index immer in Single-Quotes stehen, und zweitens, der erste Index (*) macht keinen Sinn. Du musst hier schon explizit einen Index (= Spaltenname) angeben, damit eventuelle Werte ausgegeben werden können.
 
Zuletzt bearbeitet:
Zurück