Shop-Hilfe.com
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 10.02.2004, 14:40   #1
TP-Supporter
 
Benutzerbild von Spin
 
Registriert seit: Sep 2002
Ort: Zürich
Spin macht alles soweit korrekt

Werte aus array in Zeichenkette schreiben


Hallo zusammen!

Folgendes Problem:

Habe einen array der mit Daten aus einer Datenbank gefüllt ist!

PHP-Code:
$namen_user mysql_fetch_array($result
Nun möchte ich diesen Array der je nach Anfrage unterschiedlich viele Elemente enthält so in eine Variable schreiben das das ganze am Schluss etwa so aussieht:

PHP-Code:
$string $namen_user[0]." ".$namen_user[1]." ".$namen_user[n]; 
Das heisst ich möchte die Variable string dynamisch genereieren je nachdem vieviele Elemente $namen_user enthält!

Wie gehe ich das an?

Gruss: Spin
Spin ist offline   Mit Zitat antworten


Alt 10.02.2004, 14:47   #2
TP-Veteran
 
Benutzerbild von Flow09
 
Registriert seit: Jun 2001
Ort: Wien
Flow09 ist auf einem guten Weg
Du brauchst mysql_num_fields bzw. mysql_num_rows!

Damit baust Du dann ein Schleife auf:

PHP-Code:

$count 
mysql_num_fields($result);

for (
$i 0$i <= $count$i++)
{
//Zusammenfügen des Strings

lg
Flow
__________________
Lesser known Programming Languages #13: SLOBOL
... Although many compilers allow you to take a coffee break while they compile, SLOBOL compilers allow you to travel to Bolivia to pick the coffee. Forty-three programmers are known to have died of boredom sitting at their terminals while waiting for a SLOBOL program to compile. Weary SLOBOL programmers often turn to a related (but infinitely faster) language, COCAINE.
Flow09 ist offline   Mit Zitat antworten
Alt 10.02.2004, 14:51   #3
TP-Supporter
 
Benutzerbild von Spin
 
Registriert seit: Sep 2002
Ort: Zürich
Spin macht alles soweit korrekt

Werte aus array in Zeichenkette schreiben


Ja sowas habe ich auch gedacht und ausprobiert!

Nun schön das tönt mal logisch aber wie kriege ich nun den String zusammen? Habe irgendwie einen Hänger!

Gruss: Spin
Spin ist offline   Mit Zitat antworten
Alt 10.02.2004, 15:00   #4
TP-Specialist
 
Benutzerbild von theo
 
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
theo bringt sich richtig ein
$hole_string.= $namen_user[$i];
theo ist offline   Mit Zitat antworten
Alt 10.02.2004, 15:03   #5
TP-Veteran
 
Benutzerbild von Flow09
 
Registriert seit: Jun 2001
Ort: Wien
Flow09 ist auf einem guten Weg
PHP-Code:
$sql "SELECT * FROM table1";

$result pg_query($conn$sql);

$count pg_num_fields($result);

while (
$row pg_fetch_array($result))
{
    for (
$i 0$i <= $count$i++)
    {
        
$string.= $row[$i].", ";
    }

Vorsicht beim kopieren, das sind PostgreSQL-Funktionen, Du must das pg_ durch mysql_ ersetzten!

lg
Flow
__________________
Lesser known Programming Languages #13: SLOBOL
... Although many compilers allow you to take a coffee break while they compile, SLOBOL compilers allow you to travel to Bolivia to pick the coffee. Forty-three programmers are known to have died of boredom sitting at their terminals while waiting for a SLOBOL program to compile. Weary SLOBOL programmers often turn to a related (but infinitely faster) language, COCAINE.
Flow09 ist offline   Mit Zitat antworten
Alt 10.02.2004, 15:04   #6
TP-Supporter
 
Benutzerbild von Spin
 
Registriert seit: Sep 2002
Ort: Zürich
Spin macht alles soweit korrekt

Werte aus array in Zeichenkette schreiben


Shit!!!

Ja klar! Danke viel mal! Habe vor lauter php das nicht mehr geschnallt!

Danke ihr zwei!

Gruss Spin
Spin ist offline   Mit Zitat antworten
Alt 10.02.2004, 15:08   #7
TP-Insider
 
Benutzerbild von HoRnominatoR
 
Registriert seit: Dec 2003
Ort: nienburg (raum hannover)
HoRnominatoR ist auf einem guten Weg
warum so kompliziert?

Code:
implode(', ', $result);
__________________
in eile kam er,
in schwarzem gewand,
aus den tiefen des waldes,
ein einsamer mann, ein geschoepf der freiheit,
ein geschoepf ohne furcht,
doch alle nannten sie ihn nur T O D
HoRnominatoR ist offline   Mit Zitat antworten
Alt 10.02.2004, 15:14   #8
TP-Veteran
 
Benutzerbild von Flow09
 
Registriert seit: Jun 2001
Ort: Wien
Flow09 ist auf einem guten Weg
@HoRnominatoR: Ein implode auf eine Result-ID einer DB-Abfrage, hast Du das schon mal ausprobiert??
__________________
Lesser known Programming Languages #13: SLOBOL
... Although many compilers allow you to take a coffee break while they compile, SLOBOL compilers allow you to travel to Bolivia to pick the coffee. Forty-three programmers are known to have died of boredom sitting at their terminals while waiting for a SLOBOL program to compile. Weary SLOBOL programmers often turn to a related (but infinitely faster) language, COCAINE.
Flow09 ist offline   Mit Zitat antworten
Alt 10.02.2004, 15:14   #9
TP-Specialist
 
Benutzerbild von theo
 
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
theo bringt sich richtig ein
oder aber anders ...
PHP-Code:
$query_=_mysql_query("select * from table1");
$namen_user mysql_fetch_array($query);
$string implode(", "$namen_user);
print(
$string); 
ist das nicht viel schoener, kuerzer und ueberhaupt?!


EDIT
aaaaaahhhhhh .... verdammt!!! ich hasse es, wenn jemand schneller ist als ich.
theo ist offline   Mit Zitat antworten
Alt 10.02.2004, 15:20   #10
TP-Supporter
 
Benutzerbild von Spin
 
Registriert seit: Sep 2002
Ort: Zürich
Spin macht alles soweit korrekt
Yes jetzt gehts!

Nur noch ein kleines Problem!

Hab das jetzt so gemacht:

PHP-Code:
for ($i 0$i <= $count$i++) {
    
$user_string.= "    ".$namen_user[$i]."    ¦";
    } 
Das Problem ist nur! Warum gibt das folgendes aus?

PHP-Code:
Folgender User ist online¦ nater ¦¦ 
Warum krieg ich am Schluss 2 ¦¦?

Hier mal der gesamte Code

PHP-Code:
$sql "SELECT username FROM onlineuser";
$result mysql_query($sql);
$anzahl mysql_num_rows($result);

if(
$anzahl != "1") {
    
$anzahl_user "Es sind ".$anzahl." Users online.";
    
$namen_anzeigen_user "Folgende Users sind online:    ¦";
    }
else {
    
$anzahl_user "Es ist ".$anzahl." User online.";
    
$namen_anzeigen_user "Folgender User ist online:    ¦";
    }
    
$namen_user mysql_fetch_array($result);
$count mysql_num_fields($result);

for (
$i 0$i $count$i++) {
    
$user_string.= "    ".$namen_user[$i]."    ¦";
    } 
Danke für eure Hilfe und Gruss

Spin
Spin ist offline   Mit Zitat antworten
Alt 10.02.2004, 15:34   #11
TP-Supporter
 
Benutzerbild von Spin
 
Registriert seit: Sep 2002
Ort: Zürich
Spin macht alles soweit korrekt

Werte aus array in Zeichenkette schreiben


Ah sorry! Habe die Möglichkeit mit implode erst jetzt gesehen!

Das ist wirklich besser und viel kürzer!

Jetzt siehts endgültig so aus:

PHP-Code:
$online_time ="300";

$link =@mysql_connect($dbserver,$dbuser,$dbpass) or die("Keine Datenbankverbindung möglich! <a href=\"member_index.php\">Zurück</a>");
@
mysql_select_db($dbname,$link) or die("Auswahl der Datenbank fehlgeschlagen! <a href=\"member_index.php\">Zurück</a>");

$time explode" "microtime()); 
$rtime = (double)$time[1]; 
$userid $_SESSION['userID']; 
$ip getenv(REMOTE_ADDR); 
$username $_SESSION['user_login'];

$delete_time $rtime $online_time;
$sql "DELETE FROM onlineuser WHERE time <'$delete_time'";
$result mysql_query($sql);

$sql "SELECT * FROM onlineuser WHERE ip ='$ip'";
$result mysql_query($sql);
$reihe mysql_fetch_row($result);
if (
$reihe == false) {
    
$sql "INSERT INTO onlineuser (userid,ip,username,time) VALUES('$userid','$ip','$username','$rtime')";
    
$result mysql_query($sql);
     }
$sql "SELECT username FROM onlineuser";
$result mysql_query($sql);
$anzahl mysql_num_rows($result);

if(
$anzahl != "1") {
    
$anzahl_user "Es sind ".$anzahl." Users online.";
    
$namen_anzeigen_user "Folgende Users sind online:";
    }
else {
    
$anzahl_user "Es ist ".$anzahl." User online.";
    
$namen_anzeigen_user "Folgender User ist online:";
    }
    
$namen_user mysql_fetch_array($result);

$user_string implode("¦"$namen_user);


mysql_close(); 
Aber es ergiebt sich immer noch eine komische Ausgabe:
PHP-Code:
Folgender User ist onlinenater¦nater 
Warum ist der Name doppelt?

Gruss: Spin
Spin ist offline   Mit Zitat antworten
Alt 10.02.2004, 16:26   #12
TP-Specialist
 
Benutzerbild von theo
 
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
theo bringt sich richtig ein
hi spin,

offensichtlich ist es auf einmal etwas ruhiger geworden

findest du es sinnvoll und notwendig, die gleichen namen fuer mehrere variablen zu vergeben? mit faellt vor allem die $result auf.
ansonsten sehe ich keinen fehler.

gruss
hardy
theo ist offline   Mit Zitat antworten
Alt 10.02.2004, 16:34   #13
TP-Specialist
 
Benutzerbild von theo
 
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
theo bringt sich richtig ein
eines faellt mir noch auf:
warum das if-construct mit dem if($anzahl > 0) { ... ???
wenn nur ein user online ist, dann ist es doch der, der gerade auf den bildschirm schaut. und dem brauchst du doch nicht sagen, dass er online ist. sollte er doch selbst schon gemerkt haben oder?!
da koennte man noch etwas script sparen.
theo ist offline   Mit Zitat antworten
Alt 10.02.2004, 19:23   #14
TP-Insider
 
Benutzerbild von HoRnominatoR
 
Registriert seit: Dec 2003
Ort: nienburg (raum hannover)
HoRnominatoR ist auf einem guten Weg
implode funktioniert mit jedem array, und mysql_fetch_array gibt ein array aus, und ja, ich hab das vorher probiert

wenn da nater|nater rauskommt, heisst das, es sind zwei user mit namen nater online (warum auch immer).

in der kuerze liegt die wuerze?

Code:
$user_string = implode('|', mysql_fetch_array(mysql_query('SELECT username FROM onlineuser')))
__________________
in eile kam er,
in schwarzem gewand,
aus den tiefen des waldes,
ein einsamer mann, ein geschoepf der freiheit,
ein geschoepf ohne furcht,
doch alle nannten sie ihn nur T O D
HoRnominatoR ist offline   Mit Zitat antworten
Alt 13.02.2004, 15:21   #15
TP-Supporter
 
Benutzerbild von Spin
 
Registriert seit: Sep 2002
Ort: Zürich
Spin macht alles soweit korrekt

Werte aus array in Zeichenkette schreiben


So habe mich ein wenig schlau gemacht und ein wenig Debuggt!

Es sind nicht zwei User mit dem gleichen Namen online, dass kann gar nicht sein weil in dem Bereich nur Users unterwegs sind die einen einzigartigen Usernamen haben. Es gibt also keine doppelten user.

Habe das Script nun folgendermassen umgebaut:

PHP-Code:
$anzahl mysql_num_rows(mysql_query('SELECT * FROM onlineuser'));     
     
$user_string implode('    |    'mysql_fetch_array(mysql_query('SELECT username FROM onlineuser')));
$user_string_2 mysql_fetch_array(mysql_query('SELECT username FROM onlineuser'));
echo 
$user_string;
echo 
$user_string_2[0]."<br>";
echo 
$user_string_2[1]."<br>"
Habe das ganze zum testen auf zwei Arten probiert.

Variante 1 ($user_string)

Ergiebt den Namen des Users doppelt. Also naternater

Variante 2 ($user_string_2)

Ergiebt komischerweise für [0] --> nater
aber für [1] einen leeren Wert. Das heisst der Username steht nur einmal in der Datenbank.

Schlussfolgerung:

Das Verdoppeln des Namens muss irgend was mit der implode Funktion zu tun haben! Aber an was liegt das?

Habe die Implode Funktion mal getestet um zu Probiern was passiert wenn nur ein Username vorhanden ist also so in dem Stil

PHP-Code:
$test = array('nater');
$implode implode("¦"$test);
echo 
$implode
Das ergibt korrekt nur ein mal den Namen --> nater

Hoffe das war verständlich! Ich kreigs eifach nicht hin

Gruss: Spin
Spin ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
Werte aus array in Zeichenkette schreiben Werte aus array in Zeichenkette schreiben
« checkbox nur anklickbar, wenn bestimmte Seite vorher aufgerufen wurde | scripte laufen nicht mehr, neue PHP version? »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu