Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2004 Teil von Dezember

SELFHTML Forumsarchiv
Nur bestimme Anzahl der Wöter anziegen?

Informationsseite
  1. Seite (PHP) Nur bestimme Anzahl der Wöter anziegen? von Claudia, 30. 12. 2004, 18:12
nach unten

Nur bestimme Anzahl der Wöter anziegen?

Die folgende Nachricht zum Thema stammt von: Claudia, 30. 12. 2004, 18:12

Hi,

hab da ein Problem, ich lass meine Texte aus einer Datenbank auslesen. Jetzt wollte ich eine erweiterung machen, dass ich nur die ersten angenommen 5 Wörter ausgeben lasse und dann kommt >>< mehr und dann geht ein PopUp auf. Das mit dem PopUp das geht schon und auch der Link geht nur das mit den 50 Wörter geht nicht.

hier mal der Code wie ich das mache:

<?php // aus der DB auslesen

$sql = "SELECT
id,
SUBSTRING_INDEX(`inhalt`, ' ', 50)
FROM
Test
";
$return = mysql_query($sql) OR die(mysql_error());

?>

<?php
while($data = mysql_fetch_assoc($return))
{
?>
</p>
  <blockquote>
    <p><?php echo $data['inhalt']; ?><br>
<a href="details.php?id=<?php echo $data['id']; ?>" onclick="window.open('details.php?id=<? echo $data['id']; ?>', 'confirm', 'width=800, height=600'); return false;">..Mehr Lesen</a>    </p>
  </blockquote>
</body>
</html>
<?php
}
?>

Gruß Claudia

nach obennach unten

Nur bestimme Anzahl der Wöter anziegen?

Die folgende Nachricht zum Thema stammt von: MudGuard, 30. 12. 2004, 18:26

Hi,

»» hab da ein Problem, ich lass meine Texte aus einer Datenbank auslesen. Jetzt wollte ich eine erweiterung machen, dass ich nur die ersten angenommen 5 Wörter ausgeben lasse und dann kommt >>< mehr und dann geht ein PopUp auf. Das mit dem PopUp das geht schon und auch der Link geht nur das mit den 50 Wörter geht nicht.

Und was heißt "geht nicht"?
Fehlermeldung?

»» <?php
»» while($data = mysql_fetch_assoc($return))
»» {
»» ?>
[...]
»» </body>
»» </html>
»» <?php
»» }
»» ?>

Wenn Du mehrere Datensätze aus der Datenbank ausliest, hast Du dann auch mehrfach </body></html> im Dokument stehen, was natürlich unsinnig ist.
Also die beiden tags raus aus der Schleife!

cu,
Andreas
--
Warum nennt sich Andreas hier MudGuard?

Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.

nach obennach unten

Nur bestimme Anzahl der Wöter anziegen?

Die folgende Nachricht zum Thema stammt von: Claudia, 30. 12. 2004, 18:31

Hallo Andreas,


»» Und was heißt "geht nicht"?
»» Fehlermeldung?

Na ja das schlimme ist ja es kommen keine Fehlermeldungen es sieht nur so aus:


    ..Mehr Lesen


Aber es müssten doch vor dem mehr lesen noch die 50 Wörter stehen. Und das zeigt er mich nicht an :-(

»» Wenn Du mehrere Datensätze aus der Datenbank ausliest, hast Du dann auch mehrfach </body></html> im Dokument stehen, was natürlich unsinnig ist.
»» Also die beiden tags raus aus der Schleife!


Hab das gerade mal geamcht das habe ich vorhin ganz vergessen. Danke für den Tipp :-)

Gruß Claudia

nach obennach unten

Nur bestimme Anzahl der Wöter anziegen?

Die folgende Nachricht zum Thema stammt von: Götz, 30. 12. 2004, 18:31

Hallo Claudia!


»» Das mit dem PopUp das geht schon und auch der Link geht nur das mit den 50 Wörter geht nicht.

Müssen es wirklich 50 Wörter sein?
Nimm doch einfach 250 oder 500 Zeichen oder sowas, das sollte für Deinen Zweck doch auch genügen.

MfG
Götz

--
Losung für Donnerstag, 30. Dezember 2004
Gott wird alle Werke vor Gericht bringen, alles, was verborgen ist, es sei gut oder böse. (Prediger 12,14)
Darin ist erschienen die Liebe Gottes unter uns, dass Gott seinen eingebornen Sohn gesandt hat in die Welt, damit wir durch ihn leben sollen. (1. Johannes 4,9)
(Losungslink)

nach obennach unten

Nur bestimme Anzahl der Wöter anziegen?

Die folgende Nachricht zum Thema stammt von: Claudia, 30. 12. 2004, 18:33

Hallo Götz,

»» »» Das mit dem PopUp das geht schon und auch der Link geht nur das mit den 50 Wörter geht nicht.
»»
»» Müssen es wirklich 50 Wörter sein?
»» Nimm doch einfach 250 oder 500 Zeichen oder sowas, das sollte für Deinen Zweck doch auch genügen.


Nöö es müssen nicht 50 Wörter sein du hast RECHT es könnte auch 250 Zeichen sein oder so. Wie müsste ich das dann machen. Kannst du mir das mal eben sagen ?

Gruß Claudia

PS: Mich wurde dennoch interesieren warum das so nicht geht wie ich das geamcht habe....

nach obennach unten

Nur bestimme Anzahl der Wöter anziegen?

Die folgende Nachricht zum Thema stammt von: BOTIX, 30. 12. 2004, 18:38

Hi,

»» Nöö es müssen nicht 50 Wörter sein du hast RECHT es könnte auch 250 Zeichen sein oder so. Wie müsste ich das dann machen. Kannst du mir das mal eben sagen ?

REGEX!

Bis denne

Botix

nach obennach unten

Nur bestimme Anzahl der Wöter anziegen?

Die folgende Nachricht zum Thema stammt von: Claudia, 30. 12. 2004, 18:40

Hallo Botix,

»» REGEX!


