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!
|
MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren |
25.01.2005, 10:39:05
|
Anfänger
|
|
Registriert seit: Aug 2004
Beiträge: 15
|
|
Suchergebnis durch Auswahl von Dropdowon1 und Dropdowon2 anzeigen
Ich, Neuling, habe entweder nach den Falschen Kriterien gesucht oder nix gescheites zu meinem Problem gefunden.
Ich bin schon seit Tagen dran herauszufinden wie ich eine Suchfunktion mit 2 oder mehr dropdown Feldern dessen Daten aus einer SQL DB kommen zu realisieren. Dabei sollte er mir nur Daten suchen die aus Dropdowon1 und Dropdowon2 ausgewählt, mit Go Button die anfrage sendet und auf der Seite anzeigen soll.
Ich habe auch mal daran gedacht durch die Auswahl der Dropdown Felder dynamisch den SQL String zu generieren aber da mache ich wohl was falsch.
Eine einfache Suchfunktion mit einem Input Feld und Go Button bekomme ich hin.
Kann mir jemand einen Tipp oder ein Tutorial gegeben währe super.
|
25.01.2005, 10:50:41
|
Anfänger
|
|
Registriert seit: Aug 2004
Beiträge: 15
|
|
Das ist der Code eines Tutorial den ich umgebaut habe:
PHP-Code:
<?php require_once('Connections/RecordstorePHP.php'); ?>
<?php
mysql_select_db($database_RecordstorePHP, $RecordstorePHP);
$query_Search = "SELECT * FROM album, artist WHERE album.AlbumName LIKE '%$colname_Search%' AND artist.ArtistStyle LIKE '%$colname_Search%'";
$Search = mysql_query($query_Search, $RecordstorePHP) or die(mysql_error());
$row_Search = mysql_fetch_assoc($Search);
$totalRows_Search = mysql_num_rows($Search);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Unbenanntes Dokument</title>
</head>
<body>
<form action="catalog.php?search2=true" method="get" name="form1" id="form1">
<select name="searchcatalog" id="searchcatalog">
<option value="">Style</option>
<?php
do {
?>
<option value="<?php echo $row_Search['ArtistStyle']?>"><?php echo $row_Search['ArtistStyle']?></option>
<?php
} while ($row_Search = mysql_fetch_assoc($Search));
$rows = mysql_num_rows($Search);
if($rows > 0) {
mysql_data_seek($Search, 0);
$row_Search = mysql_fetch_assoc($Search);
}
?>
</select>
<select name="searchcatalog" id="searchcatalog">
<option value="">Album Name</option>
<?php
do {
?>
<option value="<?php echo $row_Search['AlbumName']?>"><?php echo $row_Search['AlbumName']?></option>
<?php
} while ($row_Search = mysql_fetch_assoc($Search));
$rows = mysql_num_rows($Search);
if($rows > 0) {
mysql_data_seek($Search, 0);
$row_Search = mysql_fetch_assoc($Search);
}
$colname_Search = "1";
if (isset($HTTP_GET_VARS['searchcatalog'])) {
$colname_Search = (get_magic_quotes_gpc()) ? $HTTP_GET_VARS['searchcatalog']
: addslashes($HTTP_GET_VARS['searchcatalog']);
}
?>
</select>
<input type="submit" name="Submit" value="Search">
</form>
</body>
</html>
<?php
mysql_free_result($Search);
?>
|
25.01.2005, 11:03:33
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
Du hast da ein wenig die Reihenfolge verhauen. Das "if (isset($HTTP_GET_VARS['searchcatalog'])) muss an den Anfang der Datei. Am Ende ist es sinnlos.
$query_search wird auch beim ersten Aufruf der Seite gesetzt, aber da gibt es $colname_Search und $colname_Search noch gar nicht. Mit in das if (isset()) packen.
Zudem glaube ich nicht ganz an denn Sinn der Abfrage. Warum muss das Gesuchte im Namen des Albums UND im Bandnamen auftauchen??
Ändere das erstmal funktionstüchtig ab und dann schauen wir weiter.
|
25.01.2005, 12:17:13
|
Anfänger
|
|
Registriert seit: Aug 2004
Beiträge: 15
|
|
Habe es mahl so versucht aber das geht nicht wirklich
Mein stand jetzt:
PHP-Code:
<?php require_once('Connections/RecordstorePHP.php'); ?>
<?php
mysql_select_db($database_RecordstorePHP, $RecordstorePHP);
$query_Search = "SELECT * FROM album, artist WHERE album.AlbumName LIKE '%$colname_Search%' AND artist.ArtistStyle LIKE '%$colname_Search%'";
$Search = mysql_query($query_Search, $RecordstorePHP) or die(mysql_error());
$row_Search = mysql_fetch_assoc($Search);
$totalRows_Search = mysql_num_rows($Search);
$colname_Search = "1";
if (isset($HTTP_GET_VARS['searchcatalog'])) {
$colname_Search = (get_magic_quotes_gpc()) ? $HTTP_GET_VARS['searchcatalog']
: addslashes($HTTP_GET_VARS['searchcatalog']);
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
….. usw usw.
so sucht er mir aber entweder wert aus dropdown1 oder aus dropdown2
setze ich den
PHP-Code:
$query_Search = "SELECT * FROM album, artist WHERE album.AlbumName LIKE '%$colname_Search%' AND artist.ArtistStyle LIKE '%$colname_Search%'";
in die if Schleife dann bekomme ich die Ausgabe: "qery is Empty"
setzte ich den Kompletten block also:
PHP-Code:
mysql_select_db($database_RecordstorePHP, $RecordstorePHP);
$query_Search = "SELECT * FROM album, artist WHERE album.AlbumName LIKE '%$colname_Search%' AND artist.ArtistStyle LIKE '%$colname_Search%'";
$Search = mysql_query($query_Search, $RecordstorePHP) or die(mysql_error());
$row_Search = mysql_fetch_assoc($Search);
$totalRows_Search = mysql_num_rows($Search);
in die Schleife sind meine Pulldown Felder leer.
Ich weiß das die Abfrage die dort gemacht wird nicht sehr sinnvoll ist. War nur zu faul es mit sinnvollem Inhalt zu füllen. Es geht mir jetzt nur darum wenn ich z.B. BandXYZ auf Syle Rock Prüfe und es wahr ist, soll einfach eine Ausgabe erfolgen.
|
25.01.2005, 15:05:18
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
Also ich habe mir mal den zu erst geposteten Code angeschaut und 'angepasst'.
Was ich nicht verstehe: die Abfrage wird mit Werten aus einem Formular gefüllt, welches aus der gleichen Abfrage gefüllt wird. Das ist so ein Henne-Ei-Problem.
Und warum haben die beiden <select>-Felder den gleichen Namen? Nach dem Abschicken wird bei Dir nur der Wert des letzten Feldes genommen. Nimm also unterschiedliche Namen.
Auch ist es nicht gut, wenn Du bei value="" den Wert des Feldes aus der Tabelle einträgst. Besser ist da die ID des Wertes (die es ja hoffentlich gibt)!
Haben die Tabellen album und artist voneinander abhängige Felder (Stichwort Fremdschlüssel)?
Du hast hier also einiges verwurschtelt.
Mal ein Versuch von mir:
PHP-Code:
<?php
//Meldungen von PHP anzeigen
error_reporting(E_ALL);
require_once('Connections/RecordstorePHP.php');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Unbenanntes Dokument</title>
</head>
<body>
<?php
// DB waehlen
mysql_select_db($database_RecordstorePHP, $RecordstorePHP);
// Query anfangen
$query_Search = 'SELECT * FROM album, artist WHERE ';
// Wenn style gewaehlt, dann in Array $temp packen
if (!empty($_GET['style'])) {
$style = (get_magic_quotes_gpc()) ? $_GET['style'] : addslashes($_GET['style']);
$temp[]="album.AlbumName LIKE '%$style%';";
}
// Wenn albumname gewaehlt, dann in Array $temp packen
if (!empty($_GET['albumname'])) {
$style = (get_magic_quotes_gpc()) ? $_GET['albumname'] : addslashes($_GET['albumname']);
$temp[]="album.AlbumName LIKE '%$albumname%'";
}
// Wenn was im Array ist, dann...
if (isset($temp)) {
// Array zusammenfuegen und ' AND ' dazwischenpacken
$Search = mysql_query($query_Search.join(' AND ', $temp), $RecordstorePHP) or die(mysql_error());
$rows = mysql_num_rows($Search);
// Ausgabe der gefundenen Datensaetze
if ($rows > 0) {
while ($row_Search = mysql_fetch_assoc($Search)) {
echo $row_Search['irgendsoeinfeldhalt'];
}
}
}
?>
<form action="catalog.php?search2=true" method="get">
<select name="style">
<option value="">Style</option>
<?php
// Alle Styles auslesen und ausgeben
$Search = mysql_query('SELECT ArtistStyle FROM album ORDER BY ArtistStyle ASC', $RecordstorePHP) or die(mysql_error());
while ($row_Search = mysql_fetch_assoc($Search)) {
echo " <option value='{$row_Search['ArtistStyle']}'>{$row_Search['ArtistStyle']}</option>n";
}
?>
</select>
<select name="albumname">
<option value="">Album Name</option>
<?php
// Alle Albennamen auslesen und ausgeben
$Search = mysql_query('SELECT AlbumName FROM artist ORDER BY AlbumName ASC', $RecordstorePHP) or die(mysql_error());
while ($row_Search = mysql_fetch_assoc($Search)) {
echo " <option value='{$row_Search['AlbumName']}'>{$row_Search['AlbumName']}</option>n";
}
?>
</select>
<input type="submit" name="Submit" value="Search">
</form>
</body>
</html>
Geändert von c4 (25.01.2005 um 15:08:11 Uhr)
|
25.01.2005, 19:18:54
|
Anfänger
|
|
Registriert seit: Aug 2004
Beiträge: 15
|
|
Habe was gebraucht um den Skript zum laufen zu bringen. Dabei habe ich es auch einwenig verändert und erweitert. Was aber schon bei der unveränderten Version, nachdem ich die einträge geändert hatte, nicht passierte, war eine Ausgabe. Genauso wie bei dem jetzigem Code.
Ich habe in der Tabelle "album" eine "AlbumID" und bei der Tabelle "artist" eine "ArtistID" Wenn ich diese aber in den Value bereich der jeweiligen dropdown setzte sieht es aber dann so aus: "test6.php?style=& albumname=&Submit=Search"
Lasse ich es wie gehabt habe ich dann den Inhalt stehen.
Ich habe es mal versucht den Query_Search so zu bauen:
PHP-Code:
$query_Search = 'SELECT * FROM album, artist WHERE album.AlbumName LIKE '%$style%' AND album.AlbumName LIKE '%$albumname%' AND album.AlbumID = artist.ArtistID ';
Ich bekomme da keine Fehlermeldung somit hoffe ich dass es richtig ist
Wenn ich da auch noch ne Ausgabe die auch noch richtig ist wäre es eigentlich perfekt.
PHP-Code:
<?php
//Meldungen von PHP anzeigen
error_reporting(E_ALL);
require_once('Connections/RecordstorePHP.php');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Unbenanntes Dokument</title>
</head>
<body>
<?php
// DB waehlen
mysql_select_db($database_RecordstorePHP, $RecordstorePHP);
// Query anfangen
$query_Search = 'SELECT * FROM album, artist WHERE ';
// Wenn style gewaehlt, dann in Array $temp packen
if (!empty($_GET['style'])) {
$style = (get_magic_quotes_gpc()) ? $_GET['style'] : addslashes($_GET['style']);
$temp[]="album.AlbumName LIKE '%$style%'";
}
// Wenn albumname gewaehlt, dann in Array $temp packen
if (!empty($_GET['albumname'])) {
$style = (get_magic_quotes_gpc()) ? $_GET['albumname'] : addslashes($_GET['albumname']);
$temp[]="album.AlbumName LIKE '%$albumname%' AND album.AlbumID = artist.ArtistID";
}
// Wenn was im Array ist, dann...
/*
if (isset($temp)) {
// Array zusammenfuegen und ' AND ' dazwischenpacken
$Search = mysql_query($query_Search.join(' AND ', $temp), $RecordstorePHP) or die(mysql_error());
$row_Search = mysql_fetch_assoc($Search);
$totalRows_Search = mysql_num_rows($Search);
}
*/
?>
<form action="test6.php?search=true" method="get">
<select name="style">
<option value="">Style</option>
<?php
// Alle Styles auslesen und ausgeben
$Search = mysql_query('SELECT ArtistStyle FROM artist WHERE artist.ArtistID ORDER BY ArtistStyle ASC', $RecordstorePHP) or die(mysql_error());
while ($row_Search = mysql_fetch_assoc($Search)) {
echo "<option value='{$row_Search['ArtistStyle']}'>{$row_Search['ArtistStyle']}</option>n";
}
?>
</select>
<select name="albumname">
<option value="">Album Name</option>
<?php
// Alle Albennamen auslesen und ausgeben
$Search = mysql_query('SELECT AlbumName FROM album WHERE album.AlbumID ORDER BY AlbumName ASC', $RecordstorePHP) or die(mysql_error());
while ($row_Search = mysql_fetch_assoc($Search)) {
echo "<option value='{$row_Search['AlbumName']}'>{$row_Search['AlbumName']}</option>n";
}
?>
</select>
<input type="submit" name="Submit" value="Search">
</form>
<?php if (isset($temp)) {
$Search = mysql_query($query_Search.join(' AND ', $temp), $RecordstorePHP) or die(mysql_error());
$row_Search = mysql_fetch_assoc($Search);
$totalRows_Search = mysql_num_rows($Search);
?>
<?php if ($totalRows_Search == 0) { ?>
No albums match your search. Try looking for something else.
<?php } else { ?>
<table width="100%" border="0" cellpadding="2">
<tr>
<td> </td>
<td><strong>Album</strong></td>
<td><strong>Artist</strong></td>
<td><strong>Style</strong></td>
</tr>
<?php do { ?>
<tr>
<td><img src="<?php echo $row_Search['AlbumCoverThumbnailURL']; ?>"></td>
<td><a href="albumdetail.php?AlbumID=<?php echo $row_Search['AlbumID']; ?>">
<?php echo $row_Search['AlbumName']; ?></a></td>
<td><?php echo $row_Search['ArtistGroupName']; ?></td>
<td><?php echo $row_Search['ArtistStyle']; ?></td>
</tr>
<?php } while ($row_Search = mysql_fetch_assoc($Search)); ?>
</table>
<?php } ?>
<?php } ?>
</body>
</html>
|
26.01.2005, 10:14:22
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
So wie der Code dort steht gibt er nichts aus? Nicht einmal Fehlermeldungen (auch im Quelltext im Browser nachschauen!)?
Lass Dir mal an mehreren Stellen alle Variablen ausgeben und vergleiche, ob die Ausgabe den Erwartungen entspricht.
Ist totalRows_Search am Ende auch größer 0?
|
26.01.2005, 10:38:18
|
Anfänger
|
|
Registriert seit: Aug 2004
Beiträge: 15
|
|
"totalRows_Search" ist gleich 0 genauso wie "rows_Search". Keine Ahnung wieso. Keine Fehlermeldung.
Auch wenn die Auswahl so getroffen wurde das da eigentlich ein Eintrag gefunden werden müsste. Habe ich eigendlich die beiden Tabellen richtig miteinander verknüpft? Ev. findet er deswegen nichts oder hänge ich in der
PHP-Code:
if ($totalRows_Search == 0)
fesst.
Mit meiner eingebauten If Schleife erzählt er mir bei jeder Auswahl: "No albums match your search. Try looking for something else."
|
26.01.2005, 10:59:14
|
SELFPHP Guru
|
|
Registriert seit: Jul 2002
Ort: Oberursel
Alter: 54
Beiträge: 4.748
|
|
Es gibt keine if-Schleifen!!
Wenn Dein Query nix findet, dann wird das schon so stimmen.
Du hast doch sicher ein phpMyAdmin zur Verfügung stehen, richtig? Bastel Dir dort mal in aller Ruhe einen Query mit Beispielwerten zusammen, der am Ende anzeigt, was Du erwartet hast.
Dann machst Du mit Deinem Skript weiter.
Hatte Dich mal was gefragt: "Haben die Tabellen album und artist voneinander abhängige Felder (Stichwort Fremdschlüssel)?" Wie schaut's damit aus?
|
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 08:32:39 Uhr.
|