PHP Zufallsgenerator Ergebnis abspeichern

Hallo Zusammen,

Ich habe mit PHP eine Array mit 10 Datensätze,sind alles Wörter.
$zufall = array();

Per Zufall werden immer 2 Wörter ausgegeben
$zufall[array_rand($zufall ,1)] ;

Durch klick auf den Button wird die Seite neu aufgerufen und es werden 2 neue Wörter generiert.

<?php echo $zufall[array_rand($zufall ,1)].' ';
echo $zufall[array\_rand($zufall,1)]; ?\> Meine FRAGE: wie stelle ich es an das ich durch Klick auf einen seperaten Button die Ausgabe in einer Tabelle bzw allgemein speichert. Vielen Dank im voraus

Hallo,

zuerst hoffe ich ist dir klar, dass du mit

echo $zufall[array_rand($zufall ,1)].’ ';
echo $zufall[array_rand($zufall,1)];

auch zwei mal den gleichen Eintrag erwischen kannst.

Du solltest, wenn nicht gewünscht schreiben:

$i=array_rand($zufall ,2);

echo $zufall[$i[0]].’ ';
echo $zufall[$i[1]];

Dann zu deiner Frage, die ich nicht ganz verstehe:

Ausgabe in einer Tabelle:

echo ‚‘.$zufall[$i[0]].’.$zufall[$i[1]].’’;

Willst du zwei Buttons mit unterschiedlichen Werten machen, so mach die in dein Form und mit dem Rückgabenwert (Value) kannst du mit der Variablen $_POST nachsehen, was gedrückt wurde, und dann eben entsprechend das Programm verzweigen.

Speichern kannst du das Ergebnis in einer Datei oder in einer Session (letzlich auch ein Datei) oder als Cookie auf dem PC des Nutzers.

Datei: file_put_contents (,$zufall[$i[0]].$zufall[$i[1]]);

Es kommt ganz drauf an, was du machen willst.

Wenn du es noch benauer beschreiben kannst, kann ich dir auch besser Auskunft geben.

Grüße
Tom

Super vielen dank erstmal , ich werde mich morgen damit weiter beschäftigen und dir noch einmal Rückmeldung geben.

Also was ich genau damit erreichen will ist das immer
verschiedene Wörter ausgegeben werden wie zum Beispiel „Nudeln“ „Tiramisu“ und durch klick auf den Button soll das Gericht gespeichert werden in einer Tabelle.(Optional mit Datum).

Es sollen 2 Buttons und eine Tabelle
dargestellt werden

1.Button - einmal für „neues Gericht generieren“,da wird die Seite einfach neu aufgerufen.

2.Button - Das aktuelle Gericht wird in einer Tabelle gespeichert.(Optional mit Datum/Uhrzeit)

Problematik:

  • Die Ausgabe von der Zufallsarray zu speichern in einer Tabelle

Kann gerne den Teilcode posten wenns nötig ist, nochmals vielen Dank

hab vergessen zu erwähnen das durch den Klick des Buttons quasi ein Datensatz in die Tabelle eingefügt werden soll.Damit man auf der Webseite quasi eine Übersicht hat über die letzten Besuche und Gerichte.

Nochmals Danke für deine Mühe

Hallo,

hier ist beschrieben, wie das grundsätzlich geht.

http://www.fastix.org/PHP-+Speichern+und+Lesen+von+D…

viele Grüße
Jens

Hallo,

wenn ich das so richtig verstanden habe, wirst Du wohl den Umweg über einen SQL Insert gehen müßen.

Versuch mal folgendes nachdem Du eine SQL-Tabelle mit id (INT, 11, PRIMARY_KEY, AUTO_INKREMENT) und text (VARCHAR, 255) angelegt hast:

