 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
10.02.2004, 14:40
|
#1
|
|
TP-Supporter
Registriert seit: Sep 2002
Ort: Zürich
|
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
|
|
|
10.02.2004, 14:47
|
#2
|
|
TP-Veteran
Registriert seit: Jun 2001
Ort: Wien
|
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.
|
|
|
10.02.2004, 14:51
|
#3
|
|
TP-Supporter
Registriert seit: Sep 2002
Ort: Zürich
|
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
|
|
|
10.02.2004, 15:00
|
#4
|
|
TP-Specialist
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
|
$hole_string.= $namen_user[$i];
|
|
|
10.02.2004, 15:03
|
#5
|
|
TP-Veteran
Registriert seit: Jun 2001
Ort: Wien
|
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.
|
|
|
10.02.2004, 15:04
|
#6
|
|
TP-Supporter
Registriert seit: Sep 2002
Ort: Zürich
|
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
|
|
|
10.02.2004, 15:08
|
#7
|
|
TP-Insider
Registriert seit: Dec 2003
Ort: nienburg (raum hannover)
|
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
|
|
|
10.02.2004, 15:14
|
#8
|
|
TP-Veteran
Registriert seit: Jun 2001
Ort: Wien
|
@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.
|
|
|
10.02.2004, 15:14
|
#9
|
|
TP-Specialist
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
|
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.
|
|
|
10.02.2004, 15:20
|
#10
|
|
TP-Supporter
Registriert seit: Sep 2002
Ort: Zürich
|
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
|
|
|
10.02.2004, 15:34
|
#11
|
|
TP-Supporter
Registriert seit: Sep 2002
Ort: Zürich
|
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 online: nater¦nater
Warum ist der Name doppelt?
Gruss: Spin
|
|
|
10.02.2004, 16:26
|
#12
|
|
TP-Specialist
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
|
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
|
|
|
10.02.2004, 16:34
|
#13
|
|
TP-Specialist
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
|
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.
|
|
|
10.02.2004, 19:23
|
#14
|
|
TP-Insider
Registriert seit: Dec 2003
Ort: nienburg (raum hannover)
|
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
|
|
|
13.02.2004, 15:21
|
#15
|
|
TP-Supporter
Registriert seit: Sep 2002
Ort: Zürich
|
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
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| 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.
HTML-Code ist aus.
|
|
| | |