• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Problem mit Array und mysql

Status
Für weitere Antworten geschlossen.

Lenchen

Neues Mitglied
Hallo
Kann mir vielleicht einer auf die Sprünge helfen?
Es geht im speziellen um diesen Code-Teil
PHP:
<?php
$abfrage = "SELECT name FROM Spielstand";
$ergebnis = mysql_query($abfrage);
$wert=array();
while($row = mysql_fetch_object($ergebnis))
{
 array_push ($wert, $row->wert);
}
print_r($wert);
?>
Es wird durch den print_r Befehl kein Array angezeigt. Leider habe ich noch nicht so viel Erfahrung, dass ich wüsste, woran es liegt :(
Hier der gesamte code:
PHP:
<html>
 <head>
  <title>Kniffel - 3.Wurf</title>
  </head>
  <body>
<?php
If ($_POST[ch1]==true)
{
$w1=$_POST[wch1];
echo "Deine erste Zahl ist die $w1 (Aus dem letzten Wurf behalten)";
}
else
{
$w1=rand(1,6);
echo "Deine erste Zahl ist die $w1 (Neu gewürfelt)";
}
echo "<br>";
If ($_POST[ch2]==true)
{
$w2=$_POST[wch2];
echo "Deine zweite Zahl ist die $w2 (Aus dem letzten Wurf behalten)";
}
else
{
$w2=rand(1,6);
echo "Deine zweite Zahl ist die $w2 (Neu gewürfelt)";
}
echo "<br>";
If ($_POST[ch3]==true)
{
$w3=$_POST[wch3];
echo "Deine dritte Zahl ist die $w3 (Aus dem letzten Wurf behalten)";
}
else
{
$w3=rand(1,6);
echo "Deine dritte Zahl ist die $w3 (Neu gewürfelt)";
}
echo "<br>";
If ($_POST[ch4]==true)
{
$w4=$_POST[wch4];
echo "Deine vierte Zahl ist die $w4 (Aus dem letzten Wurf behalten)";
}
else
{
$w4=rand(1,6);
echo "Deine vierte Zahl ist die $w4 (Neu gewürfelt)";
}
echo "<br>";
If ($_POST[ch5]==true)
{
$w5=$_POST[wch5];
echo "Deine fünfte Zahl ist die $w5 (Aus dem letzten Wurf behalten)";
}
else
{
$w5=rand(1,6);
echo "Deine fünfte Zahl ist die $w5 (Neu gewürfelt)";
}

$verbindung = mysql_connect("localhost",
"fantasybasteln","tigerfaba")
or die ("keine Verbindung möglich.
 Benutzername oder Passwort sind falsch");
mysql_select_db("fantasybasteln")
or die ("Die Datenbank existiert nicht.");
?>

  <form action="Kniffel4.php" method="post">
   <fieldset>
Das war dein letzter Wurf,  als was möchtest du dein Ergebnis eintragen?<br>
<select name="kn" size="1">
<?php
$abfrage = "SELECT name FROM Spielstand";
$ergebnis = mysql_query($abfrage);
$wert=array();
while($row = mysql_fetch_object($ergebnis))
{
 array_push ($wert, $row->wert);
}
print_r($wert);

If ($wert[0]==0)
{
 echo "<option>1er</option>";
}

If ($wert[1]==0)
{
 echo "<option>2er</option>";
}
If ($wert[2]==0)
{
 echo "<option>3er</option>";
}
If ($wert[3]==0)
{
 echo "<option>4er</option>";
}
If ($wert[4]==0)
{
 echo "<option>5er</option>";
}
If ($wert[5]==0)
{
 echo "<option>6er</option>";
}
If ($wert[6]==0)
{
 echo "<option>3er Pasch</option>";
}
If ($wert[7]==0)
{
 echo "<option>4er Pasch</option>";
}
If ($wert[8]==0)
{
 echo "<option>Full House</option>";
}
If ($wert[9]==0)
{
 echo "<option>kleine Straße</option>";
}
If ($wert[10]==0)
{
 echo "<option>große Straße</option>";
}
If ($wert[11]==0)
{
 echo "<option>Kniffel</option>";
}
If ($wert[12]==0)
{
 echo "<option>Chance</option>";
}
?>
    </select>
    <input type="hidden" name="w1" value="<?php echo "$w1" ?>">
    <input type="hidden" name="w2" value="<?php echo "$w2" ?>">
    <input type="hidden" name="w3" value="<?php echo "$w3" ?>">
    <input type="hidden" name="w4" value="<?php echo "$w4" ?>">
    <input type="hidden" name="w5" value="<?php echo "$w5" ?>">  
    <input type="submit" name="eintragen" value="Eintragen">
   </fieldset>
  </form>

<?php
$abfrage = "SELECT id, name, wert FROM Spielstand";
$ergebnis = mysql_query($abfrage);
echo "<table>";
while($row = mysql_fetch_object($ergebnis))
   {
   echo "<tr>
          <td>$row->id</td>
          <td>$row->name</td>
          <td>$row->wert</td>
         </tr>";
   }
echo "</table>";
?>
 </body>
</html>
Wenn ihr die Seite live sehen wollt, hier ist der Link:
Kniffel
Es geht um Kniffel3, dort sollte eigentlich nur Die Einträge zur Auswahl stehen, die noch den Wert 0 haben.
DANKE
 
Werbung:
also du kannst anstadt

PHP:
array_push ($wert, $row->wert);

auch volgendes schreiben

PHP:
$wert[] = $row->name; // nicht $row->wert ;)

dann solltest du nicht mysql_fetch_bject verwenden, erstens schreibst du garnicht OO und zweitens ist fetch_row viel schneller.

also nicht

PHP:
while($row = mysql_fetch_object($ergebnis))
{
    // $row->wert
}

sondern


PHP:
while($row = mysql_fetch_row($ergebnis))
{
    // $row[0]
    // dieses sähe in meinem beispiel so aus
    $wert[] = $row[0];
}

Ps: mt_stand((double)microtime() * 100000);
und dann mt_rand() benutzen anstadt rand()
 
Puh, um ehrlich zu sein versteh ich das nicht ganz ;(
also du kannst anstadt

PHP:
array_push ($wert, $row->wert);
auch volgendes schreiben

PHP:
$wert[] = $row->name; // nicht $row->wert ;)
dann solltest du nicht mysql_fetch_bject verwenden, erstens schreibst du garnicht OO und zweitens ist fetch_row viel schneller.
warum nicht $row->wert? Meine Spalte heißt doch wert und nicht name
also nicht

PHP:
while($row = mysql_fetch_object($ergebnis))
{
    // $row->wert
}
sondern


PHP:
while($row = mysql_fetch_row($ergebnis))
{
    // $row[0]
    // dieses sähe in meinem beispiel so aus
    $wert[] = $row[0];
}
Wird mit $row[0] nicht immer nur der erste Wert in der Spalte ausgelesen?
Ps: mt_stand((double)microtime() * 100000);
und dann mt_rand() benutzen anstadt rand()
werd ich mir merken.
Tut mir leid, falls die Fragen doof sind, aber ich habe noch nie vorher mit Datenbanken gearbeitet.
 
Werbung:
"SELECT name FROM Spielstand" -> der wert "name" wird aus der tabelle "Spielstand" ausgelesen also hast du dann den key "name" und nicht "wert" außer bei fetch_row dort hast du eine 0 weil es der erste kei ist den du angegeben hast zum auslesen, bei "SELECT id,name FROM Spielstand" und fetch_row währe in $row[0] die id und in $row[1] der name.
 
Ok vielen Dank, dann habe ich schon mal einen Fehler, ich wollte wert und nicht name auslesen,:shock: danke, dann probier ichs gleich nochmal:mrgreen:
Edit: Danke, es funktioniert!!
 
... und zweitens ist fetch_row viel schneller.

Grundsätzlich ist es richtig das fetch_row schneller ist, allerdings ist der Geschwindigkeitsunterschied marginal und fällt bei kleinen Projekten nicht wirklich in's Gewicht. Dieses "viel schneller" suggeriert einen falschen Eindruck, da es hier lediglich um Millisekunden geht.


Ps: mt_stand((double)microtime() * 100000);
und dann mt_rand() benutzen anstadt rand()

Ab PHP 4.2.0 ist das nicht mehr erforderlich, da beim Aufruf von rand() automatisch ein Zahlenpool generiert wird.
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben