Lottozahlen einzeln ausgeben

Anacondi

Erfahrenes Mitglied
Hallo an alle. Ich habe das folgende script aus einem Tutorial von hier. Meine frage dazu:
Ist es möglich, die zahlen einzeln auszugeben, so das ich sie in die datenbank übernehmen kan, die folgender massen aufgebaut ist zahl1, zahl2, zahl3 u.s.w. bis zahl 6

PHP:
<? 
// die folgende Zeile erzeugt einen internen Startwert für den Zufallsgenerator  
srand ((double)microtime()*1000000); 

// die Schleife wird sooft durchlaufen wie $i kleiner 7 ist,  
// da wir ja 6 Zahlen brauchen 
for($i=1; $i<7; $i++){ 
   $val = rand(1,49); 
   // $val ist eine zufällige Zahl zwischen 1 und 49 

   (!strpos(" ".$vals, "$val")) ? $vals .= $val." " : $i--; 
 // Ist $val noch nicht in $vals enthalten hänge es zzgl. Leerzeichen an 
 // wenn doch verringere $i um 1 damit am Ende 6 Zahlen rauskommen 
} 

$arrayLotto = explode(" ", trim($vals)); 
// zum Sortieren verwandeln wir die Zahlen am Besten in ein Array 
// trim() entfernt das hintere Leerzeichen 

sort($arrayLotto); 
// jetzt wird sortiert 

$Lottozahlen = implode(", ", $arrayLotto); 
// und das Array wieder in einen String zurück verwandelt 
// wobei die Zahlen mit Komma und Leerzeichen getrennt werden 

echo $Lottozahlen; 
?>
ach ja, ich bekomme auch eine fehlermeldung: Notice: Undefined variable: vals in C:\xampp\htdocs\stripper\start\Edit9.php on line 11
 
Hi,

allso ich bekomme keinen Fehler wenn ich das Script so übernehme. Zum anderen Prob:

Du kannst die Zahlen auch einfach so in die Db speichern. Danach holst du die Zahlen aus der Db, machst ein array draus und explodest bei , Dann haste jede Zahl einzelnd im Array.

Aber ich kann nur erahnen was du vorhast.

http://de3.php.net/manual/de/function.explode.php

Ansonsten kannste es auch so machen. So speichert es dann für jedes Feld in die DB:
PHP:
<?php

// die folgende Zeile erzeugt einen internen Startwert für den Zufallsgenerator  
srand ((double)microtime()*1000000); 

// die Schleife wird sooft durchlaufen wie $i kleiner 7 ist,  
// da wir ja 6 Zahlen brauchen 
for($i=1; $i<7; $i++){ 
   $val = rand(1,49); 
   // $val ist eine zufällige Zahl zwischen 1 und 49 

   (!strpos(" ".$vals, "$val")) ? $vals .= $val." " : $i--; 
 // Ist $val noch nicht in $vals enthalten hänge es zzgl. Leerzeichen an 
 // wenn doch verringere $i um 1 damit am Ende 6 Zahlen rauskommen 
} 

$arrayLotto = explode(" ", trim($vals)); 
// zum Sortieren verwandeln wir die Zahlen am Besten in ein Array 
// trim() entfernt das hintere Leerzeichen 

sort($arrayLotto); 
// jetzt wird sortiert 

for ($i = 0; $i <= 5; $i++){	
	$sql = "INSERT INTO blabla SET feld$i='".$arrayLotto[$i]."'";  
	mysql_query($sql);
} 

?>

mfg
 
Zuletzt bearbeitet:
Danke für die hilfe. Bei mir kommt noch immer diese fehlermeldung. ich sehe auch nicht, das die variable $vals irgendwo declariert wird.
 
PHP:
 (!strpos(" ".$vals, "$val")) ? $vals .= $val." " : $i--;

Ich versteh ehrlich gesagt nicht weshalb da bei dir ein Fehler kommt. Auf meinem Webserver, sowie lokal bei xampp bekomme ich keine Fehler. Mal die Erklärung dazu.

Das ist eigentlich nur eine "vereinfachte" if/else schreibweise, daher bin ich da überfragt weshalb das bei dir nicht klappt.

Wenn vals noch nicht vorhanden hänge leerzeichen an, Wenn doch dann verringere um 1. Allso typisches if / else

mfg
 
Hi,
allso ich bekomme keinen Fehler wenn ich das Script so übernehme. Zum anderen Prob:

Es ist kein Fehler sondern eine Notiz, und diese wirst du vermutlich ausgeblendet haben.

PHP:
<?php
// die folgende Zeile erzeugt einen internen Startwert für den Zufallsgenerator  
srand ((double)microtime()*1000000); 

$Lottozahlen = array();

while (count($Lottozahlen)<6) {
  $zahl = rand(1,49);
  if (!in_array($zahl, $Lottozahlen)) $Lottozahlen[]=$zahl;
}

sort($Lottozahlen); 

echo implode(' ', $Lottozahlen);

// sonstiger Code
mysql_query('
  INSERT INTO `Tabelle`
 (`zahl1`,`zahl2`,`zahl3`,`zahl4`,`zahl5`,`zahl6`)
  VALUES
 ('.implode(',',$Lottozahlen).')
');
?>
 
Die Fehlermeldung ist vollkommen richtig, $vals wird nämlich nicht initialisiert.

PHP:
<?php

// die folgende Zeile erzeugt einen internen Startwert für den Zufallsgenerator  
srand ((double)microtime()*1000000); 

$vals = '';

// die Schleife wird sooft durchlaufen wie $i kleiner 7 ist,  
// da wir ja 6 Zahlen brauchen 
for($i=1; $i<7; $i++){ 
   $val = rand(1,49); 
   // $val ist eine zufällige Zahl zwischen 1 und 49 

   (!strpos(" ".$vals, "$val")) ? $vals .= $val." " : $i--; 
 // Ist $val noch nicht in $vals enthalten hänge es zzgl. Leerzeichen an 
 // wenn doch verringere $i um 1 damit am Ende 6 Zahlen rauskommen 
} 

$arrayLotto = explode(" ", trim($vals)); 
// zum Sortieren verwandeln wir die Zahlen am Besten in ein Array 
// trim() entfernt das hintere Leerzeichen 

sort($arrayLotto); 
// jetzt wird sortiert 

for ($i = 0; $i <= 5; $i++){    
    $sql = "INSERT INTO blabla SET feld$i='".$arrayLotto[$i]."'";  
    mysql_query($sql);
} 

?>
 
Ich habe das ganze jetzt noch umgeschrieben, da ja der PC auch noch zufällige Lottozahlen erzeugen soll und diese dann in die tabelle lotto_pc eintragen soll.
aber... wo ist hier mein Denkfehler: bei echo zeigt er mir die 6 Zahlen an, trägt sie aber nicht in die datenbank ein.
PHP:
<?php 
// die folgende Zeile erzeugt einen internen Startwert für den Zufallsgenerator   
srand ((double)microtime()*1000000);  

$Lottozahlen = array(); 

while (count($Lottozahlen)<6) { 
  $zahl = rand(1,49); 
  if (!in_array($zahl, $Lottozahlen)) $Lottozahlen[]=$zahl; 
} 

sort($Lottozahlen);  

echo implode(' ', $Lottozahlen); 

// sonstiger Code 
$inserts = '';
for($i=0; $i < 6; $i++)
{
  $inserts .= ($i == 0?'':',') . (int)$Lottozahlen[$i];
}
 
$query = "INSERT INTO lotto_pc (`zahl1`, `zahl2`, `zahl3`, `zahl4`, `zahl5`, `zahl6) VALUES ($inserts)";
?>
 
Hi,

mach mal ein "echo $query;" und schau mal ob die Abfrage so in Ordnung ist. Falls du den Fehler nicht findest, dann poste die Ausgabe bitte hier.

Gruß
BK
 
7 11 17 23 40 41
INSERT INTO lotto_pc (`zahl1`, `zahl2`, `zahl3`, `zahl4`, `zahl5`, `zahl6') VALUES (7,11,17,23,40,41)

ich kann hier nichts falsches erkennen
die tabelle lotto_pc existiert und auch die struktur darin, also zahl1,zahl2 u.s.w.
 
Hi,

füge bitte ein "echo mysql_error()" nachdem du die query abfeuerst ein. Das liefert dir die Fehlermeldung des SQL-Servers.

Gruß
BK
 
Zurück