Homepage selbermachen 7.851 Themen, 35.615 Beiträge

Suche PHP oder besser Mysql funktion

schooters / 3 Antworten / Baumansicht Nickles

...die folgendes kann: ab einem Bestimmten zeichen (string), nicht Position, wie z.b. SUBSTR oder MID, eine bestimmte Anzahl von weiteren Strings liest. also sowas der art:

XXX(string, positionsbegin, länge)

bei Antwort benachrichtigen
xafford schooters „Suche PHP oder besser Mysql funktion“
Optionen

geht doch mit SELECT SUBSTRING(string, start, länge)
oder willst du ab einem suchwort das du selbst definierst die zeichen zurückgeben?
das ginge dann so:
SELECT SUBSTRING(string,INSTR(string,suchstring),länge)
wenn du erst nach der suchzeichenkette die zeichen zurückgeben willst:
SELECT SUBSTRING(string,INSTR(string,suchstring)+LENGTH(suchstring)+1,länge);
wenn du alles bis zum ende des string ab dem ende des suchstring haben willst:
SELECT SUBSTRING(string,INSTR(string,suchstring)+LENGTH(suchstring)+1,LENGTH(string)-INSTR(string,suchstring)+1);

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
schooters xafford „geht doch mit SELECT SUBSTRING string, start, länge oder willst du ab einem...“
Optionen

um es noch konkreter zu machen, das problem

ich habe 50 Sätze:

Satz 1.
Satz 2.
Satz 3.
.
.
.

Und jetzt will ich immer nur einen Satz auf jeder Seite zeigen, per Mausklick soll der user dann den nächsten gezeigt bekommen, hier das script:

Also nach dem Punkt jedes Satzes soll getrennt werden, der nächste soll dann gezeigt werden, habe das schon so versucht, dass ich alles in einen array geschmissen habe, aber das ist weitaus umstänglicher und ich würde es lieber sql-seitig lösen

<?

$db=mysql_connect("localhost","","");
mysql_select_db("daten",$db);
$maxmenge = "1";
$gesamt=mysql_query("select LENGTH(eintrag) as eintrag from test");
$gesamt_zeile=mysql_fetch_object($gesamt);
$gesamt = $gesamt_zeile->eintrag;
echo $gesamt_zeile->eintrag;
if(!$begin || !$end){
$begin = 0;
$end=$maxmenge;
}
$result=mysql_query("select SELECT SUBSTRING(eintrag,INSTR(eintrag,.)+LENGTH(eintrag)+1) as eintrag from test");

$zeile=mysql_fetch_object($result);
echo "$zeile->eintrag";


if($nextpage)
{
$begin = $begin + $end;
$end = $maxmenge;
}

if(!$nextpage)
{
$begin = 1;
$end = 100;
}

if($begin <= $maxmenge)
{
echo"<a href='$PHP_SELF?begin=$begin&end=$end&gesamt=$gesamt&nextpage=true'>Mehr Lesen</a>";
}

?>

bei Antwort benachrichtigen
xafford schooters „um es noch konkreter zu machen, das problem ich habe 50 Sätze: Satz 1. Satz 2....“
Optionen

aha, du willst also immer den nächsten satz. dann muß das ganze etwas umstrukturiert werden:

du definierst ja schon einen zähler, diesen brauchen wir dann. ich hposte hier nur den teil mit der sql-anfage mit der annahme, daß $begin dein zähler ist.

if(empty($begin)){$begin=0;}
$sql="SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(string,'.',-$begin),'.',1)";
$begin+=1;

damit wird zuerst alles nach dem $begin-ten auftreten eines punktes zurückgegeben, damit hast du den text ab dem $begin-ten punkt, dann wird alles vor dem ersten auftreten eines punktes zurückgegeben.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen