Voor een spel dat ik aan het maken ben, probeer ik een banksysteem te maken.
De bedoeling is dat de gebruiker het bedrag wat op zijn bank staat en wat hij "contant" heeft, kan aanpassen.
Maar niet boven een bepaald bedrag.

<?php
    session_start(); ?>
	<?php
if(isset($_GET['id']))
{ 
  $id = intval($_GET['id']);
  // getting info from db
}
?>
<?php
if(isset($_GET['club']))
{ 
  $club = $_GET['club'];
  // getting info from db
}
$maxbudget = "500.000";
?>
<?php
//=============Configuring Server and Database=======
$host        =    'localhost';
$user        =    'root';
$password    =    '';
$database    =    'voetbal';

$conn        =    mysqli_connect($host,$user,$password, $database) or die('Server Information is not Correct');

//===============End Server Configuration============
//=============Starting Registration Script==========
$budget    =    mysqli_real_escape_string($conn, $_POST['budget']);
$bank    =    mysqli_real_escape_string($conn, $_POST['bank']);
if ($budget > $maxbudget){
if(isset($_POST['update']))
{
$sql = "UPDATE clubs SET budget ='$budget', bankbudget ='$bank' WHERE id='$id'";

       if ($conn->query($sql) === TRUE) {
    echo "Je financiën zijn gewijzigd! <a href='index.php?id=$id&&club=$club'>Klik hier om terug te gaan naar de homepagina</a>";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
}}
else if ($bank > $maxbudget){
if(isset($_POST['update']))
{
$sql = "UPDATE clubs SET budget ='$budget', bankbudget ='$bank' WHERE id='$id'";

       if ($conn->query($sql) === TRUE) {
    echo "Je financiën zijn gewijzigd! <a href='index.php?id=$id&&club=$club'>Klik hier om terug te gaan naar de homepagina</a>";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();

}}
else {
	echo "Het ingevulde bedrag is te hoog!";
}?>


$maxbudget is dat maximale budget. Maar nu wil ik door middel van die if en else if dat dus regelen.
Maar als ik in het form vakje van het bedrag wat ik op bank wil hebben bijv 600.000 invul, geeft hij aan dat het bedrag te hoog is, maar dat doet hij ook bij 450.000. Terwijl dat niet te hoog is (aangezien de max 500.000 is).

HOe kan dit?
Laten weer de foutmelding vertalen:
Waarschuwing: mysqli_error() verwacht precies 1 parameter, 0 parameters gegeven in ...

En ik zie inderdaad geen parameter tussen je haakjes van die functie.
Dat hij die melding dan niet gaf op de andere pagina`s viel me op. Maargoed, de error is opgelost.
De $club is "Cambuur";
Hij zegt nu:
Unknown column 'Cambuur' in 'field list'
Lijn 2: Variabelen horen buiten de quotes. En verder hoort $club tussen single-quotes, anders denkt hij dat dat een veld is.


$query = "UPDATE users SET club='".$club."' WHERE id=".$id;

Aha thx.
Nu is er iets wat ik best opvallend vind.
Hij voert de query door: het lege vakje onder "CLUB" in de database vult hij met Cambuur.
Maar toch geeft hij een error over de Num_Rows.
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in

De code

<?php
    if ( isset($_SESSION['username']) ) {
		if(isset($club)) {
$query = "UPDATE users SET club='".$club."' WHERE id=".$id;
// execute query 
$result = mysqli_query($con, $query) or die ("Error in query: $query. ".mysqli_error($con)); 
// see if any rows were returned 
if (mysqli_num_rows($result) > 0) {
echo "Je hebt gekozen voor $club<br>";}
else { echo "Welkom bij VoetbalLeven. Het nieuwste voetbalmanagementspel van Nederland.<br> Log in."; }
} else { 
echo "Kies je club:";
	include "clubtabel.php"; }}
else { echo "Welkom bij VoetbalLeven. Het nieuwste voetbalmanagementspel van Nederland.<br> Log in."; }?>	


Dat is punt 1.

Punt 2 gaat zoals eerder opnieuw over het "Te koop zetten van een speler":


$result = mysqli_query($con,"SELECT algemeen FROM spelers WHERE speler_id='".$speler_id."'");
$algemeen = mysqli_fetch_assoc($result);
$result = mysqli_query($con,"SELECT leeftijd FROM spelers WHERE speler_id='".$speler_id."'");
$leeftijd = mysqli_fetch_assoc($result);
$result = mysqli_query($con,"SELECT naam FROM spelers WHERE speler_id='".$speler_id."'");
$naam = mysqli_fetch_assoc($result);
$Bedrag	= mysqli_real_escape_string($con, $_POST['bedrag']);
{
$sql = "INSERT INTO transfers (naam, leeftijd, algemeen, vraagprijs) VALUES ('$naam','$leeftijd','$algemeen','$Bedrag')";


Waarom voert hij hier alleen $Bedrag (vraagprijs) door en de rest niet?

PUNT 3
Gaat over hetgeen waar ik dit topic over begon: het banksysteem.
Ik heb nu dat je max 500k contant kan hebben en tegelijkertijd 500k max op de bank.
Maar wat ik het liefst heb is dat contant+bank samen max 500k kan zijn. Maar hoe doe ik dat?

De volledige code van waar hij checkt of je bedrag klopt en niet te hoog is:

<?php
    session_start();
if(isset($_GET['id']))
{ 
  $id = intval($_GET['id']);
  // getting info from db
}=
if(isset($_GET['club']))
{ 
  $club = $_GET['club'];
  // getting info from db
}
$maxbudget = 500000;
//=============Configuring Server and Database=======
$host        =    'localhost';
$user        =    'root';
$password    =    'superbart';
$database    =    'voetbal';
$conn        =    mysqli_connect($host,$user,$password, $database) or die('Server Information is not Correct');
//===============End Server Configuration============
//=============Starting Registration Script==========
$budget    =    mysqli_real_escape_string($conn, $_POST['budget']);
$bank    =    mysqli_real_escape_string($conn, $_POST['bank']);
if ($budget < $maxbudget){
if(isset($_POST['update'])){
$sql = "UPDATE clubs SET budget ='$budget', bankbudget ='$bank' WHERE id='$id'";
       if ($conn->query($sql) === TRUE) {
    echo "Je financien zijn gewijzigd! <a href='index.php?id=$id&&club=$club'>Klik hier om terug te gaan naar de homepagina</a>";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;}
$conn->close();
}}
else if ($bank < $maxbudget){
if(isset($_POST['update'])){
$sql = "UPDATE clubs SET budget ='$budget', bankbudget ='$bank' WHERE id='$id'";
       if ($conn->query($sql) === TRUE) {
    echo "Je financien zijn gewijzigd! <a href='index.php?id=$id&&club=$club'>Klik hier om terug te gaan naar de homepagina</a>";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
}}
else {
	echo "Het ingevulde bedrag is te hoog!";
}?>




BTW: Het zijn veel vragen die ik stel, dat snap ik. Maar ik maak dit voetbalspel ook met name om meer te leren coderen wat PHP-codering betreft.
1) Vreemd, gaat het om dezelfde mysqli_num_rows? Die zou moeten worden uitgevoerd zolang je query uitgevoerd wordt. Wel zie ik in je tweede codeblok dat je hier MySQLi-OO (Object-Oriented; met ->) toepast, en dit mengt met de procedurele variant. (mysqli_****()). Dit raad ik niet aan. Kies één van beiden.
Ikzelf prefereer de OO-variant,

2) Waarom voer je hier drie queries uit om 3 velden uit de zelfde tabel te halen, je kan prima meerdere velden in een SELECT query gebruiken: SELECT dit, dat, zus, zo FROM dingetjes WHERE zus='zo'.
Daarna fetch je het als je het opgehaald hebt met mysqli_query().

3) Je moet dan de contant en bank bij elkaar optellen. Kan prima met PHP.
Punt 1 is gefixt.
punt 3 ga ik zelf nog naar op zoek op welke manier dat kan.
Punt 2 wil nog niet:

De pagina waarop de gebruiker info over de speler ziet en het verkoopbedrag kan invullen:

<?php
if(isset($_GET['id']))
{ 
  $id = intval($_GET['id']);
  // getting info from db
}
if(isset($_GET['speler_id']))
{ 
  $speler_id = intval($_GET['speler_id']);
  // getting info from db
}
if(isset($_GET['club']))
{ 
  $club = $_GET['club'];
  // getting info from db
}
// set database server access variables: 
$host = "localhost"; 
$user = "root"; 
$pass = "superbart"; 
$db = "voetbal";
// open connection 
$con=mysqli_connect($host, $user, $pass) or die ("Unable to connect!"); 
// select database 
mysqli_select_db($con, 'voetbal') or die ("Unable to select database!"); 
// create query 
$query = "SELECT * FROM spelers WHERE speler_id=".$speler_id;
// execute query 
$result = mysqli_query($con,$query) or die ("Error in query: $query. ".mysqli_error()); 
// see if any rows were returned 
if (mysqli_num_rows($result) > 0) {  
    echo "<table border=2 height=80px width=400px>";  
    while($row = mysqli_fetch_array($result))      {
echo "<tr>";
echo "<td style='background-color:#1975FF'><b><center>Naam:</center></b></td>";
echo "<td style='background-color:#1975FF'><b><center>Leeftijd:</center></b></td>";
echo "<td style='background-color:#1975FF'><b><center>Linie:</center></b></td>";
echo "</tr>";
echo "<tr>";
echo "<td style='background-color:#6685A3'><b><center>" . $row['naam'] . "</center></b></td>";
echo "<td style='background-color:#6685A3'><b><center>" . $row['leeftijd'] . "</center></b></td>";
echo "<td style='background-color:#6685A3'><b><center>" . $row['linie'] . "</center></b></td>";
echo "</tr>";
}
echo "</table>";
} 
else { 
    // no 
    // print status message 
    echo "No rows found!"; 
}
?> <H3>Vul de verkoopsom in.</h3>
<?php echo "
<form action='tekoopbevestiging.php'?id=$id&&club=$club&&speler_id=$speler_id' method='post'>
<input type='tekst' name='bedrag' id='bedrag'/>
<input type='submit'/>
</form>"; 
// free result set memory 
mysqli_free_result($result); 
mysqli_close($con);?>
</body>
</html>


De pagina waar men het op de transferlijst zetten van de desbetreffende speler doorvoert:

<?php
$con=mysqli_connect("localhost","root","superbart","voetbal");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
if(isset($_GET['id']))
{ 
  $id = intval($_GET['id']);
}
if(isset($_GET['speler_id']))
{ 
  $speler_id = intval($_GET['speler_id']);
}
if(isset($_GET['club']))
{ 
  $club = $_GET['club'];
}
$result = mysqli_query($con,"SELECT algemeen,leeftijd,naam FROM spelers WHERE speler_id='".$speler_id."'");
$algemeen = mysqli_fetch_assoc($result);
$Bedrag	= mysqli_real_escape_string($con, $_POST['bedrag']);
{
$sql = "INSERT INTO transfers (naam, leeftijd, algemeen, vraagprijs) VALUES ('$algemeen','$algemeen','$algemeen','$Bedrag')";
       if ($con->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;}
$con->close();
};?>


Toevoeging op 13/01/2016 08:52:39:

Het enige wat hij uiteindelijk doorvoert is het verkoopbedrag. Naam leeftijd en algemeen niet.

Toevoeging op 13/01/2016 08:58:36:

EDIT: Punt 3, het banksysteempje met een max bedrag heb ik zelf inmiddels gefixt. Dat werkt nu zoals ik wilde.
Punt 2 nog niet
mysqli_fetch_assoc geeft een array, geen string.

$data = mysqli_fetch_assoc($result);
echo $data['veldnaam'];
zowel dit


}
$result = mysqli_query($con,"SELECT algemeen,leeftijd,naam FROM spelers WHERE speler_id='".$speler_id."'");
$algemeen = mysqli_fetch_assoc($result);
echo $data['algemeen'];
echo $data2['leeftijd'];
echo $data3['naam'];
$Bedrag	= mysqli_real_escape_string($con, $_POST['bedrag']);
{
$sql = "INSERT INTO transfers (naam, leeftijd, algemeen, vraagprijs) VALUES ('$data3','$data2','$data','$Bedrag')";
       if ($con->query($sql) === TRUE) {


als


}
$result = mysqli_query($con,"SELECT algemeen,leeftijd,naam FROM spelers WHERE speler_id='".$speler_id."'");
$algemeen = mysqli_fetch_assoc($result);
echo $data['algemeen'];
echo $data['leeftijd'];
echo $data['naam'];
$Bedrag	= mysqli_real_escape_string($con, $_POST['bedrag']);
{
$sql = "INSERT INTO transfers (naam, leeftijd, algemeen, vraagprijs) VALUES ('$data','$data','$data','$Bedrag')";
       if ($con->query($sql) === TRUE) {
    echo "New record created successfully";
} else {

werkt niet.
Kijk eens goed naar de naam van je variabele:

Hij heet $algemeen, en je noemt de waardes met $data op.

Misschien toch eerst maar even een MySQL-tutorial lezen om de basiskennis eerst eens op te doen?
hah, das een goede. Ben niet echt wakker vandaag volgensmij.
Maar toch maakt dat geen verschil. Wat kan het nu dan nog zijn?

Reageren