Problem beim Losen mit shuffle()
Katharina
- php
Hallo zusammen!
Vielleicht kann mir ja einer von euch weiterhelfen.
Ich habe folgendes Problem. Ich möchte für meine Internetseite eine automatische "Losmaschine" programmieren, die zu einer bestimmten Zeit aus einer Teilnehmerliste eine Siegerliste erstellt.
Ich habe das Ganze mit shuffle() gelöst und an sich funktioniert das auch sehr schön.
Allerdings kommt jedes Mal beim Laden der Seite eine neue Siegerliste. Nun möchte ich aber, dass nur ein einziges mal gelost wird und das Ergebnis dann feststeht.
Wie bekomme ich das hin?
Hat da vielleicht einer eine Idee? Ich bin im Moment vollkommen ratlos.
Hier mal ein Teil des Codes.
$zufall = array();
$abfrage = "SELECT Pferd FROM TWSP WHERE Prufung = 'T1P1'";
$result = mysql_query($abfrage);
while ($row = mysql_fetch_assoc($result)){
foreach ($row AS $teilnehmer){
$zufall[] = $teilnehmer;
}
}
if (($datum>=$turnierdatum) AND ($zeit>=$turnierzeit)){
shuffle($zufall);
foreach ($zufall AS $teilnehmer){
echo "$teilnehmer<br>";
}
}
Zweites Problem ist, dass ich das feststehende Ergebnis aus der Siegerliste ebenfalls automatisch in eine Textdatei schreiben möchte. Allerdings wird, wenn ich das $teilnehmer versuche in besagte Datei zu schreiben anstatt aller Einträge nur einer geschrieben. Wie kann ich das ändern?
$datei = fopen("addition.txt","w");
fputs($datei, $teilnehmer);
fclose($datei);
GleichesProblemtritt auch auf, wenn ich folgenden Code verwende:
$datei = fopen("addition.txt","w");
$inhalt = $teilnehmer;
fputs($datei, $inhalt);
fclose($datei);
Ich hoffe auf Hilfe.
Viele Grüße, Katharina
Hi,
Ich habe das Ganze mit shuffle() gelöst und an sich funktioniert das auch sehr schön.
Allerdings kommt jedes Mal beim Laden der Seite eine neue Siegerliste. Nun möchte ich aber, dass nur ein einziges mal gelost wird und das Ergebnis dann feststeht.
Wie bekomme ich das hin?
In dem du die ge-shuffle-te Version der Liste irgendwo speicherst.
Zweites Problem ist, dass ich das feststehende Ergebnis aus der Siegerliste ebenfalls automatisch in eine Textdatei schreiben möchte. Allerdings wird, wenn ich das $teilnehmer versuche in besagte Datei zu schreiben anstatt aller Einträge nur einer geschrieben.
Es ist ja auch, bei dem Code, den du gezeigt hast, immer nur einer - der jeweils aktuelle beim Durchlaufen der Schleife.
MfG ChrisB
Hi,
»» Ich habe das Ganze mit shuffle() gelöst und an sich funktioniert das auch sehr schön.
»» Allerdings kommt jedes Mal beim Laden der Seite eine neue Siegerliste. Nun möchte ich aber, dass nur ein einziges mal gelost wird und das Ergebnis dann feststeht.
»» Wie bekomme ich das hin?In dem du die ge-shuffle-te Version der Liste irgendwo speicherst.
»» Zweites Problem ist, dass ich das feststehende Ergebnis aus der Siegerliste ebenfalls automatisch in eine Textdatei schreiben möchte. Allerdings wird, wenn ich das $teilnehmer versuche in besagte Datei zu schreiben anstatt aller Einträge nur einer geschrieben.
Es ist ja auch, bei dem Code, den du gezeigt hast, immer nur einer - der jeweils aktuelle beim Durchlaufen der Schleife.
MfG ChrisB
Blöde Frage wie und wo kann ich das Speichern? mit ner txt-Datei funktioniert es eben bis jetzt noch nicht und das ist die einzige Lösung, die mir einfällt, neben dem Speichern in einer MYSQL-Datenbank.
Wenn ich den ersten Code wie oben verwende, dann werden alle Teilnehmer nach dem Mischen ausgegeben. Nur wenn ich das $teilnehmer versuche irgendwo einzubauen, dann geht es nicht.
So sieht es aus.
http://katharinaweber/Test/addition.php
Vielleicht wird es dadurch etwas klarer.
Viele Grüße, Katharina und danke für deine Hilfe
Hi,
bitte zitiere vernuenftig, und nicht einfach alles!
Blöde Frage wie und wo kann ich das Speichern? mit ner txt-Datei funktioniert es eben bis jetzt noch nicht und das ist die einzige Lösung, die mir einfällt, neben dem Speichern in einer MYSQL-Datenbank.
Na das sind doch schon mal zwei Moeglichkeiten.
Was allerdings nicht funktioniert, ist "funktioniert nicht".
</hilfe/charta.htm#tipps-fuer-fragende>
Wenn ich den ersten Code wie oben verwende, dann werden alle Teilnehmer nach dem Mischen ausgegeben. Nur wenn ich das $teilnehmer versuche irgendwo einzubauen, dann geht es nicht.
"Geht nicht" ist der Zwillingsbruder von "funktioniert nicht".
So sieht es aus.
http://katharinaweber/Test/addition.php
Tut mir Leid, den Host katharinaweber kennt mein Rechner nicht.
MfG ChrisB
http://katharinaweber.bplaced.net/Test/addition.php
Sorry Link war nicht vollständig.
Leider kann ich mit deinem Link nicht viel anfangen, da ich mein Problem eigentlich ziemlich detailliert dargestellt habe.
Was allerdings nicht funktioniert, ist "funktioniert nicht".
Das kommt dem Spruch "Ich kann nicht, wohnt in der Ich-will-nicht-Straße" ziemlich gleich, ist aber wenig produktiv.
Der Lösung bin ich damit immer noch nicht viel näher. Wenn ich es in eine Textdatei schreibe, dann wird eben nur einer von den ganzen Teilnehmer geschrieben - ich brauche aber alle. Außerdem wird die Textdatei immer wieder mit den neuen Ergebnissen aktualisiert. Also geht es so nicht. Vielleicht hast du ja eine bessere Lösung.
Wäre echt klasse.
Und ein Codeansatz wäre auch nicht schlecht.
Viele Grüße, Katharina
Hi,
Wenn ich es in eine Textdatei schreibe, dann wird eben nur einer von den ganzen Teilnehmer geschrieben - ich brauche aber alle.
Was, ausser "dann schreib halt alle rein", soll ich dir dazu sagen?
Außerdem wird die Textdatei immer wieder mit den neuen Ergebnissen aktualisiert. Also geht es so nicht.
Wieso nicht?
Dann aktualisiere sie halt nicht.
MfG ChrisB
Was, ausser "dann schreib halt alle rein", soll ich dir dazu sagen?
Wie? Und jetzt schick mir bitte keinen Link zu einem Tutorial. Davon habe ich genug und ich habe auch, bevor ich hier Hilfe gesucht habe ziemlich viel probiert. Wüsste ich, wie ich alle Teilnehmer, die mit shuffle() gemischt wurden, übermitteln kann, dann müsste ich nicht fragen.
Ich habe doch meinen Lösungsansatz gepostet. Damit kann man doch arbeiten oder sehe ich da was falsch? Bis jetzt hast du mir nur gesagt wie man es machen könnte, aber einen Lösungsansatz, dass mir wirklich geholfen ist, habe ich noch nicht.
Wieso nicht?
Dann aktualisiere sie halt nicht.
Es reicht schon, wenn der Besucher der Page auf die normale php-Seite geht. Dann wird in die Textdatei ein neues Mischergebnis reingeschrieben und schon sind wir wieder beim Ausgangsproblem. Einfach mit "dann aktualisier es halt nicht" ist es nicht getan. Auch damit ist mir nicht geholfen.
Es wäre wirklich schön, wenn jetzt etwas Konkretes käme. Ich will gar keinen fertigen Code, den ich nur noch einbauen muss, aber ein bisschen mehr Hilfe und vor allem etwas hilfreicher erklärt, wäre nett.
Viele Grüße, Katharina
Hi,
Ich habe doch meinen Lösungsansatz gepostet. Damit kann man doch arbeiten oder sehe ich da was falsch?
Und ich habe dir dazu gesagt, dass deine Variable nach dem Durchlaufen deiner foreach-Schleife nur den letzten Teilnehmer enthaelt.
Also wird es wohl nicht reichen, nur den Inhalt dieser Variablen wegzuschreiben.
Es reicht schon, wenn der Besucher der Page auf die normale php-Seite geht. Dann wird in die Textdatei ein neues Mischergebnis reingeschrieben und schon sind wir wieder beim Ausgangsproblem.
Ja dann muessen wir das mit dem erneuten Erstellen der Textdatei halt mal sein lassen.
Einfach mit "dann aktualisier es halt nicht" ist es nicht getan. Auch damit ist mir nicht geholfen.
Mit "hilft mir nicht" ist uns auch nicht geholfen.
Es wäre wirklich schön, wenn jetzt etwas Konkretes käme.
Da bin ich auch fuer - also leg mal los. Beschreibe, welches Problem du *konkret* hast - und nicht staendig nur "bekomme ich nicht hin" oder "damit ist mir nicht geholfen".
MfG ChrisB
1. Wie schaffe ich es, dass die Variable nach der Schleife alle Teilnehmer enthält, so wie sie ja auch im echo ausgegeben werden. (siehe Link)
2. Wie muss ich die Textdatei schreiben, dass sie nicht von den neuen Ergebnissen überschrieben wird?
Konkret genug?
Gruß, Katharina
Hi,
- Wie schaffe ich es, dass die Variable nach der Schleife alle Teilnehmer enthält, so wie sie ja auch im echo ausgegeben werden.
Dazu musst du sie in einer Variablen alle hintereinanderhaengen.
- Wie muss ich die Textdatei schreiben, dass sie nicht von den neuen Ergebnissen überschrieben wird?
Schreibe sie ein mal, und ueberschreibe sie dann anschliessend nicht.
Konkret genug?
Antworten konkret genug?
MfG ChrisB
Antworten konkret genug?
Nein leider nicht.
Kannst du mir bitte konkret schreiben was ich jetzt in meinem Code verändern muss?
Ich weiß nicht WIE es geht. WIE schreibe ich die Variablen hintereinander. WIE ändere ich den Code für die Textdatei so, dass sie nicht überschrieben wird. WAS muss ich eingeben? WAS muss ich ändern?
Theorie ist ganz schön und gut, wenn man weiß wie es geht, aber ich brauche ein Beispiel.
Sonst hätte ich hier nicht gefragt.
Gruß Katharina
Hi,
WIE schreibe ich die Variablen hintereinander.
Du sollst nicht Variablen hintereinander schreiben, sondern ihre Inhalte - und dauz gibt es Operatoren. Wenn du sie nicht kennst, lese dazu im Manual nach.
WIE ändere ich den Code für die Textdatei so, dass sie nicht überschrieben wird.
In dem du bspw. erst mal pruefst, ob sie bereits existiert.
MfG ChrisB
Wenn du mir nicht helfen willst, dann sag es doch.
Ich habe genau erfragt was ich brauche und bis jetzt kam von dir nur heiße Luft. Langsam glaube ich, dass du gar nicht wirklich weißt wovon du redest.
Ich bin kein Profi auf dem Gebiet und die Tutorials haben mir nicht weitergeholfen.
Ich habe nach einem Beispiel anhand meines Codes gefragt und es kam von dir wieder nur Geschwafel.
Wenn das alles so einfach ist, warum kannst du mir dann nicht mit einem konkreten Code erklären wie es geht?
Dafür ist dieses Forum hier nämlich da. Dass Leuten geholfen wird und zwar so, dass sie es auch verstehen. Im Moment habe ich hier nur Zeit vergeudet. Eine Lösung meines Problemes ist so fern, wie vor zwei Stunden auch.
Ich sage es noch einmal für alle Anderen, die vielleicht Interesse daran haben mir zu helfen.
Es nutzt mir nichts, wenn ich hier eine theoretische Beschreibung mit demverweis auf etwaige Tutorials und Manuals bekomme.
Ich brauche ein konkretes Beispiel anhand meines Codes, so dass ich damit auch arbeiten kann.
In der Hoffnung, dass ich endlich verstanden werde.
Viele Grüße, Katharina
Hi,
Wenn du mir nicht helfen willst, dann sag es doch.
Wenn du dir nicht helfen lassen willst, dann sag es doch.
Ich habe genau erfragt was ich brauche und bis jetzt kam von dir nur heiße Luft. Langsam glaube ich, dass du gar nicht wirklich weißt wovon du redest.
Nice try.
Ich bin kein Profi auf dem Gebiet und die Tutorials haben mir nicht weitergeholfen.
In wie fern nicht?
Du kannst in Tutorials keine fertige Loesung fuer jedes Individualproblem erwarten. Was sie aber koennen, ist dir die noetigen Grundlagen beibringen.
Ich habe nach einem Beispiel anhand meines Codes gefragt und es kam von dir wieder nur Geschwafel.
Wenn das alles so einfach ist, warum kannst du mir dann nicht mit einem konkreten Code erklären wie es geht?
Weil ich die Aufgabe eines Forums nicht darin sehe, Leuten fertigen Code vor die Fuesse zu werfen.
Dafür ist dieses Forum hier nämlich da. Dass Leuten geholfen wird und zwar so, dass sie es auch verstehen.
Dazu muessen sie genau beschreiben, was sie nicht verstehen.
Wenn sie aber immer nur mit "funzt nicht" oder "versteh nix" ankommen, ist das wenig hilfreich.
Es nutzt mir nichts, wenn ich hier eine theoretische Beschreibung mit demverweis auf etwaige Tutorials und Manuals bekomme.
Ich erklaere dir gerne das theoretische Vorgehen - die praktische Umsetzung ist dann deine Aufgabe.
Wenn du nicht bereit bist, dir die dafuer noetigen Grundlagen anzueignen - dann gebe es bei irgend jemandem in Auftrag.
MfG ChrisB
Ich habe hier schon einmal geschrieben, dass ich keine fertige Lösung will.
Einen Großeteil habe ich ja schon selbst gemacht oder nicht? Es ist ja nicht so, dass ich hier ankomme und sage "nun mach mal".
Was die Sache mit den Tutorials betrifft, so weiß ich das auch. So blöd bin ich dann nun auch nicht. Außerdem erwarte ich auch gar keine fertige Lösung. Ich bin durchasus bereit und tue dies auch, aus Tutorials zu lernen. Das ist aber nur die halbe Miete, da man die praktische Anwendung nicht hat. Genau nach dieser frage ich hier.
Warum soll ich es in Auftrag geben, wenn ich es alleine hinbekommen könnte.
Mir fehlt eben nur dieser kleine Teil. Den Rest der Lösung, und das Script wird noch lang, weiß ich aus eigenen Mitteln umzusetzen.
Im Übrigen ist das mit den Operatoren unrealistisch, da die Teilnehmerzahl schwankt und man nie vorhersehen kann wie viele Teilnehmer es nun genau sind. Es soll ein automatisiertes Script werden, das selbstständig arbeitet.
Dich jetzt zu fragen, ob es eine Variante gibt alles auszulesen ist müßig. Das sehe ich. Denn eine vernünftige Antwort habe ich bis jetzt in der ganzen Zeit noch nicht bekommen.
Es kommt also auch diesmal nur wieder irgendwas Nichtssagendes.
Anscheinend kannst du dich an deine Anfangszeit nicht erinnern. Wirklich schade. Denn auch du hast einmal vor für dich unlösbaren Problemen gestanden und wusstest nicht weiter. Und auch du hast dich belesen und das was du gelesen hast, hat dir nicht geholfen. Bedauerlich also, dass du jetzt so von oben herab schreibst und die Leute nur vorführen, aber ihnen nicht wirklich helfen willst.
Im Übrigen siehst du die Aufgrabe eines Forums falsch. Es ist eben genau dafür da,nämlich Leuten bei Lösung ihrer Probleme unter die Arme zu greifen. Nicht mit fertigen Codes, das sehe ich auch so, aber mit Beispielen. Die bringen keinen um,und schon gar nicht man, wie du, behauptet, dass man es kann.
Gruß Katharina
Hi,
Im Übrigen ist das mit den Operatoren unrealistisch, da die Teilnehmerzahl schwankt und man nie vorhersehen kann wie viele Teilnehmer es nun genau sind.
Red' doch nicht so einen Scheiss.
Du benutzt doch im Script bereits Schleifen - also behaupte bitte nicht, es waere nicht moeglich, jedes Element eines Arrays einmal anzusprechen, egal wie viele Eintraege es nun hat.
Dich jetzt zu fragen, ob es eine Variante gibt alles auszulesen ist müßig. Das sehe ich. Denn eine vernünftige Antwort habe ich bis jetzt in der ganzen Zeit noch nicht bekommen.
Danach hast du bisher auch noch nicht gefragt.
Ausserdem muesstest du die Antwort selber bereits kennen, siehe oben.
Wenn du sie nicht kennst, dann hilft nur eins - Grundlagen lernen, damit du auch verstehst, was du tust, und bereits vorhandenen Code auch fuer leicht anders gelagerte Aufgabenstellungen abstrahieren kannst.
Anscheinend kannst du dich an deine Anfangszeit nicht erinnern. Wirklich schade. Denn auch du hast einmal vor für dich unlösbaren Problemen gestanden und wusstest nicht weiter. Und auch du hast dich belesen und das was du gelesen hast, hat dir nicht geholfen.
Doch, das hat es meistens.
Im Übrigen siehst du die Aufgrabe eines Forums falsch. Es ist eben genau dafür da,nämlich Leuten bei Lösung ihrer Probleme unter die Arme zu greifen. Nicht mit fertigen Codes, das sehe ich auch so, aber mit Beispielen.
Das Manual hat zahlreiche Beispiele, also lies nach.
MfG ChrisB
Hello,
Im Übrigen ist das mit den Operatoren unrealistisch, da die Teilnehmerzahl schwankt und man nie vorhersehen kann wie viele Teilnehmer es nun genau sind.
was hat das mit dem Operator zu tun? Du suchst nach einer einfachen String-Konkatenation...
MfG
Rouven
Keine Ahnung.
Ich habe nur das aufgegriffen, was mir geraten wurde.
Vielleicht kannst du mir ja bei meinem Problem helfen. Ich komme echt nicht weiter.
Viele Grüße, Katharina
Hi,
Keine Ahnung.
Ich habe nur das aufgegriffen, was mir geraten wurde.
Wenn du es mal aufgreifen *wuerdest* ...
Ja, auch Stringverkettung macht man mit einem Operator.
MfG ChrisB
Was du machst ist nicht helfen, sondern dissen!
Du denkst nur weil du weißt wie es geht, kannst du alle anderen, die es nicht wissen, vorführen.
Ich wünsche dir, dass du einmal auf einem anderen Gebiet genauso dastehst, wie ich jetzt und dass dir dann so "geholfen" wird, wie du es bei mir gemacht hast, nämlich gar nicht.
Macht Spaß Menschen in die Verzweiflung zu treiben, die wirklich HILFE und kein Gerede erbitten - nicht?
Schäm dich! - kann ich dazu nur sagen.
Aber du bist ja so von dir eingenommen, dass du dein Unrecht noch nicht einmal erkennst.
Wie gesagt - möge dir auch einmal jemand eine solche Behandlung zu teil werden lassen. Vielleicht denkst du dann an alle die zurück, denen du mit deinen Kommentaren und deinem nichtssagenden Geschwafel, wie man es doch machen könnte und wie es ja richtig wäre, ohne einmal sich die Mühe zu machen konkret anhand eines Bespieles zu erklären, den Spaß am Programmieren genommen hast.
Es ist immer einfach zu sagen man solle sich belesen. Da muss man ja selbst nichts investieren, sondern kann ohne viel Mühe eine Menge Dummschwätzen.
Weißt du was? Lass es bleiben. Es kommt ohnehin nichts ordentliches bei dir raus. Geh zurück in deine Rechnerecke und programmier meinetwegen das halbe Internet lahm, aber Community ist nichts für dich.
Da heißt es nämlich leben und leben lassen. Gegeseitiger Respekt und Hilfsbereitschaft. Und auch die Bereitschaft den Leuten Sachen etwas präzieser und eben mal mit Beispielen zu erklären, wenn die das nicht verstehen.
Du aber siehst nur dich und die Chance wie du mit deinen Antworten am besten dastehen kannst. Jeder, der sich richtig damit auskennt und das alles gelesen hat, wird nämlich jetzt sagen "man ist die doof, dss die das nicht kapiert!" Genau das soll aber dabei nicht rauskommen. Bei einem Problem soll nämlich hier nicht nur dem geholfen werden, der nach einer Lösung fragt, sondern allen anderen, die dieses Problem ebenfalls haben und jetzt danach suchen. 95% aller, die nach diesem Thread suchen, werden aber mit deiner Antort auch nichts anfangen können. Damit ist nur einem geholfen, nämlich deinem Ego.
Herzlichen Glückwunsch!
Aber es ist müßig dir das zu schreiben, denn das interessiert dich ohnehin nicht. Du wolltest nur deinen Spaß und den hattest du.
Wieder ein Opfer mehr für deine Trophäensammlung. Brüste dich aber nicht zu sehr damit, denn irgendwann wird auch dich das Schicksal der Unwissenheit auf einem Gebiet ereilen.
Das ist das Letzte, was ich dir jetzt noch antworte.
Ach ja - ehe ich es vergesse - Danke für Nichts.
Katharina
Hallo zusammen!
Vielleicht kann mir ja einer von euch weiterhelfen.
Ich habe folgendes Problem. Ich möchte für meine Internetseite eine automatische "Losmaschine" programmieren, die zu einer bestimmten Zeit aus einer Teilnehmerliste eine Siegerliste erstellt.
Ich habe das Ganze mit shuffle() gelöst und an sich funktioniert das auch sehr schön.
Allerdings kommt jedes Mal beim Laden der Seite eine neue Siegerliste. Nun möchte ich aber, dass nur ein einziges mal gelost wird und das Ergebnis dann feststeht.
Wie bekomme ich das hin?
Hat da vielleicht einer eine Idee? Ich bin im Moment vollkommen ratlos.Hier mal ein Teil des Codes.
$zufall = array();
$abfrage = "SELECT Pferd FROM TWSP WHERE Prufung = 'T1P1'";
$result = mysql_query($abfrage);
while ($row = mysql_fetch_assoc($result)){
foreach ($row AS $teilnehmer){
$zufall[] = $teilnehmer;
}
}
if (($datum>=$turnierdatum) AND ($zeit>=$turnierzeit)){
shuffle($zufall);
foreach ($zufall AS $teilnehmer){
echo "$teilnehmer<br>";
}
}
>
> Zweites Problem ist, dass ich das feststehende Ergebnis aus der Siegerliste ebenfalls automatisch in eine Textdatei schreiben möchte. Allerdings wird, wenn ich das $teilnehmer versuche in besagte Datei zu schreiben anstatt aller Einträge nur einer geschrieben. Wie kann ich das ändern?
>
> ~~~php
> $datei = fopen("addition.txt","w");
>
> fputs($datei, $teilnehmer);
> fclose($datei);
>
GleichesProblemtritt auch auf, wenn ich folgenden Code verwende:
$datei = fopen("addition.txt","w");
$inhalt = $teilnehmer;fputs($datei, $inhalt);
fclose($datei);
>
> Ich hoffe auf Hilfe.
>
> Viele Grüße, Katharina
Obiges Problem besteht leider immernoch.
Vielleicht hat noch jemand eine Lösung, möglichst mit Beispiel für mich? Wäre echt klasse.
Und nein - ich will hier keinen vollständigen Lösungscode, sondern nur die nötigen Codeschnipsel, die mich weiterbringen könnten.
Und bitte auch keinen Verweis auf Tutorials, da ich davon genug habe und diese, bevor ich hier gepostet habe, auch ausführlichst zu Rate zog.
Ich bin wirklich verzweifelt, da ich nicht mehr weiter weiß.
Viele Grüße, Katharina
Hi,
Obiges Problem besteht leider immernoch.
Sag bloss,
Ich bin wirklich verzweifelt, da ich nicht mehr weiter weiß.
Sag bloss.
MfG ChrisB
echo $begrüßung;
Ach ja - ehe ich es vergesse - Danke für Nichts.
Wenn du mal das gegebene Nichts in eine Suchmaschine eingegeben hättest statt hier ellenlange Pamphlets als Entschuldigungsversuch zu verfassen, wärst du der Lösung schon viel näher.
Erstes Nichts: php string operator - alternativ: php string verbinden
Zweites Nichts: php datei existiert - alternativ: php datei vorhanden
echo "$verabschiedung $name";
echo $begrüßung;
»» Ach ja - ehe ich es vergesse - Danke für Nichts.
Wenn du mal das gegebene Nichts in eine Suchmaschine eingegeben hättest statt hier ellenlange Pamphlets als Entschuldigungsversuch zu verfassen, wärst du der Lösung schon viel näher.
Erstes Nichts: php string operator - alternativ: php string verbinden
Zweites Nichts: php datei existiert - alternativ: php datei vorhandenecho "$verabschiedung $name";
DAS HILFT MIR NICHT VERDAMMT!!!
Ich brauche hier keinen Rat wo ich nachschauen solll, sondern jemanden, der es mir anhand eines Beispieles erklärt.
Warum ist das so schwer zu begreifen?
Hello,
Warum ist das so schwer zu begreifen?
ist es nicht. Du wirst den nachfolgenden Teil nicht hören wollen, aber es ist für so ziemlich jeden Entwickler auf dieser Erde nicht nur einmal am Tag normal, dass er an eine Stelle kommt, wo er nicht weiter weiß. Sei es weil ihm das Vorgehen nicht einfällt, sei es weil ihm die notwendigen Befehle fehlen. In einem Forum nachzufragen ist eine Möglichkeit, aber es ist essenziell, dass man auf Basis einer Idee oder einiger Stichworte eine Lösung zusammensuchen kann.
Genau diese Situation haben wir hier. Dir wurden wirklich _sowas von exakt_ die Stichworte genannt, die dich an die richtige Stelle führen. Im Handbuch steht es genau erklärt. Ich werde dir jetzt sogar noch das Googeln abnehmen, aber du musst in der Lage sein die Ablauflogik deines eigenen Codes zu verstehen und zu sehen, wo diese Teile hingehören!
String-Operator: Konkatenation
Dateisystemfunktion: Datei existiert
Ich sage es immer wieder. Schreibe keinen Code, nimm dir ein Blatt Papier, schreibe dir auf was DU tun müsstest, um ans Ziel zu kommen. Du wirst ein Muster finden! Das ist dein Implementierungsmuster. Das Vorgehen findest du albern? Ich habe es in den letzten Wochen etliche Male angewendet, als ich eine Datenbanktabelle voller unsortierter Einträge vor mir hatte, bei der ich als Mensch weiß, welcher Satz aktuell ist, es der Maschine aber nicht beibringen konnte. Ich habe mir also Stück für Stück vor Augen geführt, wo ich zuerst hinschaue, welches Kriterium ich anlege und wie ich dann weiter mache.
MfG
Rouven
Hi,
DAS HILFT MIR NICHT VERDAMMT!!!
Rumgeschreie hilft Dir noch viel weniger.
Ich brauche hier keinen Rat wo ich nachschauen solll, sondern jemanden, der es mir anhand eines Beispieles erklärt.
Wir sind hier aber nunmal nicht bei "Wünsch Dir was", sondern bei SELFHTML. Es ist quasi Sinn und Zweck dieses Forums, Hilfe zur Selbsthilfe (SELF halt) zu geben. Also hör einfach mal auf, so bockig zu sein und schau im Manual unter den genannten Stichworten nach. Dort sind wirklich überall die von Dir gewünschten Beispiele mit Erklärungen angegeben. Je mehr Du Dir selbst erarbeitest (gerne mit Hilfe von Links und Tipps, die Du hier erhältst und erhalten hast), um so steiler ist die Lernkurve. Hättest Du die Zeit und Energie, die Du in Rumgemotze und die - ich nenn es mal Beurteilung - von jemandem verschwendet hast, mal darin investiert, über die Antworten wirklich nachzudenken und Dir mit den Tipps die benötigten Grundlagen anzueignen, hättest Du Dein Problem längst gelöst (und zwar selbst!).
Warum ist das so schwer zu begreifen?
Warum ist es so schwer zu begreifen, dass gerade das Vorkauen eines "Beispiels anhand Deines Codes" nichts anderes ist, als die Lösung auf dem Silbertablett zu präsentieren? Was hättest Du dann gelernt? Mit dem Manual zu arbeiten jedenfalls nicht. Und wenn das Script "noch viel länger" werden soll, wirst Du da wohl nicht drum herumkommen.
LG
Ciao!
Vorweg: Ich kann Dir nichts schreiben, was ChrisB nicht auch schon geschrieben hat. Aber manchmal hilft es ja, wenn jemand anders das bereits Geschriebene nochmal in anderen Worten ausdrückt.
Allerdings kommt jedes Mal beim Laden der Seite eine neue Siegerliste. Nun möchte ich aber, dass nur ein einziges mal gelost wird und das Ergebnis dann feststeht.
Wie bekomme ich das hin?
Hat da vielleicht einer eine Idee? Ich bin im Moment vollkommen ratlos.
Du mußt als erstes abfragen, ob schon eine Siegerliste da ist, z.B. indem Du überprüfst, ob die Datei existiert (da gibt's 'ne Funktion für, file_exists oder so ähnlich - ich weiß sowas auch nie auswendig, sondern schaue immer im Online-Handbuch). Wenn eine da ist, liest Du sie aus, sonst machst Du eine neue (Dein bisheriger Code).
Hier mal ein Teil des Codes.
$zufall = array();
$abfrage = "SELECT Pferd FROM TWSP WHERE Prufung = 'T1P1'";
$result = mysql_query($abfrage);
while ($row = mysql_fetch_assoc($result)){
foreach ($row AS $teilnehmer){
$zufall[] = $teilnehmer;
}
}
if (($datum>=$turnierdatum) AND ($zeit>=$turnierzeit)){
shuffle($zufall);
foreach ($zufall AS $teilnehmer){
echo "$teilnehmer<br>";
}
}
>
> Zweites Problem ist, dass ich das feststehende Ergebnis aus der Siegerliste ebenfalls automatisch in eine Textdatei schreiben möchte. Allerdings wird, wenn ich das $teilnehmer versuche in besagte Datei zu schreiben anstatt aller Einträge nur einer geschrieben. Wie kann ich das ändern?
>
> ~~~php
> $datei = fopen("addition.txt","w");
>
> fputs($datei, $teilnehmer);
> fclose($datei);
>
$teilnehmer ist immer nur einer. Du gehst aber bereits in einer Schleife über alle in $zufall und baust daraus die Ausgabe zusammen (mit echo). Völlig analog kannst Du sie in einen String schreiben (Operator .=, Ergebnisvariable vorher mit dem leeren String initialisieren). Diesen String schreibst Du dann in die Datei. (Alternativ könntest Du die Datei auch vor der Schleife öffnen, in der Schleife jeden $teilnehmer direkt reinschreiben und danach die Datei wieder schließen. Weiß nicht, was in PHP performanter ist.)
Viele Grüße vom Længlich
echo $begrüßung;
Diesen String schreibst Du dann in die Datei. (Alternativ könntest Du die Datei auch vor der Schleife öffnen, in der Schleife jeden $teilnehmer direkt reinschreiben und danach die Datei wieder schließen. Weiß nicht, was in PHP performanter ist.)
Wenn es da einen Unterschied gibt, wird er dermaßen minimal sein, dass er nicht ins Gewicht fällt.
echo "$verabschiedung $name";
Guten Tag,
Wie bekomme ich das hin?
ChrisB hat zwar alles relevante gesagt, aber ich möchte dir trotzdem noch mal ein paar Hinweise geben:
$zufall = array();
$abfrage = "SELECT Pferd FROM TWSP WHERE Prufung = 'T1P1'";
$result = mysql_query($abfrage);
while ($row = mysql_fetch_assoc($result)){
foreach ($row AS $teilnehmer){
$zufall[] = $teilnehmer;
}
}
if (($datum>=$turnierdatum) AND ($zeit>=$turnierzeit)){
shuffle($zufall);
foreach ($zufall AS $teilnehmer){
echo "$teilnehmer<br>";
}
}
Nun hast du in $teilnehmer einen einzige Wert stehen. Du willst ja aber das randomisierte Ergebnis speichern, das findest du im Array $zufall.
Nach der Ausgabe der einzelnen Ergebnisse (foreach, $teilnehmer) speicherst du den Inhalt von $zufall in einer Textdatei. Das kannst du mit [file_put_contents()](http://de.php.net/manual/en/function.file-put-contents.php) sehr bequem. Du kannst die Daten [serialisieren](http://de2.php.net/serialize). Später dann kannst du die Daten mit [file_get_contents()](http://de3.php.net/file_get_contents) wieder einlesen und wieder [deserialisieren](http://de2.php.net/unserialize). Die Verarbeitung erfolgt dann analog zur Ausgabe in der foreach-Schleife.
> Zweites Problem ist, dass ich das feststehende Ergebnis aus der Siegerliste ebenfalls automatisch in eine Textdatei schreiben möchte. Allerdings wird, wenn ich das $teilnehmer versuche in besagte Datei zu schreiben anstatt aller Einträge nur einer geschrieben. Wie kann ich das ändern?
> ~~~php
> $datei = fopen("addition.txt","w");
>
> fputs($datei, $teilnehmer);
> fclose($datei);
>
GleichesProblemtritt auch auf, wenn ich folgenden Code verwende:
$datei = fopen("addition.txt","w");
$inhalt = $teilnehmer;fputs($datei, $inhalt);
fclose($datei);
Prinzipiell ist der Code korrekt (auch wenn einige Prüfungen fehlen), aber du speicherst mit $teilnehmer nur den letzten Wert im Array ab, da in der foreach-Schleife diese Variable jeweils mit dem letzten Wert von $zufall belegt wird - der letzte bleibt übrig.
Aber ich möchte noch mal auf deine Antworten gegenüber ChrisB eingehen:
Das hiesige Forum ist keine Auskunftsstelle, sondern eine Diskussionsplattform, auch wenn IMO eben diese Diskussionen deutlich unterrepräsentiert sind und Supportanfragen überwiegen. Deine Belehrungen, wie sich die Supportroboter hier gefälligst zu benehmen und zu funktionieren haben, lassen dich als unverschämten Kunden erscheinen. Überlege dir bitte selbst, ob du so einen Eindruck erwecken möchtest. Vielleicht helfen dir auch die [Tipps für Fragende](http://forum.de.selfhtml.org/hilfe/charta.htm#tipps-fuer-fragende).
Gruß
Christoph Jeschke
--
Zend Certified Engineer
Certified Urchin Admin