CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos

|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP 
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken |

23.08.2005, 12:52:06
|
Anfänger
|
|
Registriert seit: Jan 2004
Ort: Warstein-Niederbergheim
Beiträge: 82
|
|
Suchfunktion bringt Fehlermeldung mit sich
Hallo,
ich bin dabei mir ein privates db-orientiertes Telefonbuch zu basteln, welches eine Suchfunktion beinhaltet.
Doch leider funktioniert die Suchfunktion nicht so, wie ich es gerne hätte.
Sobald ich die Seite aufrufe, erscheinen folgende Fehlermeldungen :
Zitat:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /members_only/telefon_suche.php on line 27
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /members_only/telefon_suche.php on line 43
|
in zeile 27 steht folgendes:
Zitat:
$anz = mysql_num_rows($res);
|
und in zeile 43:
Zitat:
$anz2 = mysql_num_rows($res2);
|
damit man den ganzen zusammenhang sieht poste ich noch den Quelltext der Suchfunktion:
PHP-Code:
<?php
require('../db.php');
function getUser($suchfeld, $page)
{
$page = (int) $page;
if ($page <= 0) $page=1;
if(!empty($suchfeld)) {
$suchfeld = trim($suchfeld);
$suchfeld = str_replace(" ","%",$suchfeld);
$suchfeld = "%".$suchfeld."%";
$suche = " SELECT
id, name, nummer, strasse, datum
FROM
".$table_prefix."telefon
WHERE
name LIKE '$suchfeld' OR
nummer LIKE '$suchfeld'";
} else {
$suche = " SELECT
id, name, nummer, strasse, datum
FROM
".$table_prefix."telefon";
}
$res = mysql_query($suche);
$anz = mysql_num_rows($res);
$itperpage = 3;
$maxpages_int = (int) ($anz/$itperpage);
$maxpages_float = $anz/$itperpage;
if ( $maxpages_float > $maxpages_int ) {
$maxpages = (int)(($anz/$itperpage)+1);
} else {
$maxpages = (int)(($anz/$itperpage));
}
if ($page > $maxpages) $page = $maxpages;
$suche2 = $suche." ORDER BY id ASC limit ".(($page-1)*$itperpage).",$itperpage";
$res2 = mysql_query($suche2);
$anz2 = mysql_num_rows($res2);
if($anz > 0) {
if(empty($suchfeld)) {
$head = "
<table width='500' border='0' cellspacing='1' cellpadding='1' align='center'><tr>
<td><strong>$anz User in der Datenbank. Pro Seite werden $itperpage User
angezeigt.</strong></td></tr></table>";
} else {
if($anz > 1) { $wortlaut = "wurden"; } else { $wortlaut = "wurde"; }
$head = "
<table width='500' border='0' cellspacing='1' cellpadding='1' ><tr>
<td><strong>Mit Ihrer Suchabfrage $wortlaut $anz Treffer
gelandet.</strong></td></tr></table>";
}
$i = 0;
$navi_left = "";
$navi_right = "";
$telefonliste = "";
$show_navi = "";
// Start der WHILE Schleife
while ($row = mysql_fetch_array($res2, MYSQL_ASSOC)) {
// Hier wird die Zeilenhintergrundfarbe für jeden Datensatz festgelegt,
// dies dient der Übersicht
if($i%2==0) { $trcolor = "#FFFFFF"; } else { $trcolor = "#DADADA"; }
if ($page > 1){
$navi_left = "<strong><input type=button value=\"«\"
onClick=\"pageset($page-1)\" style=\"WIDTH:25px\"></strong>";
}
if ($page < $maxpages){
$navi_right = "<strong><input type=button value=\"»\"
onClick=\"pageset($page+1)\" style=\"WIDTH:25px\"></strong>";
}
if(isset($_POST['suchfeld']) && !empty($_POST['suchfeld'])) {
$val_suchfeld = $_POST['suchfeld'];
} else {
$val_suchfeld = "";
}
$show_navi =
"
<form name='form1' method='post' action='?action=telefon_suche' style='margin:0px;padding:0px'>
<table width='500' border='0' cellspacing='1' cellpadding='1' align='center'>
<tr>
<td width='50%'>
<input type=button value=\"Seite\" style=\"WIDTH:50px\" onClick=\"pageset2()\">
<input name='page' type='text' id='page' value='$page' style=\"WIDTH:60px\">
von $maxpages $navi_left$navi_right
</td>
<td width='60%'><div align = 'right'>
Suchen: <input name='suchfeld' type='text' id='suchfeld' value = '$val_suchfeld'
style=\"WIDTH:120px;HEIGHT:16px\">
<input type=submit value=\"Finden\" style=\"WIDTH:45px\">
<input type=hidden name=page_no value=\"$page\">
</div></td>
</tr>
</table>
</form>
";
$telefonliste = $telefonliste .
"
<tr bgcolor = '$trcolor'>
<td width='100'><div align='center'>$row[id]</div></td>
<td width='100'><div align='left'>$row[name]</div></td>
<td width='100'><div align='left'>$row[nummer]</div></td>
<td width='100'><div align='left'>$row[strasse]</div></td>
<td width='100'><div align='left'>$row[datum]</div></td>
</tr>
";
$i++; // Zählschleife um 1 erhöhen
}// WHILE Schleife abschließen
} else {
$telefonliste = "
<tr>
<td colspan='5'><div align='center'>Keine Ergebnisse fuer Ihre Suche!<br><br>
<a href='?action=telefon'>Zurck zur Userliste</a></div>
</td>
</tr>";
}
$fertig = "
<table width='500' border='0' cellspacing='1' cellpadding='1' align='center'>
<tr bgcolor='#36698A'>
<td width='100'><div align='center'><strong>ID</strong></div></td>
<td width='100'><div align='center'><strong>Name</strong></div></td>
<td width='100'><div align='center'><strong>Nummer</strong></div></td>
<td width='100'><div align='center'><strong>Strasse / Ort</strong></div></td>
<td width='100'><div align='center'><strong>Datum</strong></div></td>
</tr>
$userliste
</table>
";
return $head.$show_navi.$fertig;
} // Funktion schließen – FERTIG
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Translation//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="Type" con; charset=UTF-8" >
<TITLE>Blaetterfunktion mit Navigator und Suchfunktion</TITLE>
<script language="JavaScript" type="text/javascript">
function pageset(wert)
{
document.form1.page_no.value = wert;
document.form1.submit();
}
function pageset2()
{
document.form1.page_no.value = document.form1.page.value;
document.form1.submit();
}
</script>
</head>
<body>
<?
// Aufruf der Funktion getUser() mit Suchbegriff und Seitennummer
echo $show = getUser($_POST['suchfeld'],$_POST['page_no']);
?>
</body>
</html>
leider scheine ich taub auf den augen zu sein, da ich den fehler nicht finde.
Die verbindungsdaten kommen aus der db.php sowie auch die variable $table_prefix.
Vielleicht findet einer von euch den fehler.
Danke schon mal im vorraus
__________________
On the side of the software box, in the "System Requirements" section, it said "Requires Windows 2000/XP or better". So I installed Linux.
|

23.08.2005, 13:30:23
|
SELFPHP Guru
|
|
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
|
|
AW: Suchfunktion bringt Fehlermeldung mit sich
du hast mit ziemlicher sicherheit syntax-fehler bei deiner sql-abfrage.
ich empfehle als lektüre ja immer wieder das hier:
http://www.selfphp.com/forum/showthread.php?t=8195
hilfreich ist vor allem erst mal ein echo $sql und ein mysql_query( $sql ) or die( mysql_error() );
das würde dir sehr wahrscheinlich sagen, dass es die tabelle nicht gibt, die du dort ansprichst, weil innerhalb der funktion $table_prefix nicht definiert sein dürfte.
|

23.08.2005, 13:34:11
|
 |
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: Suchfunktion bringt Fehlermeldung mit sich
Wenn mysql_num_rows() bzw. mysql_fetch_*() einen solche Fehlermeldung liefern, bedeutet dies, dass keine gültige MySQL Resource als Argument an die Funktion übergeben wurde, was meistens immer dann der Fall ist, wenn die zugehörige MySQL-Abfrage syntaktisch fehlerhaft war. Diesen Fehler kannst du mit der Funktion mysql_error() ermitteln:
PHP-Code:
<?php
$res = mysql_query($suche) or die(mysql_error());
?>
EDIT: Da war ich wohl zu langsam...
Geändert von xabbuh (23.08.2005 um 13:34:43 Uhr)
|