<?php $wort_1 = $zufall[array_rand($zufall,1)];
$wort\_1 = $zufall[array\_rand($zufall,1)]; mysql\_query("INSERT INTO deine\_tabelle (id,text) VALUES ('".$wort\_1."','".$wort\_2."')"); ?\> Lass das ganze beim Klick auf einen Button ausführen. Die Variablen $wort\_1 und $wort\_2 brauchst Du nicht zu leeren, da sie bei jedem Umlauf überschrieben werden. Ich habe das natürlich nicht getestet, aber so oder ähnlich würde ich das händeln. Gruß Mad

Hallo,

mein erster Post enthält leider einen Fehler.
Mach es so:

id (INT, 11, PRIMARY_KEY, AUTO_INKREMENT), text1 (VARCHAR, 255), text2 (VARCHAR, 255) angelegt hast:

<?php $wort_1 = $zufall[array_rand($zufall,1)];
$wort\_1 = $zufall[array\_rand($zufall,1)]; mysql\_query("INSERT INTO deine\_tabelle (id,text1,text2) VALUES ('new','".$wort\_1."','".$wort\_2."')"); ?\> Mad

Hallo,

ok, jetzt verstehe ich mehr, worum es geht.

Das PHP-Script könnte etwa so aufgebaut sein:

Zuerst mal prüfen, ob die Seite ohne $_POST aufgerufen wurde oder nicht.

Wenn mit Parameteren, dass prüfen, ob durch Button 1 oder Button 2.

Fall „ohne Buton“: Startinformationen ausgeben

Fall „Button 1“: Werte zufällig gegerieren, anzeigen und speichern

Fall „Button 2“: Werte auslesen und darstellen

Zum Speichern am besten ein serialisiertes Array verwenden oder wenn es viel wird, ein SQL-Datenbank.

Ich hab mal ein lauffähiges Beispiel (essen.php) gemacht:

<?php $essen=array();<br />
 $essen[]='Nudel';
 $essen[]='Kartoffel';
 $essen[]='Suppe';
 $essen[]='Wurst';
 $essen[]='Käse';
 $essen[]='Kraut';
 $essen[]='Äpfel';
 $essen[]='Birne';
 $essen[]='Fleisch';
 $essen[]='Fisch';

 $file='essen.txt';

 echo'
* * *
';

 if (array\_key\_exists ('action',$\_POST)){


 switch ($\_POST['action']){
 case 'Neu':
 $button=1;
 break;

 case 'Zeigen':
 $button=2;
 break;

 default:
 $button=0;
 }

 }else{
 $button=0;
 }


 switch ($button){
 case 0:
 echo 'den Zufall starten oder die Liste zeigen';
 break;

 case 1:
 echo ' **die neuen Zutaten**
';
 $nim=array\_rand($essen ,2);

 $text=$essen[$nim[0]].' + '.$essen[$nim[1]];
 echo $text;

 //Speichere
 file\_put\_contents ($file,date('Y-m-d H:i:s').' '.$text."\n",FILE\_APPEND);
 break;

 case 2:
 echo ' **die Liste**
';
 $fh=fopen($file,'r');
 if ($fh){
 while (($text=fgets($fh,1024))!==FALSE){
 echo $text.'
';
 }
 }
 break;

 }

 echo ' 

';
echo ’
';
echo ‚‘;
echo ‚‘;

?>

Grüße
Tom

Hallo Taner_1988,
Deine Frage sprengt die Möglichkeiten von werweisswas, da wäre eine komplette Einführung in den Umgang mit Datenbanken mit PHP nötig.
Aber sowas gibt es ja in guter Qualität bereits im www, z.B. unter
http://www.php-einfach.de/einf_mysql.php
Wenn Du nach diesen Seiten noch spezifische Fragen hast, kannst Du gerne noch einmal fragen.

Viel Erfolg und Grüße
Christian

Hallo Zusammen,erstmal super Vielen Dank , ihr wart alle sehr hilfreich!!!
Habe jetzt eine Datenbank erstellt über phpmyadmin und einen Button erzeugt der den Befehl ausführen soll , ich poste mal den ganzen Code vielleicht findet ihr den Fehler.

