php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Warning: mysql_fetch_assoc(): php/sql


 
andrassberlin
21-02-2006, 21:48 
 
Hallo,

zuerst meine Fehlermeldung:


Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in
C:\apache\xampp\htdocs\pflege\home\html\service\recherche_bland.php on line 48

Zeile 48: while($row = mysql_fetch_assoc($result))

Und hier mein gekürztes Script:

<?php
error_reporting(E_ALL);
include('./config.php');
$bundesland = $_POST["Bundesland"];

$seite = (isset($_GET["seite"]))?$_GET['seite']:'1';
//Festlegen Einträge je Seite
$eintraege_pro_seite = 2;

//Welche Spalte zu erst?:
$start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;


$result = mysql_query("SELECT COUNT(dlbl) FROM dbdl WHERE
dlbl='".$bundesland."'") or die(mysql_error());
$menge = mysql_num_rows($result);

//Wieviele Seiten insgesamt?
$anzahl_seiten = $menge / $eintraege_pro_seite;


echo "<div align=\"center\">";
echo "<b>Seite:</b> ";


for($a=0; $a < $anzahl_seiten; $a++)
{
$b = $a + 1;

echo ($seite==$b)?"<b><i>$b</i></b>":" <a href=\"
index.php?site=./home/html/service/recherche_bland.php&seite=$b\">$b</a> ";
}

echo "</div>";


$sql = "SELECT * FROM dbdl ORDER BY bname ASC LIMIT $start WHERE DLBL='$bundesland', $eintraege_pro_seite";
$result = mysql_query($sql);

while($row = mysql_fetch_assoc($result))
{
$pdname = $row["DLNAME"];


echo ' Hier die Ausgabe in Tabellenform ';
}

?>

Mein Script soll die Datenbankabfrage auf mehrere Seiten verteilen.
Zuerst ermittelt es alle Einträge in der Spalte dlbl (keine ID, sondern Wörter). Später fragt es die Tabelle nach einzelnen Spalteninhalten ab und gibt diese je nach $eintraege_pro_seite aus. Die Seiten werden zwar angeziegt, aber anschließend bekomme ich immer diese Fehlermeldung .
Warum?

Vielen Dank schon mal,
Andreas

 
Enerkin
21-02-2006, 22:07 
 
$sql = "SELECT * FROM dbdl ORDER BY bname ASC LIMIT $start WHERE DLBL='$bundesland', $eintraege_pro_seite";
da is der fehler.
du kannst nicht WHERE nach LIMIT setzen, LIMIT kommt immer ganz am schluss..

 
andrassberlin
21-02-2006, 22:17 
 
Hallo Enerkin,

vielen Dank für die rasche Antwort.

Ich habe das geändert.
$sql = "SELECT * FROM dbdl WHERE DLBL='$bundesland' LIMIT $start, $eintraege_pro_seite";

Jetzt wird aber immer nur ein Eintrag angezeigt, trotz 4 Tabelleneinträgen werden keine weiteren drei Seiten angezeigt. Ich komm da nicht mit klar. Es stimmt doch alles!

Hast Du noch eine Idee?


Andreas

 
wahsaga
21-02-2006, 22:23 
 
http://www.php-resource.de/forum/showthread.php?s=&threadid=50454

 
andrassberlin
21-02-2006, 22:30 
 
error_reporting(E_ALL);
und
$result = mysql_query("SELECT COUNT(DLBL) FROM dbdl WHERE dlbl='".$bundesland."'") or die(mysql_error()); und
$result = mysql_query($sql) or die(mysql_error());

sind aber im Code eingebaut.

Es gibt keine Fehlermeldungen,

Andreas

 
wahsaga
21-02-2006, 22:33 
 
Und wo sind deine Kontrollausgaben des Query Strings?

 
andrassberlin
21-02-2006, 22:41 
 
Meinst Du das so:
$sql = "SELECT * FROM dbdl WHERE DLBL='$bundesland' LIMIT $start, $eintraege_pro_seite";
$result = mysql_query($sql) or die(mysql_error($sql));
?

Falls Du das so meinst, dann muß ich Dich leider enttäuschen: keine Meldungen.
...Bin ja schon froh, dass ich überhaupt schon so viel geschafft habe...
Wenn ich falsch liege, würdest Du mir bitte sagen, wie Du das mit den Kontrollausgaben des Query Strings meinst?

Vielen Dank, Andreas

 
andrassberlin
21-02-2006, 23:06 
 
Hallo,

erhalte jetzt folgende Fehlermeldung:

Notice: Undefined index: Bundesland in C:\apache\xampp\htdocs\pflege\home\html\service\recherche_bland.php on line 4


line 4: $bundesland = $_POST["Bundesland"];

ICh habe jetzt einfach die Id's auszählen lassen und das läuft problemlos. Auch die Anzahl der Seiten werden angezeigt. Jedoch wird die Variable $bundesland nicht übergeben wenn ich Seite 2 wähle, trotzdem Sie ja im Quelltext enthalten ist. Auf der 1. Seite gibt es die Variable noch. Ich finde keine Lösung für das Problem. Da hier sicherlich einige Experten sind: wer gibt mir noch einen Tip?

Danke,
Andreas

 
andrassberlin
21-02-2006, 23:51 
 
Es ist sicherlich der Quelltext erforderlich um dem Problem auf den Grund zu gehen:

<?php
error_reporting(E_ALL);
$bundesland = $_POST["Bundesland"];
?>
...
<?php

$seite = (isset($_GET["seite"]))?$_GET['seite']:'1';
$eintraege_pro_seite = 2;

//Ausrechen welche Spalte man zuerst ausgeben muss:
$start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;


$result = mysql_query("SELECT Id FROM dbdl WHERE dlbl='".$bundesland."'") or die(mysql_error());
$menge = mysql_num_rows($result) or die (mysql_error().'<hr />'.'$result'.'<hr />');

//Errechnen wieviele Seiten es geben wird
$anzahl_seiten = $menge / $eintraege_pro_seite;


echo "<div align=\"center\">";
echo "<b>Seite:</b> ";


for($a=0; $a < $anzahl_seiten; $a++)
{
$b = $a + 1;

echo ($seite==$b)?"<b><i>$b</i></b>":" <a href=\"index.php?site=./home/html/service/recherche_bland.php&seite=$b\">$b</a> ";
}

echo "</div>";


$sql = "SELECT * FROM dbdl ORDER BY bname ASC LIMIT $start, $eintraege_pro_seite";
$result = mysql_query($sql) or die (mysql_error().'<hr />'.'$sql'.'<hr />');

if (mysql_num_rows($result)>0)
{

while($row = mysql_fetch_assoc($result))
{
$pdname = $row["DLNAME"];
...

echo ' Ausgabe der Ergebnisse';
}
}
else {
echo'
nix gefunden!';
}


?>


Wie bereits geschrieben: Alles funzt wunderbar bis auf die Weiergabe der Varaiblen $bundesland. Auf Seite 1 ist diese ok wird also ausgegeben. Aber nach link auf Seite 2 ist sie weg!
Warum? Keine Fehlermeldung!
Wer weiß Rat?

Vielen Dank,
Andreas

 
asp2php
22-02-2006, 00:02 
 
wenn du über Link kommst, dann gibt es nichts in $_POST, also gibt Bundesland mit im Link als URL-Variable mit, dann kannst du mit $_GET auslesen.

 
andrassberlin
22-02-2006, 00:24 
 
Erst einmal danke für Deine Antwort!

Habs mal so probiert erfolgreiche Übergabe:
echo ($seite==$b)?"<b><i>$b</i></b>":" <a href=\"index.php?site=./home/html/service/
recherche_bland.php&var=$bundesland&seite=$b\">$b</a> ";

Das mit der Übergabe in der url klappt, wie gesagt. ;-) Aber wie baue ich diese ein?
Ich bekomme das erste mal $bundesland von einem swf-file (landkarte Deutschland). Durch klick auf ein Bundesland wird die variable auf die Seite recherche_bland.php miitels post übergeben. Dann erscheinen also je nach Anzahl der Tabellenelemente pro Seite die Einträge. WEitere Einträge sollen dann mitklick auf die nächsten Seiten angezeigt werden. Aber wie vermittle ich dann zwischen $_Post und $_Get ?

