Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Array auf 10 Stellen kürzen

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
mark007q
PostRank 5
PostRank 5
Beiträge: 225
Registriert: 11.09.2005, 15:43
Wohnort: Bochum

Beitrag von mark007q » 06.08.2006, 10:36

Ich habe ein kleines Problem und zwar:

Code: Alles auswählen

$stats['last_topic']  = mysql_fetch_row($result); 
Hier wird an die Variable $stats['last_topic'] ein Array übergeben, dass je nach Auslesung aus der Datenbank natürlich in der Länge variert.

Nun würde ich gerne dieses Variable (Array) auf max. 10 Stellen kürzen.

Mit substr geht das ja leider nicht, da es sich nicht um einen string, sondern um ein array handelt.

Wie kann ich denn obigen code kürzen auf 10 Stellen?

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


oldInternetUser
PostRank 9
PostRank 9
Beiträge: 1250
Registriert: 19.03.2005, 12:52

Beitrag von oldInternetUser » 06.08.2006, 10:52

mark007q hat geschrieben:Nun würde ich gerne dieses Variable (Array) auf max. 10 Stellen kürzen.

Mit substr geht das ja leider nicht, da es sich nicht um einen string, sondern um ein array handelt.

Wie kann ich denn obigen code kürzen auf 10 Stellen?
Das ist der falsche Ansatz, die Daten wurden ja bereits geholt. Ändere den Sql-Befehl ab, so daß er maximal 10 Zeilen zurückgibt - dann existiert das Problem nicht.

Das ist ohnehin grundlegend falsch - 100 Zeilen zurückerhalten und 90 davon verwerfen.

mark007q
PostRank 5
PostRank 5
Beiträge: 225
Registriert: 11.09.2005, 15:43
Wohnort: Bochum

Beitrag von mark007q » 06.08.2006, 11:11

Leider weiß ich nicht wie ich den SQL Befehl ändern muss, sodass er nur 10 Zeichen zurückgibt ...

Michael1967
PostRank 9
PostRank 9
Beiträge: 2158
Registriert: 26.10.2005, 23:51

Beitrag von Michael1967 » 06.08.2006, 11:19

Das habe ich gerade gefunden. Vielleicht hift es dir ja.

Code: Alles auswählen

$trunc_array= array_slice($array, 0, count($array)-$num_elements_to_chop_off, true); 
Quelle: https://www.mediengestalter.info/forum/ ... 677-1.html
Zuletzt geändert von Michael1967 am 06.08.2006, 11:21, insgesamt 1-mal geändert.

pebosi
PostRank 7
PostRank 7
Beiträge: 495
Registriert: 06.11.2004, 18:38

Beitrag von pebosi » 06.08.2006, 11:20

häng einfach an den SQL Befehl ein "LIMIT 10" dran.
Zuletzt geändert von pebosi am 06.08.2006, 12:46, insgesamt 1-mal geändert.

mark007q
PostRank 5
PostRank 5
Beiträge: 225
Registriert: 11.09.2005, 15:43
Wohnort: Bochum

Beitrag von mark007q » 06.08.2006, 11:41