Verbindung ist soweit ich das erkenne aufgebaut aber speichern tut er es trotzdessen nicht in der Datenbank.
Datenbankerstellung in phpmyadmin sah so aus:
Create Table auswertung (
ID int(10) PRIMARY KEY auto_increment,
text1 varchar(255),
text2(varchar255));

Habe eine config datei erstellt um eine Verbindung aufzubauen
konfiguration.php
Das ist der Quelltext.

<?php error_reporting(E_ALL);
// Zum Aufbau der Verbindung zur Datenbank define ( 'MYSQL\_HOST', 'localhost' ); define ( 'MYSQL\_BENUTZER', 'userXXXXX' ); define ( 'MYSQL\_KENNWORT', 'pwXXXXX' ); define ( 'MYSQL\_DATENBANK', 'dbXXXX' ); $db\_link = mysql\_connect (MYSQL\_HOST, MYSQL\_BENUTZER, MYSQL\_KENNWORT); if ( $db\_link ) { echo 'Verbindung erfolgreich: '; echo $db\_link; } else { die('keine Verbindung möglich: ' . mysql\_error()); } mysql\_close($db\_link ); ?\> So der komplette Code von meiner Hauptseite tc.php mit den eingefügten sql befehlen <?php $zufall = array();
$zufall[] = "Weisse Traube"; // Array mit Daten füllen $zufall[] = " Wassermelone\>"; $zufall[] = "Honigmelone"; $zufall[] = "apfel\>"; $zufall[] = "Nudeln"; $zufall[] = "Fisch"; $zufall[] = "Eis"; $zufall[] = "Zitronen"; $zufall[] = "Kirschen"; $i=array\_rand($zufall ,2); echo $zufall[$i[0]].' ';?\> <?php echo $zufall[$i[1]]; ?><?php include ("konfiguration.php");

$Tabak=‚ueberschrift1‘;
$Datum=„Datum“;
$text1=’’;
$text2=’’;

require_once (‚konfiguration.php‘);
$db_link = mysql_connect ( MYSQL_HOST,
MYSQL_BENUTZER,
MYSQL_KENNWORT );

$db_sel = mysql_select_db( MYSQL_DATENBANK )
or die(„Auswahl der Datenbank fehlgeschlagen“);

$sql = „SELECT * FROM auswertung“;

$db_erg = mysql_query( $sql );
if ( ! $db_erg )
{
die('Ungültige Abfrage: ’ . mysql_error());
}

echo ’

';
while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC))
{
echo „“.$ueberschrift1."";
echo „“.$Datum."";

echo „“. $zeile[‚text1‘] ."". $zeile[‚text2‘] . „“;
}
echo „“;
mysql_free_result( $db_erg );
?>

<?php $text1 = $zufall[array_rand($zufall,1)];
$text2 = $zufall[array\_rand($zufall,1)]; mysql\_query("INSERT INTO deine\_tabelle (id,text1,text2) VALUES ('new','".$text1."','".$text2."')"); echo '';
echo '
';
?>

Hallo super vielen Dank , läuft echt ohne Probleme habe nun nur noch das Problem das beim Speichern das nächste Gericht gespeichert wird und nicht das momentane angezeigte vom „Neuen Gericht“.
Mit einer Array hat es bei mir nicht funktioniert.

Vielen Dank für deine Hilfe und Geduld

case 3:
echo 'Speichern
';
$nim=array_rand($essen,2);

$text=$essen[$nim[0]].’ + '.$essen[$nim[1]];