Hmm was meinst du denn mit dem Wort. Heißt so der Befehl, dass ich nur 250 Zeichen auslesen kann ? Wenn ja wie muss den denn anwenden? Den habe ich wirklich noch nie gehört :-(

Gruß Claudia

nach obennach unten

Nur bestimme Anzahl der Wöter anziegen?

Die folgende Nachricht zum Thema stammt von: BOTIX, 30. 12. 2004, 18:56

Hi Claudia,

»» Hmm was meinst du denn mit dem Wort.

Reguläre Ausdrücke (ja ich weiss is nen bissl tricky).
Guckst du hier: http://de3.php.net/manual/de/ref.regex.php

»»Heißt so der Befehl, dass ich nur 250 Zeichen auslesen kann?

ja/nein kann man damit auch...

Wenn du nur 250 Zeichen anzeigen möchtest würde ich das lieber in das SQL-Statement reinschreiben. Irgendwie so ..[LEFT(bla,250)]

Bis denne

Botix

nach obennach unten

Nur bestimme Anzahl der Wöter anziegen?

Die folgende Nachricht zum Thema stammt von: Götz, 30. 12. 2004, 18:44

Hallo Claudia!

»» Nöö es müssen nicht 50 Wörter sein du hast RECHT es könnte auch 250 Zeichen sein oder so. Wie müsste ich das dann machen. Kannst du mir das mal eben sagen ?

Ganz einfach mit SUBSTRING() (bei Dir wohl z.B. SUBSTRING(feldname, 0, $laenge), wobei ich nicht weiß ob MySQL hier bei 0 oder 1 anfängt zu zählen).
Siehe auch MySQL Manual | 12.3 String Functions.

»» PS: Mich wurde dennoch interesieren warum das so nicht geht wie ich das geamcht habe....

Das kann ich so nicht sagen, dafür wäre es praktisch mehr über die auftretenden Fehler zu wissen.
Also was sagt MySQL zu Deiner Anfrage, gibts einen Fehler oder nicht?
Was sagt PHP genau? Setz dafür am besten das error_reporting auf E_ALL.

MfG
Götz

--
Losung für Donnerstag, 30. Dezember 2004
Gott wird alle Werke vor Gericht bringen, alles, was verborgen ist, es sei gut oder böse. (Prediger 12,14)
Darin ist erschienen die Liebe Gottes unter uns, dass Gott seinen eingebornen Sohn gesandt hat in die Welt, damit wir durch ihn leben sollen. (1. Johannes 4,9)
(Losungslink)

nach obennach unten

Nur bestimme Anzahl der Wöter anziegen?

Die folgende Nachricht zum Thema stammt von: Claudia, 30. 12. 2004, 18:50

Hallo Götz,

»» Das kann ich so nicht sagen, dafür wäre es praktisch mehr über die auftretenden Fehler zu wissen.
»» Also was sagt MySQL zu Deiner Anfrage, gibts einen Fehler oder nicht?
»» Was sagt PHP genau? Setz dafür am besten das error_reporting auf E_ALL.


das ist ja gerade das Problem, es kommt keine Fehlermeldung. Es geht auch der Link das sieht also so aus:

.... mehr lesen

aber davor müssten doch noch die 50 Wörter stehen bzw, jetzt dann die 250 Zeichen das verstehe ich einfach nicht warum er mir das nicht ausgibt :-(

Gruß Claudia

nach obennach unten

Nur bestimme Anzahl Wörter/Zeichen anziegen?

Die folgende Nachricht zum Thema stammt von: Götz, 30. 12. 2004, 18:59

Hallo Claudia!

»» das ist ja gerade das Problem, es kommt keine Fehlermeldung. Es geht auch der Link das sieht also so aus:

Naja, es kommt keine Fehlermeldung, weil Du keine anzeigen läßt.
Mach mal am Anfang des Skripts:
error_reporting(E_ALL);
Siehe auch PHP Manual: Errors and Logging: error_reporting().
Bei der SQL-Abfrage an sich scheint ja kein Fehler aufzutreten, oder sind auch die ids in den Links nicht korrekt gesetzt?
Laß Dir doch einfach den $data-Array mit var_dump() oder so noch zusätzlich mal ausgeben. Vielleicht fällt Dir da ja irgendwas auf (siehe auch PHP Manual: Variables: var_dump()).

MfG
Götz

--
Losung für Donnerstag, 30. Dezember 2004
Gott wird alle Werke vor Gericht bringen, alles, was verborgen ist, es sei gut oder böse. (Prediger 12,14)
Darin ist erschienen die Liebe Gottes unter uns, dass Gott seinen eingebornen Sohn gesandt hat in die Welt, damit wir durch ihn leben sollen. (1. Johannes 4,9)
(Losungslink)

nach obennach unten

Nur bestimme Anzahl Wörter/Zeichen anziegen?

Die folgende Nachricht zum Thema stammt von: Claudia, 30. 12. 2004, 19:09

Hallo Götz,


»» Naja, es kommt keine Fehlermeldung, weil Du keine anzeigen läßt.
»» Mach mal am Anfang des Skripts:
»» error_reporting(E_ALL);


So hab den error Befehl mal eingefügt und das kommt jetzt. Nur ich versthe nicht ganz genau was der damit meint :-(

    Notice: Undefined index: inhalt in /srv/www/htdocs/web123/html/claudia/test/test_auslesen.php on line 41

    ..Mehr Lesen


    Notice: Undefined index: inhalt in /srv/www/htdocs/web123/html/claudia/test/test_auslesen.php on line 41

    ..Mehr Lesen


    Notice: Undefined index: inhalt in /srv/www/htdocs/web123/html/claudia/test/test_auslesen.php on line 41

    ..Mehr Lesen


Gruß Claudia

nach obennach unten

Nur bestimme Anzahl Wörter/Zeichen anziegen?

Die folgende Nachricht zum Thema stammt von: Götz, 30. 12. 2004, 19:13

Hallo Claudia!


»» So hab den error Befehl mal eingefügt und das kommt jetzt. Nur ich versthe nicht ganz genau was der damit meint :-(
»»
»»     Notice: Undefined index: inhalt in /srv/www/htdocs/web123/html/claudia/test/test_auslesen.php on line 41

Das dachte ich mir schon.
Wie heißt denn Dein Feld mit den Inhalten in der Datenbank? - Wobei, mir fällt grad auf woran es vermutlich hängt:
Dein SQL-Befehl ist noch falsch. Ändere ihn mal auf
$sql = "SELECT
id,
SUBSTRING(`inhalt`, 1, 250) as inhalt_
FROM
Test";

Und gib dann $data['inhalt_'] aus.
Das sollte klappen.

Das Problem ist, daß Du dem Ergebnis von Deiner SUBSTRING-Operation noch keinen "Namen" zugeordnet hast, und inhalt selbst nicht selektiert wurde.

MfG
Götz

--
Losung für Donnerstag, 30. Dezember 2004
Gott wird alle Werke vor Gericht bringen, alles, was verborgen ist, es sei gut oder böse. (Prediger 12,14)
Darin ist erschienen die Liebe Gottes unter uns, dass Gott seinen eingebornen Sohn gesandt hat in die Welt, damit wir durch ihn leben sollen. (1. Johannes 4,9)
(Losungslink)

nach obennach unten

Nur bestimme Anzahl Wörter/Zeichen anziegen?

Die folgende Nachricht zum Thema stammt von: Claudia, 30. 12. 2004, 19:20

Hallo Götz,

»» Das dachte ich mir schon.
»» Wie heißt denn Dein Feld mit den Inhalten in der Datenbank? - Wobei, mir fällt grad auf woran es vermutlich hängt:
»» Dein SQL-Befehl ist noch falsch. Ändere ihn mal auf
»» $sql = "SELECT
»» id,
»» SUBSTRING(`inhalt`, 1, 250) as inhalt_
»» FROM
»» Test";
»»
»» Und gib dann $data['inhalt_'] aus.
»» Das sollte klappen.
»»
»» Das Problem ist, daß Du dem Ergebnis von Deiner SUBSTRING-Operation noch keinen "Namen" zugeordnet hast, und inhalt selbst nicht selektiert wurde.


Hey cool das geht so. Kansnt du mir jetzt mal wenn du Zeit hast das erklären was ich hier falsch gemacht habe, dass ich das nächste mal nicht wieder mache. So wie du das gerade geschrieben habe, habe ich das leider nicht so ganz verstanden.

Liebe Grüße,
Claudia

nach obennach unten

Nur bestimme Anzahl Wörter/Zeichen anziegen?

Die folgende Nachricht zum Thema stammt von: Götz, 30. 12. 2004, 20:05

Hallo Claudia!

»» »» SUBSTRING(`inhalt`, 1, 250) as inhalt_

»» Kansnt du mir jetzt mal wenn du Zeit hast das erklären was ich hier falsch gemacht habe, dass ich das nächste mal nicht wieder mache.

Also, das Problem war, daß die MySQL-Funktion ihr Ergebnis grundsätzlich nicht ausgibt. Will man auf das Ergebnis so einer Funktion wie hier z.B. SUBSTRING zugreifen, muß man natürlich auch dafür sorgen, daß das Ergebnis von der Datenbank als "Feld" zurückgegeben wird.

Und genau das kann man mittels "FUNKTION AS feldname" machen.
Das steht ja in einem SELECT-Statement, zum besseren Verständnis erweitere ich das  Beispiel also zu einem vollständigen SELECT.
Unser Befehl lautet dann: SELECT SUBSTRING(bla, 1, 42) AS blub FROM muh.
In diesem Befehl bezeichnet bla das Feld, von dem wir einen Teilstring haben wollen. Die Datenbank aus der wir das Feld holen heißt muh. Doch das wirklich interessante ist blub, denn durch "AS blub" legen wir fest, daß das Ergebnis von SUBSTRING(bla, 1, 42) uns von der Datenbank mit dem Bezeichner blub zurückgegeben werden soll.
Man kann den Befehl auch direkt übersetzen, was dann in etwa folgendes ergibt: WÄHLE DEN_TEILSTRING(des Feldes bla, ab Position 1, mit Länge 42 Zeichen) ALS blub AUS DER DATENBANK muh AUS.
Du gibst dem Ergebnis der Operation die Du ausführst also einen Bezeichner, auf den Du dann via PHP wie auf jedes andere Feld das Du selektierst zugreifen kannst (AS kann man auch auf einfache Felder anwenden, um sie anders zu benennen, oder auf Datenbanken usw. - doch dazu schreib ich mal nichts mehr, ich will Dich ja nicht verwirren).

Ich hoffe, das war halbwegs verständlich und technisch nicht zu unpräzise ;)

MfG
Götz

--
Losung für Donnerstag, 30. Dezember 2004
Gott wird alle Werke vor Gericht bringen, alles, was verborgen ist, es sei gut oder böse. (Prediger 12,14)
Darin ist erschienen die Liebe Gottes unter uns, dass Gott seinen eingebornen Sohn gesandt hat in die Welt, damit wir durch ihn leben sollen. (1. Johannes 4,9)
(Losungslink)

nach obennach unten

Nur bestimme Anzahl Wörter/Zeichen anziegen?

Die folgende Nachricht zum Thema stammt von: Auge, 31. 12. 2004, 14:41

Hallo Götz

»» Ich hoffe, das war halbwegs verständlich und technisch nicht zu unpräzise ;)

Außer, dass du überall da, wo eine Tabelle gemeint war, von Datenbank sprachst.
Ansonsten eine gute, ausführliche Abhandlung für den Einsteiger.

Tschö, Auge

--
Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
(Victor Hugo)

nach obennach unten

Nur bestimme Anzahl Wörter/Zeichen anziegen?

Die folgende Nachricht zum Thema stammt von: Götz, 31. 12. 2004, 17:06

Hallo Auge!

»» Außer, dass du überall da, wo eine Tabelle gemeint war, von Datenbank sprachst.

Au stimmt, da hab ich mich vertan, vor lauter Datenbank-Problem ;)
Danke für den Hinweis.

MfG
Götz

--
Losung für Freitag, 31. Dezember 2004
Er dachte an uns, als wir unterdrückt waren, denn seine Güte währet ewiglich. (Psalm 136,23)
Wenn euch nun der Sohn frei macht, so seid ihr wirklich frei. (Johannes 8,36)
(Losungslink)

nach obennach unten

OK es ist wieder alles OK :-) Hat sich alles erledigt......

Die folgende Nachricht zum Thema stammt von: Claudia, 30. 12. 2004, 19:21

Hall an alle,

OK das Problem ist behoben. Danke für die Hilfe. Ich hoffe das ich heute kein Problem mehr habe.

Liebe Grüße,
Claudia

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2004 Teil von Dezember

© 1998-2008 Seite Impressum, Software: Classic Forum