Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
SQL Abfrage [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
SQL Abfrage


 
flo
27-03-2002, 21:53 
 
Wenn ich in jede seite einen counter einbaue,
und dann auf einer seite zumindest die 10, 20 oder 30 meistaufgerufenen seiten anzeigen möchte, wie muss dazu dann die sql abfrage lauten????
irgendwie so, aber ich komme nicht weiter, also bitte helft mir:
select id,titel,interpret,counter from lyric
where counter ..?? order by counter limit 30

 
Troublegum
27-03-2002, 21:57 
 
SELECT spalten FROM tabelle ORDER BY counter DESC LIMIT 30

PS: Du hast ne Lyricsseite ?
Wie lautet denn die URL ? Ich hab auch eine -> www.lyricszone.de
Ist aber im Moment down, weil neue Server installiert werden.

 
flo
27-03-2002, 22:07 
 
die kennt ihr schon, jetzt bastle ich an allem in php,
könnte bei fragen ein bissel unterstützung gebrauchen,
habt ihr jetzt einen eigenen server, wenn ja, wo wird er stehen?
oder ist es einer von ckras?
www.liedertexte.geldflo.de

Danke für die schnelle antwort.

 
flo
27-03-2002, 23:01 
 
danke, es hat wunderbar funktioniert,

jetzt hätt ich noch ne sql abfrage die ich net kenne,

die eine sollte so aussehen

select interpret from tabelle where interpret like buchstabe% order by interpret
bei interpret soll ein link erzeugt werden und wenn jemand draufklickt, dann sollen nur links zu texten des interpreten angezeigt werden, wie muss ich dieabfragen ineinander schachteln? oder brauch ich ne neue php seite dazu???

 
Troublegum
28-03-2002, 00:11 
 
Hi flo,

ja die kenne ich :)

Also die Liste erstellst du wie gesagt mit
SELECT * FROM tabelle WHERE interpret LIKE 'A%' ORDER BY interpret
Damit listest du alle Datensätze, deren Interpret mit A anfängt.

Wenn du die texte anzeigen lassen willst,
reicht folgendes:
SELECT * FROM tabelle WHERE interpret='Michael Jackson'
Damit listest du alle Datensätze von Michael Jackson


Wenn du was anderes gemeint hast, erklär es genauer.

 
flo
28-03-2002, 10:44 
 
Für die Zweite sql Abfrage,
steht die jetzt sozusagen intergriert in den link der ersten,
oder ist es sowas mit variablenübertrag,
wenn jemand draufklickt, dann wird die variable in die zweite abfrage gesetzt, und dann aufgelistet,
oder wird mit einem klick auf eine andere seite weitergeleitet, und mit dem übertrag der variablen in die select abfrage auf der anderen seite,
das ist mir noch ein bissel unklar!!

mal ne andere frage, gibt es eigentlich irgendeine software, die html dokumente in ein sql datenbank umwandelt???
sonst ist es ganz schön anstrengend alle docs in die datenbank zu übertragen :D

gruß
flo

 
flo
28-03-2002, 12:39 
 
Also jetzt hab ich folgendes problem:

SELECT * FROM tabelle where interpret like 'D%' order by interpret

es klappt

dann kann jm auf interpret klicken

href='interpret.php?interpret=$articleDb->interpret'>

so und auf der nächsten seite sollten dan die titel des interpreten
angezeigt werden, es klappt aber net mit der übergabe der daten

hab es so versucht
SELECT * FROM tabelle where interpret like '.$interpret' order by titel

und auch so SELECT id,titel,interpret FROM lyric where interpret= '.$interpret' order by titel

irgendwie klappt es net

hilfe
aufgezählt soll dann werden

href='lyric.php?id=$articleDb->id'> $articleDb->titel

 
Troublegum
29-03-2002, 00:05 
 
So ist die Abfrage korrekt:


SELECT id,titel,interpret FROM lyric WHERE interpret='$interpret' ORDER BY titel

 
flo
29-03-2002, 13:19 
 
jetzt hab ich noch ein problem,
ich wollte die schleife benutzen, hier aus dem forum:
die siehts so aus:

$sql = "";
for($i=0;$i<count($query_elements);$i++) {
if($sql) {
$sql .= " AND";

$sql .= " interpret='$query_elements[$i]'";
}
}

das problem dabei ist,
das ich bei $i=0 die ausgabe ohne AND haben will,
und bei $i>0 mit AND,

das ganze soll dann natürlich in die selectabfrage.

Danke für eure Hilfe.

 
Troublegum
29-03-2002, 13:29 
 
Du hast den Code ziemlich verhunzt. :rolleyes:
Ausserdem nützt dir das so gar nichts, wenn du nach einem
konkreten Interpreten suchst und erst recht nicht, wenn du den = Operator benutzt. :teach:


hier ist nochmal der Code (http://www.php-resource.de/forum/showthread.php?s=&threadid=5984)

 
hand
29-03-2002, 13:31 
 
$sql = "";
for($i=0;$i<count($query_elements);$i++) {
if($sql) {
if ($i > 0) {
$sql .= " AND";
}
$sql .= " interpret='$query_elements[$i]'";
}
}

 
Troublegum
29-03-2002, 13:33 
 
Eigentlich braucht er die Abfrage von $i gar nicht.
Er setzt $sql sowieso vorher zurück.

@Flo: Wozu brauchst du die Abfrage eigentlich ?
Erkläre mal den Kontext und die Situation.

 
flo
29-03-2002, 13:59 
 
ich habs jetzt mit dem nicht verhunzten Code so probiert:

$query=$interpret;
$query_elements = explode(" ",addslashes($query));
for($i=0;$i<count($query_elements);$i++) {

if($sql) {
$sql .= " AND"; /// oder AND (wie du willst)
}
$sql .= " interpret='$query_elements[$i]'";
}



$str_requete = "SELECT * FROM tabelle WHERE ($sql) ORDER BY spalte";

Bei Interpreten dessen namen nur aus einem Wort bestehen hat es funktioniet, bei interpreten mit mehreren Wörten nicht,
und bei dem verhunzten Code gabs dann ne fehlermeldung bei
AND interpret='...' AND interpret='...'

wie kannich das problem lösen?
Kann ich das nicht, dann kann ich auch keine Suchmaske bauen :(

 
flo
29-03-2002, 14:04 
 
Achso, die erklärung:

ich hab eine seite, auf der alle Interpreten die mit dem Buchstaben D anfangen, aufgezählt sind.

Dann klickt jm auf den link "Die Ärzte",

auf der nächsten seite sollen die Titel der texte von "Die Ärzte" die in der datenbank sind, aufgezählt werden.

Dazu wollte ich diesen schnipsel verwenden
:(

 
Troublegum
29-03-2002, 14:05 
 
Dazu reicht

SELECT * FROM tabelle WHERE interpret='Die Ärzte'



Du machst es dir auch schwer :rolleyes:

 
flo
29-03-2002, 14:10 
 
Ja, aber wenn Die Ärzte von der Seite
.../interd.php
zu seite ../interpret.php?interpret=Die20%Ärzte
übergeben werden
und wenn ich dann in die
Selectabfrage
...Wherer interpret='$interpret' eingebe
kommt doch ne fehlermeldung:(

 
Troublegum
29-03-2002, 14:18 
 
Ja dann poste bitte deinen Code.
Rumjammern hilft in den wenigsten Fällen etwas :teach:

 
flo
29-03-2002, 14:25 
 
Aso jetzt klappt es schon mit namen, die aus zwei wörtern bestehen, aber sowas findet es nicht:
http://localhost/lyric2/interpret.php?interpret=Dieter%20Krebs%20&%20Gundula

Mein Codeg für interpreten nach D sortiert:
<?php
require "ezine_db.inc.php";
$ezine_db = ezine_connecte_db();


$str_requete = "SELECT id,titel,interpret FROM lyric where interpret like 'D%' order by interpret";

$result_articles = mysql_query ($str_requete,$ezine_db) or ezine_mysql_die();

print ('<table border=0>');

while ($articleDb =mysql_fetch_object($result_articles))
{
print("
<tr>
<td width='200'><a href='interpret.php?interpret=$articleDb->interpret'>$articleDb->interpret</a></td>
<td>$articleDb->titel</td>
</tr>
");
}

print ('</table>');

Und dann die Seite auf der die Titel aufgelistet werden sollen:

<?php
require "ezine_db.inc.php";
$ezine_db = ezine_connecte_db();

$str_requete = "SELECT id,titel,interpret FROM lyric WHERE interpret='$interpret' ORDER BY titel";


$result_articles = mysql_query ($str_requete,$ezine_db) or ezine_mysql_die();

print ('<table border=0>');

while ($articleDb =mysql_fetch_object($result_articles))
{
print("
<tr>
<td width='200'><a href='lyric.php?id=$articleDb->id'>$articleDb->titel</a></td>
<td>$articleDb->interpret</td>
</tr>
");
}

print ('</table>');

?>

 
Troublegum
29-03-2002, 14:34 
 
Probier mal das: (ohne Gewähr). ;)



datei1.php -> aufgerufen wird sie über datei1.php?char=D (alle Interpreten mit D.

<?php
require "ezine_db.inc.php";
$ezine_db = ezine_connecte_db();


$str_requete = "SELECT id,titel,interpret FROM lyric where interpret like '$char%' order by interpret";

$result_articles = mysql_query ($str_requete,$ezine_db) or ezine_mysql_die();

echo "<table border=0>";

while ($row =mysql_fetch_array($result_articles))
{
echo "<tr>
<td width='200'><a href='interpret.php?interpret=".urlencode($row[interpret])."'>$row[interpret]</a></td>
<td>$row[titel]</td>
</tr>";
}
echo "</table>";
?>





<?php
require "ezine_db.inc.php";
$ezine_db = ezine_connecte_db();

$interpret = urldecode($interpret);
$interpret = addslashes($interpret);
$str_requete = "SELECT id,titel,interpret FROM lyric WHERE interpret='$interpret' ORDER BY titel";


$result_articles = mysql_query ($str_requete,$ezine_db) or ezine_mysql_die();

echo "<table border=0>";
while ($row =mysql_fetch_array($result_articles))
{
echo "<tr>
<td width='200'><a href='lyric.php?id=$row[id]'>$row[titel]</a></td>
<td>$row[interpret]</td>
</tr>";
}
echo "</table>";
?>

 
flo
29-03-2002, 14:58 
 
Hmm,
konnte es noch nicht ausprobieren:

Fatal error: Call to undefined function: url_encode() in C:\apache\htdocs\lyric2\interd2.php on line 217

zeile 217:
<td width='200'><a href='interpret2.php?interpret=".url_encode($row[interpret])."'>$row[interpret]</a></td>

ich habs ma ohne decode und encode probiert, da funzt alles, nur halt die längeren namen werden nicht gefunden,
ich schätze aber dass mein interpreter die funktionen nicht kennt,
und es auf nem server funktionieren wird ;)
deshalb danke ich dir für den codeschnipsel, sieht ja ziemlich anders als meiner, wird mir aber weiterhelfen.

da ich mich erinnern kann, auch wenn eurer server immer noch net erreichbar ist, dass es bei euch auf der Seit soähnlich funktioniert.

Danke....:)

 
Troublegum
29-03-2002, 18:07 
 
Sorry, Flo.
Das liegt nicht an deinem Interpreter. Ich hatte mir vertippt. :(
Bitte nochmal ausprobieren. (Beispiel korrigiert.)
Ich denke, du hast die Zeit dazu, oder ?


Ja, unser Provider zieht um. Das kann noch ein,zwei Tage dauern. Aber was solls.
Unsere Datenbankstruktur ist aber etwas unterschiedlich. ;)

MfG Troublegum

 
flo
30-03-2002, 00:08 
 
es funktioniert schon ganz gut,
hab es zur Probe hier gepackt.
http://mitglied.lycos.de/witzetotal/lyric/

Allerdings hat es noch ein paar fehler:
Wenn man auf einen interpreten mit Sonderzeichen klickt
z.B. Texte von Destiny's Child
oder
auf meinem PC von A+ oder ...("Cats")
verursacht ee einen fehler,
dagegen A*Teens wird korrekt angezeigt,

vielleicht hast du noch eine idee

 
Troublegum
30-03-2002, 00:20 
 
Anscheinend sind Magic Quotes an. (Destiny's Child).
Lass die Zeile mit addslashes() weg.

auf meinem PC von A+ oder ...("Cats")
verursacht ee einen fehler,
Was willst du mir damit sagen bitte ? :confused:

PS: Ich ersetze ' und " immer durch &acute; und &quot;
Das würde auch gehen.

 
flo
30-03-2002, 14:27 
 
Dankeschön für deine Hilfe,
addslashes hab ich entfernt und jetzt funktioniert fast alles prima.

zwar wird bei destiny's child ein slash angezeigt Destiny\'s Child
dafür werden die texte aber gefunden, und darauf kommt es an.
Allerdings gibts auch ne gruppe, die A+ heißt und da wird nur der
buchstabe A angezeigt (auf dem localhost).
Die kennt aber wahrscheinlich sowieso fast keiner.

Hast du vielleicht einen Tipp, wie ich am besten die 5000 texte aus dem html format in eine datenbank kriege, ohne dass ich jeden einzeln einfügen muss?

Gruß
flo

 
Troublegum
30-03-2002, 14:30 
 
Original geschrieben von flo

Hast du vielleicht einen Tipp, wie ich am besten die 5000 texte aus dem html format in eine datenbank kriege, ohne dass ich jeden einzeln einfügen muss?


Jeder Text sollte wennmöglich gleich formatiert sein.
Also es sollte ein Schema in der html Datei sein, sodass
man mit Reg. Ausdrücken den Text und so herausfiltern kann.
In php hab ich aber absolut keinen Plan davon. Ich mach sowas immer mit Perl.

 
flo
30-03-2002, 14:42 
 
die sind schon alle relativ gleich formatiert.
nur halt einzeln und nicht in einer textdatei.

 
flo
01-04-2002, 10:41 
 
ich hab jetzt noch ne Frage zum Eingabeformular,
da nicht alle dort immer alles auf einmal eingeben, schicken sie diesen manchmal mit einem leeren feld ab.
da wollte ich einen riegel mit einer schleife vorschieben:

if ($titel=="" or $interpret=="" or $song=="" )
{
echo "<center><font color=#FFFFFF size='+1'>Leider hast du das Formular nicht vollständig ausgefüllt.</font>";
echo "<center><font color=#FFFFFF size='+1'>Du musst mindesten den Titel, Interpreten und den Songtext eingeben und erst dann das Formular abschicken.</font>";
}
else ...

So das problem ist, dass es bei der variablen titel und interpret funktioniert, bei song nicht :(, song ist im formular auch ein textarea, vielleicht ligts daran?

Dann wollt ich noch was zu der tabelle nach Interpreten fragen,
so wie die jetzt ist, wird z.B. "Die Ärzte so oft ausgegeben, wie es songtexte in der tabelle von denen gibt,
kann ich es irgendwie geschickter machen, so dass der interpret nur einal erscheint, und daneben nur die Anzahl der texte, die zu denen gehören und halt erstauf der nächsten seite die titel?

gruß
Flo

- -

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