23.08.2005, 16:20:52
|
Anfänger
|
|
Registriert seit: Jan 2004
Ort: Warstein-Niederbergheim
Beiträge: 82
|
|
AW: Suchfunktion bringt Fehlermeldung mit sich
Fehler gefunden :(
es liegt an der auswahl der Datenbank. laut db.php weise ich der variablen $table_prefix den wert portal_ zu.
nur aus irgendeinem Grund wird die variable neu gefüttert und er nimmt den Namen der Datenbank und nicht den der benötigten Tabelle.
__________________
On the side of the software box, in the "System Requirements" section, it said "Requires Windows 2000/XP or better". So I installed Linux.
|

23.08.2005, 16:58:19
|
Anfänger
|
|
Registriert seit: Aug 2005
Beiträge: 21
|
|
AW: Suchfunktion bringt Fehlermeldung mit sich
$table_prefix ist vermutlich innerhalb deiner Funktion nicht bekannt. Jedenfalls wird es nicht als Parameter übergeben.
Da bin ich früher auch schon oft reingefallen ;)
Füge in deiner Funktion am Anfang ein:
PHP-Code:
global $table_prefix;
ein, falls $table_prefix außerhalb der Funktion definiert wurde.
Besser wäre vielleicht, den Präfix als Konstante zu definieren, da ist der dann überall im Skript bekannt.
Gruß Marian
|

23.08.2005, 17:02:24
|
SELFPHP Guru
|
|
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
|
|
AW: Suchfunktion bringt Fehlermeldung mit sich
Zitat:
Zitat von heddesheimer
$table_prefix ist vermutlich innerhalb deiner Funktion nicht bekannt. Jedenfalls wird es nicht als Parameter übergeben.
Da bin ich früher auch schon oft reingefallen ;)
Füge in deiner Funktion am Anfang ein:
PHP-Code:
global $table_prefix;
ein, falls $table_prefix außerhalb der Funktion definiert wurde.
Besser wäre vielleicht, den Präfix als Konstante zu definieren, da ist der dann überall im Skript bekannt.
Gruß Marian
|
beide lösungen sind in meinen augen ziemlich unsauber. am saubersten (aus meiner sicht) wäre es, den praefix mitzuübergeben.
|

23.08.2005, 18:55:41
|
Anfänger
|
|
Registriert seit: Jan 2004
Ort: Warstein-Niederbergheim
Beiträge: 82
|
|
AW: Suchfunktion bringt Fehlermeldung mit sich
Aber der Prefix ist doch als konstante in der db.php eingetragen, da erhält er ja auch seinen zu benutzenden wert.
Weil sonst funzt das in allen funktionen die ich in meiner seite benutze. Nur halt da nicht.
Nachtrag:
mit global $table_prefix; funzt es.
Danke noch mal an alle für die Hilfe
__________________
On the side of the software box, in the "System Requirements" section, it said "Requires Windows 2000/XP or better". So I installed Linux.
Geändert von hoschy (23.08.2005 um 19:05:20 Uhr)
|

23.08.2005, 19:06:17
|
 |
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
AW: Suchfunktion bringt Fehlermeldung mit sich
In deinem Script steht $table_prefix und das ist eine Variable, keine Konstante.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 19:00:39 Uhr.
|