Andreas

 
andrassberlin
22-02-2006, 12:57 
 
Hallo,

Notice: Undefined index: Bundesland in ...recherche_bland.php on line 4 , alos in :$bundesland = $_POST["Bundesland"];


ich habe mir ein Script geschrieben, dass Tabelleninhalte abfragt und auf mehreren Seiten verteilt. Der Wert der Variablen $bundesland wird von einem swf-file via $_POST an recherche_bland.php gesendet. Dort wird die Tabelle ausgelesen. Sind viele Einträge innerhalb der Tabelle und die $einträge_pro_seite geringer, werden alle weiteren Einträge auf andere Seiten via $_GET verteilt. Das klappt soweit ganz gut. Aber die Variable $bundesland wird dann nicht via $_POST übergeben sondern nur über $_GET. Wäre es denn überhaupt möglich ein und dieselbe variable einmal mit $_POST und dann wieder mit $_GET zu übergeben und falls nein: wie könnte man das besser machen? Da ich noch nicht so fit im Umgang mit php bin, wäre ich für verständliche Hinweise sehr dankbar.

hier der stark gekürzte Quellcode:

<?php
error_reporting(E_ALL);
include('./config.php');
$bundesland = $_POST["Bundesland"];
$bundesland= $_GET['Bundesland'];


