Bestimmte Spalte in DB ändern

Typs

Mitglied
Guten Tag alle zusammen.

Ich habe eine Frage und konnte unter der Suchfunktion hier leider nichts finden das mein Problem beschreibt, deswegen musste ich ein neues Thema eröffnen.

Ich bin gerade dabei eine Internetseite per PHP und MYSQL zu realisieren. Hauptfeature soll ein Transfermarkt sein. Die User sehen eine Tabelle mit vielen Spielern und können dann auf ein Kaufbutton klicken. Dieser Klick vergleicht dann den Marktwert des Spielers und das Budget des Users (Man darf keine Schulden machen können). Falls der User das nötige Geld besitzt, ändert sich das Team des Spielers in der Datenbank. Per while-schleife gebe ich die Tabelle aus in denen sich die Spieler befinden. Nun weiss ich leider nicht, wie ich einen einzelnen Spieler ansprechen kann, also wie ich nur diesen einen Spieler kaufen kann denn es gibt einen Haken:
PHP:
//Das soll passieren wenn man auf Kaufen klickt!
$aendern = "UPDATE spieler Set `Mannschaft `= '$name' WHERE `Name `LIKE '?'";

Die Fragezeichen kann ich leider nicht ersetzen da ich keine Lösung gefunden habe da was einzutragen.

Hier nochmal der Komplette Code:

Transfermarkt.php
PHP:
<?php
//Nur für Registrierte User
  if(empty($_SESSION["name"]))
  {
  echo "<br><center>Sie müssen sich erst einloggen!";
  exit;
  } 
?>
<?php
//Aufbau zur Datenbank
  include "connect.php";
  
//Tabelle die mit der Datenbank gefüllt wird automatisch...
  $abfrage = "SELECT * FROM spieler";
  $ergebnis = mysql_query($abfrage);
  echo "<table align='center' style='border:1px solid;' rules='groups'>";
  echo "<thead>";
  echo "<tr><td width='100'><b>Name</b></td><td width='75'><b>Position</b></td><td width='50'><b>Alter</b></td><td width='70'><b>Nation</b></td><td width='100'><b>Marktwert</b></td><td width='150'><b>Mannschaft</b></td><td></td></tr>";
  echo "</thead>";
  echo "<tbody>";
  while($row = mysql_fetch_object($ergebnis))
  {
  echo "<tr>";
  echo "<td>";
  echo "$row->Name";
  echo "</td>";
  echo "<td>";
  echo "$row->Position";
  echo "</td>";
  echo "<td>";
  echo "$row->Alter";
  echo "</td>";
  echo "<td>";
  echo "$row->Nation";
  echo "</td>";
  echo "<td>";
  echo "$row->Marktwert";
  echo "</td>";
  echo "<td>";
  echo "$row->Mannschaft";
  echo "</td>";
  echo "<td><form action='index.php?seite=buy' method='post'><input type='submit' name='$row->Name' value='Kaufen'></form></td>";
  echo "</tr>";
  }
  echo "</tbody>";
  echo "</table>";
?>

Kaufen.php:
PHP:
<?php
//Nur für Registrierte User
  if(empty($_SESSION["name"]))
  {
  echo "<br><center>Sie müssen sich erst einloggen!";
  exit;
  } 
?>
<?php
//Aufbau zur Datenbank
  include "connect.php";
  $name = $_SESSION['name'];
  if(isset($_POST))
  {
    $aendern = "UPDATE spieler Set
    Mannschaft = '$name'
    WHERE Name LIKE '?'";
    $update = mysql_query($aendern);
    if($update = true)
    {
    echo "Sie haben den Spieler gekauft!";
    }
    else
    {
    echo "Da ist was schief gelaufen";
    }
  }
?>

Ich wäre euch allen shr dankbar für gute Tipps...
 
Ich würde es mal so probieren, vielleicht klappt es ja.
PHP:
$aendern = "UPDATE spieler Set
    Mannschaft = '".$name."'
    WHERE Name = '".$_POST['spielername']."'";
    $update = mysql_query($aendern);
PHP:
echo '<td><form action="index.php?seite=buy" method="post"><input type="hidden" name="spielername" value="'.$row->Name.'" /><input type="submit" name="submit" value="Kaufen"></form></td>';
PS: Es ist egal wie du die Anführungszeichen setzt, ist nur mein Programmierstil so zu arbeiten ;)
 
Ich bin es nochmal...

habe nun die Überprüfung des Kontostands mit eingefügt aber irgentwie funktioniert der Code nicht richtig, obwohl er sich für mich sehr logisch anhört, vielleicht könnt Ihr mir ja helfen..hier der Code:

buy.php
PHP:
<?php
  //prüft ob User online ist
  if(empty($_SESSION["name"]))
  {
  echo "<br><center>Sie müssen sich erst einloggen!";
  exit;
  } 
?>
<?php
  //Verbindung zur Datenbank aufbauen
  include "connect.php";
  
  $name = $_SESSION['name'];
  
  //Wenn Kaufen gedrückt wird
  if(isset($_POST['submit']))
  {
    //Zugriff auf Konto des Users
    $pruefe = "SELECT konto FROM user WHERE name LIKE '".$name."'";
    $sql = mysql_query($pruefe);
    $geld = $_POST['wert'];
    
    //Wenn Konto größer ist als Marktwert, dann
    if($pruefe>$geld)
    {
    
    //Team des Spielers ändern    
    $aendern = "UPDATE spieler Set
    Mannschaft = '".$name."'
    WHERE Name = '".$_POST['spielername']."'";
    $update = mysql_query($aendern);
    
    //Neuer Kontostand = Kontostand - Marktwert
    $neukonto = $pruefe - $geld;
    
    //Neuer Kontostand wird in DB gespeichert
    $neu = "UPDATE user Set
    konto = '".$neukonto."'
    WHERE name = '".$name."'";
    $update2 = mysql_query($neu);
    
    //Wenn Team und Kontostand geupdated worden sind, dann
    if($update = true && $update2 = true)
    {
    echo "<center>Sie haben den Spieler gekauft!";
    }
    else
    {
    echo "<center>Da ist was schief gelaufen";
    }
    }
    else
    {
    echo "<center>Sie haben nicht genug Geld um diesen Spieler zu kaufen";
    }
  }
?>

transfermarkt.php
PHP:
<?php
  if(empty($_SESSION["name"]))
  {
  echo "<br><center>Sie müssen sich erst einloggen!";
  exit;
  } 
?>
<?php
  include "connect.php";
  
  $abfrage = "SELECT * FROM spieler";
  $ergebnis = mysql_query($abfrage);
  echo "<table align='center' style='border:1px solid;' rules='groups'>";
  echo "<thead>";
  echo "<tr><td width='100'><b>Name</b></td><td width='75'><b>Position</b></td><td width='50'><b>Alter</b></td><td width='70'><b>Nation</b></td><td width='100'><b>Marktwert</b></td><td width='150'><b>Mannschaft</b></td><td></td></tr>";
  echo "</thead>";
  echo "<tbody>";
  while($row = mysql_fetch_object($ergebnis))
  {
  echo "<tr>";
  echo "<td>";
  echo "$row->Name";
  echo "</td>";
  echo "<td>";
  echo "$row->Position";
  echo "</td>";
  echo "<td>";
  echo "$row->Alter";
  echo "</td>";
  echo "<td>";
  echo "$row->Nation";
  echo "</td>";
  echo "<td>";
  echo "$row->Marktwert";
  echo "</td>";
  echo "<td>";
  echo "$row->Mannschaft";
  echo "</td>";
  echo '<td><form action="index.php?seite=buy" method="post"><input type="hidden" name="wert" value="'.$row->Marktwert.'" /><input type="hidden" name="spielername" value="'.$row->Name.'" /><input type="submit" name="submit" value="Kaufen"></form></td>';  
  echo "</tr>";
  }
  echo "</tbody>";
  echo "</table>";
?>
 
Zuletzt bearbeitet:
PHP:
<?php
  //prüft ob User online ist
  if(empty($_SESSION["name"]))
  {
  echo "<br><center>Sie müssen sich erst einloggen!";
  exit;
  } 
?>
<?php
  //Verbindung zur Datenbank aufbauen
  include "connect.php";
  
  $name = $_SESSION['name'];
  
  //Wenn Kaufen gedrückt wird
  if(isset($_POST['submit']))
  {
    //Zugriff auf Konto des Users
    $pruefe = "SELECT konto FROM user WHERE name LIKE '".$name."'";
    $sql = mysql_query($pruefe);
    $pruefe = mysql_fetch_object($sql);
    $pruefe = $pruefe->konto;
    $geld = $_POST['wert'];
    
    //Wenn Konto größer ist als Marktwert, dann
    if($pruefe>$geld)
    {
    
    //Team des Spielers ändern    
    $aendern = "UPDATE spieler Set
    Mannschaft = '".$name."'
    WHERE Name = '".$_POST['spielername']."'";
    $update = mysql_query($aendern);
    
    //Neuer Kontostand = Kontostand - Marktwert
    $neukonto = $pruefe - $geld;
    
    //Neuer Kontostand wird in DB gespeichert
    $neu = "UPDATE user Set
    konto = '".$neukonto."'
    WHERE name = '".$name."'";
    $update2 = mysql_query($neu);
    
    //Wenn Team und Kontostand geupdated worden sind, dann
    if($update = true && $update2 = true)
    {
    echo "<center>Sie haben den Spieler gekauft!";
    }
    else
    {
    echo "<center>Da ist was schief gelaufen";
    }
    }
    else
    {
    echo "<center>Sie haben nicht genug Geld um diesen Spieler zu kaufen";
    }
  }
?>

Du musst das Mysql-Ergebnis auch erst auswerten und verarbeiten, ehe du damit was machst.
Hinzugefügt habe ich:
PHP:
    $pruefe = mysql_fetch_object($sql);
    $pruefe = $pruefe->konto;
 
Hallo alle zusammen. Bin hier wieder am verzweifeln
Klappt alles bis auf eine Zeile die ich mir nicht erklären kann:

PHP:
$teste = "SELECT `Mannschaft` FROM `spieler` WHERE `Name` LIKE '$spieler';";
$solution = mysql_query($teste);
$mannschaft = mysql_fetch_object($solution);
if($mannschaft == $name)
{
echo "<center>Dieser Spieler gehört Ihnen schon!<br><br><a class='navi' href=\"index.php?seite=trans\">Zurück</a>";
}
else
{
Wenn ich einen Spieler kaufe, dann wird er auch in mein team rüber gepackt, aber die überprüfung die vorher stattfindet wird einfach immer ignoriert, also ob der Spieler schon in meinem Team ist...

hier der ganze code:

PHP:
<?php
//prüft ob User online ist
if(empty($_SESSION["name"]))
{
echo "<br><center>Sie müssen sich erst einloggen!";
}
else
{ 
?>
<?php
//Verbindung zur Datenbank aufbauen
include "connect.php";
$name = $_SESSION['name'];
//Wenn Kaufen gedrückt wird
if(isset($_POST))
{
//Zugriff auf Konto des Users
$spieler = $_POST['spielername'];
$pruefe = "SELECT `konto` FROM `user` WHERE `name` LIKE '$name';";
$sql = mysql_query($pruefe);
$zeile = mysql_fetch_object($sql);
$zeile = $zeile->konto;
$geld = $_POST['wert'];
//Ist Spieler schon bei User
$teste = "SELECT `Mannschaft` FROM `spieler` WHERE `Name` LIKE '$spieler';";
$solution = mysql_query($teste);
$mannschaft = mysql_fetch_object($solution);
if($mannschaft == $name)
{
echo "<center>Dieser Spieler gehört Ihnen schon!<br><br><a class='navi' href=\"index.php?seite=trans\">Zurück</a>";
}
else
{
//Wenn Konto kleiner ist als Marktwert, dann
if($zeile>$geld)
{
//Team des Spielers ändern
$aendern = "UPDATE `spieler` SET `Mannschaft` = '$name' WHERE `Name` = '$spieler';";
$update = mysql_query($aendern);
//Neuer Kontostand = Kontostand - Marktwert
$neukonto = $zeile - $geld;
//Neuer Kontostand wird in DB gespeichert
$neu = "UPDATE `user` SET `konto` = '$neukonto' WHERE `name` = '$name';";
$update2 = mysql_query($neu);
//Wenn Team und Kontostand geupdated worden sind, dann
if($update = true && $update2 = true)
{
echo "<center>Sie haben den Spieler <b>$spieler</b> gekauft!<br><br><a class='navi' href=\"index.php?seite=trans\">Zurück</a>";
}
else
{
echo "<center>Da ist was schief gelaufen.<br><br><a class='navi' href=\"index.php?seite=trans\">Zurück</a>";
}
}
else
{
echo "<center>Sie haben nicht genug Geld um diesen Spieler zu kaufen.<br><br><a class='navi' href=\"index.php?seite=trans\">Zurück</a>";
}
}
}
}
?>

Vielleicht könnt Ihr mir wieder aus der Klemme helfen :confused:
 
Erstmal, mysql_fetch_object holt genau einen Datensatz aus der Tabelle und packt ihn in ein Objekt.
Ähnlich wie bei mysql_fetch_assoc kannst du nun auf dieses Array zugreifen.
Während das bei mysql_fetch_assoc und einer Schleife wie ein Array funktioniert, musst du
bei einem Objekt mit dem -> Pfeil arbeiten.
Demnach auch bei deinem Code:
PHP:
$mannschaft = mysql_fetch_object($solution); 
if($mannschaft->Mannschaft == $name)
anstatt wie in einer Schleife
PHP:
$mannschaft = mysql_fetch_assoc($solution); 
if($mannschaft['Mannschaft'] == $name)
Der fertige Code ist hier, der müsste gehen.
PHP:
<?php 
//prüft ob User online ist 
if(empty($_SESSION["name"])) 
{ 
echo "<br><center>Sie müssen sich erst einloggen!"; 
} 
else 
{  
?> 
<?php 
//Verbindung zur Datenbank aufbauen 
include "connect.php"; 
$name = $_SESSION['name']; 
//Wenn Kaufen gedrückt wird 
if(isset($_POST)) 
{ 
//Zugriff auf Konto des Users 
$spieler = $_POST['spielername']; 
$pruefe = "SELECT `konto` FROM `user` WHERE `name` LIKE '$name';"; 
$sql = mysql_query($pruefe); 
$zeile = mysql_fetch_object($sql); 
$zeile = $zeile->konto; 
$geld = $_POST['wert']; 
//Ist Spieler schon bei User 
$teste = "SELECT `Mannschaft` FROM `spieler` WHERE `Name` LIKE '$spieler';"; 
$solution = mysql_query($teste); 
$mannschaft = mysql_fetch_object($solution); 
if($mannschaft->Mannschaft == $name) 
{ 
echo "<center>Dieser Spieler gehört Ihnen schon!<br><br><a class='navi' href=\"index.php?seite=trans\">Zurück</a>"; 
} 
else 
{ 
//Wenn Konto kleiner ist als Marktwert, dann 
if($zeile>$geld) 
{ 
//Team des Spielers ändern 
$aendern = "UPDATE `spieler` SET `Mannschaft` = '$name' WHERE `Name` = '$spieler';"; 
$update = mysql_query($aendern); 
//Neuer Kontostand = Kontostand - Marktwert 
$neukonto = $zeile - $geld; 
//Neuer Kontostand wird in DB gespeichert 
$neu = "UPDATE `user` SET `konto` = '$neukonto' WHERE `name` = '$name';"; 
$update2 = mysql_query($neu); 
//Wenn Team und Kontostand geupdated worden sind, dann 
if($update = true && $update2 = true) 
{ 
echo "<center>Sie haben den Spieler <b>$spieler</b> gekauft!<br><br><a class='navi' href=\"index.php?seite=trans\">Zurück</a>"; 
} 
else 
{ 
echo "<center>Da ist was schief gelaufen.<br><br><a class='navi' href=\"index.php?seite=trans\">Zurück</a>"; 
} 
} 
else 
{ 
echo "<center>Sie haben nicht genug Geld um diesen Spieler zu kaufen.<br><br><a class='navi' href=\"index.php?seite=trans\">Zurück</a>"; 
} 
} 
} 
} 
?>

Ich weiß aber nicht, ob Mannschaft groß geschrieben richtig ist.
 
Zuletzt bearbeitet:
Zurück