//Speichere
file_put_contents ($file,date(‚Y-m-d H:i:s‘).’ '.$text."\n",FILE_APPEND);

break;

Hallo,
scheint so, dass du einen 3.Knopf für Speichern zugefügt hast. Das geht dann so nicht, es wird ja bei jedem Aufruf ein neues Gericht generiert. Du mußt beachten, dass HTTP ein zustandsloses Protokoll ist, d.h. was vorher war ist vergessen. Jeder einzelne Seitenaufruf ist unwissend von den vorherigen oder nächsten Aufruf. Du mußt die Daten, die eventuell gespeichert werden sollen, zwischenspeichern oder immer mitgeben.

Prinzipiell sind zu dem Zweck Cookies entwickelt worden, um Lokal auf dem Client-PC was abzulegen. Oder eben der Session-Mechanismus, wo nur eine ID übergeben und die Daten am Server zwischengespeichert werden.

Hier würde ich jedoch die Daten einfach in einem blinden Input hin- und herschicken, das wäre die einfachste Lösung.

Da ich den Code vom Beispiel noch am Server habe, werd ich es kurz erweitern nun nachreichen.

Grüße
Tom

Hier der Code

<?php $essen=array();<br />
 $essen[]='Nudel';
 $essen[]='Kartoffel';
 $essen[]='Suppe';
 $essen[]='Wurst';
 $essen[]='Käse';
 $essen[]='Kraut';
 $essen[]='Äpfel';
 $essen[]='Birne';
 $essen[]='Fleisch';
 $essen[]='Fisch';

 $file='essen.txt';

 echo'
* * *
';

 if (array\_key\_exists ('action',$\_POST)){

 switch ($\_POST['action']){
 case 'Neu':
 $button=1;
 break;

 case 'Zeigen':
 $button=2;
 break;

 case 'Speichern':
 $button=3;
 break;

 default:
 $button=0;
 }

 }else{
 $button=0;
 }

 switch ($button){
 case 0:
 echo 'den Zufall starten oder die Liste zeigen';
 break;

 case 1:
 echo ' **die neuen Zutaten**
';
 $nim=array\_rand($essen ,2);

 $text=$essen[$nim[0]].' + '.$essen[$nim[1]];
 echo $text;
 break;

 case 2:
 echo ' **die Liste**
';
 $fh=fopen($file,'r');
 if ($fh){
 while (($text=fgets($fh,1024))!==FALSE){
 echo $text.'
';
 }
 }
 break;

 case 3:
 $text=$\_POST['text'];
 echo ' **Gespeichert**
';
 echo $text;

 //Speichere
 file\_put\_contents ($file,date('Y-m-d H:i:s').' '.$text."\n",FILE\_APPEND);
 break;
 }

 echo ' 

';
echo ’
';
echo ‚‘;
if ($button==1) {
echo ‚‘;
echo ’
';
}
echo ‚‘;

?>

Hier nun noch die Lösung mit speichern via Array. Die Fehler, wenn die Datei noch nicht exisitiert müssen ggf. noch abgefangen werden. Es ist auch möglich, im Array ein Array mit den Elementen Datum/Gericht1/Gericht2 zu speichern, was bei der Ausgabe mehr Formatierungsmöglichkeit gäbe. Hier sind aber keine Grenznen gesetzt.

So,
viele Spass beim Programmieren
Tom

 case 2:
 echo ' **die Liste**
';

 //Zeigen
 $arr=unserialize(file\_get\_contents($file)); 
 foreach ($arr as $text){
 echo $text.'
';
 }
 break;

 case 3:
 $text=$\_POST['text'];
 echo ' **Gespeichert**
';
 echo $text;

 //Speichere
 $arr=unserialize(file\_get\_contents($file)); //Zuerst einlesen
 while (count($arr)=\>10){ //Maximal die letzten 10 Einträge
 array\_shift ($arr); //sonst vorne kürzen
 }
 $arr[]=date('Y-m-d H:i:s').' '.$text; //neuen Text zufügen
 file\_put\_contents ($file,serialize($arr));
 break;

Hallo taner,

„speichern“ ist schon sehr allgemein ausgedrückt. Du hast die Möglichkeit der kurzzeitigen Speicherung in der Session oder als Cookie. Oder dauerhaft als Daten in einer Datei oder Datenbank.
Auch gibt es die Möglichkeit etwas kurzfristig im Cache (z. B. Memcache) zu speichern.

Es gibt viel für verschiedene Anwendungsfelder. Was brauchst du davon genau?

Lg Frank