PHP och Mysqli-problem med att föra in inputs i databasen
Hej! Jag har ett litet knepigt problem här som jag skulle behöva lite hjälp med.
Jag är fullt medveten om att hemsidan ser ut som en tunna skit. Jag använder enbart detta som en plattform för att testa funktioner, för att slippa sitta och göra det på den faktiska sidan.
Jag håller på att ta fram en hemsida där jag en användare ska kunna gå in och göra/ta ett Quiz genom att svara på ett antal frågor. I mitt fall är det 100 frågor med 4 alternativ var, men för att hålla felsökande och kod enkelt så håller jag det till 5 frågor här.
I alla fall. Det börjar med att användaren får svara på ett antal frågor, det kan se ut som följande:
Vad jag sedan gör är att jag viktar detta för att kunna ge användaren hjälp med något. Detta görs på följande sätt:
So far so good. Allt detta fungerar precis som det. Vad jag gör efter detta är att jag skriver ut mina värden på hemsidan, (bara för att se att allt fungerar), och mina värden skrivs ut precis som de ska.
Och detta ser ut som följande på min hemsida:
Som ni ser så skriv mina värden ut. Nu kommer vi till kruxet. Jag vill föra in dessa värden i den databasen jag har.
För att göra detta har jag gjort en knapp. När man klickar på denna knappen startar en IF-sats som för in värden i databasen. Det är knappen ni ser på min bild som så fint är döpt till submit. Detta ser ut som följande i min kod:
Och själva knappen:
Problemet är att när jag klickar på denna knappen, då sätts mina $totalA, $totalB, $totalC och $totalD till 0, (det startvärdet som jag deklarerar dem), och skickar in det i databasen. Då ser det ut som följande:
Och detta stoppas in i min databas:
En jäkla massa nollor helt enkelt. Jag vet inte riktigt varför den gör såhär. Jag tror det har med FORM att göra i PHP och hur den fungerar när den hämtar variabler - men jag är helt ny på PHP så kan vara ute och cykla.
Jag ber om ursäkt för att allt ser ut som skit när det kommer till kod. Jag har suttit hela dagen och testat saker fram och tillbaka.
Här kommer all kod i sin helhet:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>asd asd asd testsida och ingenting annat.</title>
<link rel="stylesheet" type="text/css" href="css/style.css" />
</head>
<body>
<div id="page-wrap">
<h1 class="transparent index-headline" >Jonte verkar lite arg idag</h1>
<?php
// Before using $_POST['value']
//if (isset($_POST['value']))
//{
// Instructions if $_POST['value'] exist
//}
$answer1 = $_POST['question-1-answers'];
$answer2 = $_POST['question-2-answers'];
$answer3 = $_POST['question-3-answers'];
$answer4 = $_POST['question-4-answers'];
$answer5 = $_POST['question-5-answers'];
$totalA = "0"; //Hur bra du är på att attrahera kvinnor.
$totalB = "0";
$totalC = "0"; //Hur bra du är på att attrahera unga.
$totalD = "0"; //Hur bra du är på att attrahera unga killar.
//Här kan vi egentligen att vika frågorna lite som man vill.
//På fråga 1 kan ni exempel på när jag vara ger "totalA" värdet av sig självt
//och sedan lägger jag bara på vikten "2"
//På fråga 2 lägger jag till 5 på vår totalA vilket resulterar i att den nu blir
//7, men jag väljer också att lägga till lite på kategorin B, för det passar.
if ($answer1 == "A") { $totalA = $totalA + 2; $totalC = $totalC -1;}
if ($answer1 == "B") { $totalA = $totalA + 1; $totalD = $totalD + 1;}
if ($answer1 == "C") { $totalD = $totalD + 2; }
if ($answer1 == "D") { $totalA = $totalA + 1; $totalD = $totalD + 1; $totalD = $totalD + 1;}
if ($answer2 == "A") { $totalA = $totalA + 5; }
if ($answer2 == "B") { $totalB = $totalB + 1.15; }
if ($answer2 == "C") { $totalC = $totalC + 1.13; }
if ($answer2 == "D") { $totalD = $totalD + 1.16; }
if ($answer3 == "A") { $totalA = $totalA + 5; }
if ($answer3 == "B") { $totalB = $totalB + 1.15; $totalC = $totalC + 0.1; }
if ($answer3 == "C") { $totalC = $totalC + 1.13; $totalB = $totalB + .07; }
if ($answer3 == "D") { $totalD = $totalD + 1.16; }
if ($answer4 == "A") { $totalA = $totalA + 5; }
if ($answer4 == "B") { $totalB = $totalB + 1.15; }
if ($answer4 == "C") { $totalC = $totalC + 1.13; $totalA = $totalA + .05; $totalB = $totalB + .06; $totalD = $totalD + .07; }
if ($answer4 == "D") { $totalD = $totalD + 1.16; $totalB = $totalB + .04; $totalA = $totalA + .045; $totalC = $totalC + .034; }
if ($answer5 == "A") { $totalA = $totalA + 5; }
if ($answer5 == "B") { $totalB = $totalB + 1.15; }
if ($answer5 == "C") { $totalC = $totalC + 1.14; $totalA = $totalA + .06; $totalD = $totalD + .08; }
if ($answer5 == "D") { $totalD = $totalD + 1.16; $totalC = $totalC + .04; }
?>
<div class="Dra_åt_helvete_vilken_DIV_det_kommer_ligga_här">
<?php
if ($totalA > 5) {
echo '<div class="xxx"></div><div class="xxx"><p class="you-chose">You Scored:</p><div class="xx"><p class="score">Om A är större än 1 ska detta skrivas ut.</p><p class="score-details"> Helvete vad gråhårig</p><a id="replay" class="take-quiz-btn" href="/test.php">Ta quizet igen?</a></div>';
}
elseif ($totalB > $totalA && $totalB > $totalC && $totalB > $totalD) {
echo '<div class="xxxDiv"></div><div class="xxxDiv"><p class="xxxDiv">You Scored:</p><div class="xxxDiv"><p class="score">Du har fått följande viktning:</p><p>Beroende på vad du klickat på får du olika altnerativ.</p><a id="replay" class="take-quiz-btn" href="/test.php">Play Again?</a></div>';
}
elseif ($totalC > $totalA && $totalC > $totalB && $totalC > $totalD) {
echo '<div class="results test-results2"><p class="score">Du har fått följande viktning:</p><p class="score-details">Hehe, hehe.... he.<p></p><a id="replay" class="take-quiz-btn" href="/test.php">Play Again</a></div>';
}
elseif ($totalD > $totalA && $totalD > $totalB && $totalD > $totalC) {
echo '<div class="Här_kan_Man_Diva"><p class="score">Du har fått följande viktning:</p><p class="score-details"><a id="replay" class="take-quiz-btn" href="test.php">Play Again</a></div>';
}
?>
<p> Här kommer summan av alla svaren A:
<?php
echo $totalA;
?>
<p> Här kommer summan av alla svaren B:
<?php
echo $totalB;
?>
<p> Här kommer summan av alla svaren C:
<?php
echo $totalC;
?>
<p> Här kommer summan av alla svaren D:
<?php
echo $totalD;
?>
<p> Denna summan ska vara samma som "Här kommer summa av alla svaren A:" </p>
<?php
//require 'dbh.inc.php';
//session_start();
//$servername = "localhost";
//$dBUsername = "root";
//$dBPassword = "";
//$dBName = "loginsystem";
//$conn = mysqli_connect($servername, $dBUsername, $dBPassword, $dBName);
//if (!$conn) {
//die("Connection failed: ".mysqli_connect_error());
//else{
//}
//}
//$sql = "INSERT INTO questions (questionA, questionB, questionC, questionD)
//VALUES ('$totalA', '$totalB', '$totalC', '$totalD')";
// use exec() because no results are returned
// $conn->exec($sql);
// echo "Hoppas fan att detta fungerar.";
session_start();
$servername = "localhost";
$dBUsername = "root";
$dBPassword = "";
$dBName = "loginsystem";
$conn = mysqli_connect($servername, $dBUsername, $dBPassword, $dBName);
if($conn){
echo "Dra åt helvete va igång databasjäveln är just nu.
Ser ni inte detta så är det garanterat back-end som
gjort något fel.";
}
if(isset($_POST['Submit'])){
echo"hej";
echo"$totalA";
$sql = "INSERT INTO questions(questionA, questionB, questionC, questionD) VALUES ($totalA, $totalB, $totalC, $totalD)";
if(mysqli_query($conn, $sql)){
echo "Dra åt pipsvängen, skit börjar fugnera.";
}
else {
echo "Nu får backend ta mig fan se till att databasjäveln fungerar". mysqli_error($sql);
}
}
?>
<form method ="post" >
<input type= "submit" name= "Submit" value="Submit">
</form>
</div>
</div>
Som alltid är jag riktigt tacksam för all typ av hjälp jag kan få.
Med vänlig hälsning,
Pontus Andersson.
Gaming: RTX 2070 & 3770k
Studier: MacBook pro retina 13
Ljud: QH-1339 & ett par rackans smidiga AirPods
Telefon: iPhone 6s plus
Skärm: ASUS 27" ROG Swift PG279Q med sån där g-sync