$seite = (isset($_GET["seite"]))?$_GET['seite']:'1';
$eintraege_pro_seite = 1;

//Ausrechen welche Spalte man zuerst ausgeben muss:
$start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;


$result = mysql_query("SELECT Id FROM dbdl WHERE dlbl='".$bundesland."'") or die(mysql_error());
$menge = mysql_num_rows($result) or die (mysql_error($result));

//Errechnen wieviele Seiten es geben wird
$anzahl_seiten = $menge / $eintraege_pro_seite;


echo "<div align=\"center\">";
echo "<b>Seite:</b> ";


for($a=0; $a < $anzahl_seiten; $a++)
{
$b = $a + 1;

echo ($seite==$b)?"<b><i>$b</i></b>":" <a href=\"index.php?site=./home/html/service/
recherche_bland.php&var=$bundesland&seite=$b\">$b</a> ";
}

echo "</div>";


$sql = "SELECT * FROM dbdl WHERE dlbl='".$bundesland."' LIMIT $start, $eintraege_pro_seite";
$result = mysql_query($sql) or die (mysql_error($sql));

if (mysql_num_rows($result)>0) { // gibt es Tabelleneinträge?

while($row = mysql_fetch_assoc($result))
{
$pdname = $row["DLNAME"];

echo ' ... tabellarische Ausgabe ';
}
}
else { //falls keine Einträge
echo ' ...Ausgabe: leer ';
}


?>


Andreas

 
wahsaga
22-02-2006, 12:59 
 
*seufz* Noch jemand, der sich offenbar entschieden hat, mit einem Trivialproblem nach dem anderen ins Forum gerannt zu kommen ...

Warum fragst du nicht ab, ob $_GET['xyz'] oder $_POST['xyz'] gesetzt sind und einen Wert enthalten - und nimmst dann jeweils diesen?

Oder du benutzt gleich $_REQUEST.

 
andrassberlin
22-02-2006, 13:08 
 
... aber das ist doch der Sinn eines Forums...

Danke für Deine Anwort, werd' ich mal probieren. FAlls es nicht klappt, werde ich sicherlich noch einmal hier posten...


Andreas


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:19 Uhr.