@Michael: Danke, hatte ich auch schon gesehen - klappt aber nicht :(

@pebosi: Wie genau muss das denn aussehen?

Ich habe folg. Abfrage:

Code: Alles auswählen

$result = mysql_query("SELECT name FROM ".$dbPrefix."topic ORDER BY last_post DESC LIMIT 0, 100");
Da muss das Limit 10 rein? Wenn ja, wo genau?

Von der Logik her ist das alles klar, aber die Syntax von PHP erschließt sich mir noch nicht so richtig ...

Michael1967
PostRank 9
PostRank 9
Beiträge: 2158
Registriert: 26.10.2005, 23:51

Beitrag von Michael1967 » 06.08.2006, 12:03

So meint er das -

Code: Alles auswählen

$result = mysql_query("SELECT name FROM ".$dbPrefix."topic ORDER BY last_post DESC LIMIT 0, 10");

mark007q
PostRank 5
PostRank 5
Beiträge: 225
Registriert: 11.09.2005, 15:43
Wohnort: Bochum

Beitrag von mark007q » 06.08.2006, 12:10

Das hatte ich mir auch gedacht, aber damit gibt es keine Veränderung ... es werden weiterhin auch 20, 30 100 oder mehr Zeichen ausgegeben ...

pebosi
PostRank 7
PostRank 7
Beiträge: 495
Registriert: 06.11.2004, 18:38

Beitrag von pebosi » 06.08.2006, 12:44

achso, du willst vom "name" nur 10 Zeichen ausgeben oder was jetzt?

das wäre dann so:

Code: Alles auswählen

$result = mysql_query("SELECT SUBSTRING(name, 0, 10) FROM ".$dbPrefix."topic ORDER BY last_post DESC LIMIT 0, 10");
Zuletzt geändert von pebosi am 06.08.2006, 13:45, insgesamt 1-mal geändert.

mark007q
PostRank 5
PostRank 5
Beiträge: 225
Registriert: 11.09.2005, 15:43
Wohnort: Bochum

Beitrag von mark007q » 06.08.2006, 12:52

Dann wird gar nichts mehr ausgegeben ...

pebosi
PostRank 7
PostRank 7
Beiträge: 495
Registriert: 06.11.2004, 18:38

Beitrag von pebosi » 06.08.2006, 13:46

probier das mal:

Code: Alles auswählen

$result = mysql_query("SELECT SUBSTRING(name, 10) FROM ".$dbPrefix."topic ORDER BY last_post DESC LIMIT 0, 10");

mark007q
PostRank 5
PostRank 5
Beiträge: 225
Registriert: 11.09.2005, 15:43
Wohnort: Bochum

Beitrag von mark007q » 06.08.2006, 14:32

Da werden dann (warum auch immer) nur noch die letzten 3 Zeichen ausgegeben.

Erzähl du doch mal deinen Lösungsansatz OldInternetUser.

pebosi
PostRank 7
PostRank 7
Beiträge: 495
Registriert: 06.11.2004, 18:38

Beitrag von pebosi » 06.08.2006, 16:45

ich denke OLdInternetUser hat auch das mit dem LIMIT gemeint, was genau willst du denn nun eigentlich? Sollen nur 10 Beiträge ausgeben werden, oder sollen die Titel der BEiträge nur 10 Zeichen lang sein?

Michael1967
PostRank 9
PostRank 9
Beiträge: 2158
Registriert: 26.10.2005, 23:51

Beitrag von Michael1967 » 06.08.2006, 17:18

Ich weiß nicht ob das richtig ist, aber ich habe hier auf meiner Platte etwas gefunden.

Code: Alles auswählen

function cutnews ( $text, $zeichen, $kolanz = 3, $punkte = 0 ) {
	    $newstr = "";
	    
	    $text = trim ( stripslashes ( htmlspecialchars ( $text, ENT_QUOTES ) ) ); 
	    $zeichen = intval ( $zeichen );
	    $kolanz = intval ( $kolanz ); 
	    $punkte = intval ( $punkte );
	    
        if &#40; strlen &#40; $text &#41; < $zeichen + $kolanz &#41; &#123;
	         return $text;
        &#125; else &#123;
        &#125;
        
        $wort = explode &#40; " ", $text &#41;;

        $i = 0;
        while &#40; strlen &#40; $newstr &#41; <= $zeichen && strlen &#40; $newstr.$wort&#91;$i&#93; &#41; <= &#40; $zeichen + $kolanz &#41; &#41; &#123;
                $newstr .= $wort&#91;$i&#93;." ";
                $i++;
        &#125;
        $newstr .= str_repeat &#40; ".", $punkte &#41;;
        
        return $newstr;
&#125;

Code: Alles auswählen

echo "".cutnews &#40; $title, 60, 5, 3 &#41;."<br />";

Ice Man
PostRank 9
PostRank 9
Beiträge: 2477
Registriert: 04.06.2003, 19:16

Beitrag von Ice Man » 06.08.2006, 22:52

$j = stripslashes($stats['last_topic']);
$kurz = substr($j, 0, 5) . "";

Das gibt den Wert nur von Stelle 0 bis 5 aus.
Das funktioniert mit Zahlen und Wörtern.

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag