Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  16 2921
Hei folkens.


Jeg har tenkt å prøve å lære bootstrap i forhold til oppgavene jeg har her med jobben.

Jeg kan basic html, css, php og mysql.
På nettsiden vi har så fungerer alt som det skal, men vi skal re designe og har fått forespørsel om å prøve bootstrap i forhold til at det kan være enklere for lærlingene å ta opp jobben etter at jeg slutter i mitt vikariat.

Kode

	<body>
		<div class="container ">
			<div class="row">
				<div class="col-sm-4 col-md-4 col-ld-4"></div>
				<div class="col-xs-12 col-sm-4 col-md-4 col-ld-4 contact-form" >
					<form class="form-signin" action="post-contact.php">
						<h2 class="form-signin-heading">Vennligst fyll ut skjemaet</h2>

						<label for="inputName" >Navn</label>
				        <input type="text" name="name" id="inputName" class="form-control" placeholder="Ola Nordmann" required autofocus>

				        <label for="inputUsername" >ItsLearningbrukernavn</label>
				        <input type="text" name="username" id="inputUsername" class="form-control" placeholder="olanord040789" required>

				        <label for="inputEmail" >E-postaddresse</label>
				        <input type="email" name="email" id="inputEmail" class="form-control" placeholder="ola.nordmann@eksempel.no" required>

				        <label for="inputTelephone" >Telefonnummer</label>
				        <input type="number" name="phone" id="inputTelephone" class="form-control" placeholder="78901234" required>

				        <label for="inputMessage">Beskrivelse av problem</label>
				        <textarea id="inputMessage" name="text" class="form-control" placeholder="Jeg trenger hjelp med..." required></textarea>

				        <button class="btn btn-lg btn-primary btn-block submit-btn" type="submit">Send inn</button>
					</form>
				</div>
				<div class="col-sm-4 col-md-4 col-ld-4"></div>
			</div>
		</div>
	</body>
</html>
Her ser dere koden jeg har nå. Dette er et kontaktskjema laget med bootstrap.



Vi skal da kjøre denne opp mot databasen. (Dette har fungert på forrige siden, jeg har bare endret litt på scriptet.

Kode

<?php

header('Content-type: text/html; charset=UTF-8');

    include 'config.php';
    $connection = mysqli_connect($servername, $username, $password, $dbname);

    if($connection === false){
        die("ERROR: Could not connect. " . mysqli_connect_error());
    }

    if (isset($_POST["submit"])) 
        $name = $_POST['inputName'];
        $username1 = $_POST['inputUsername'];
        $email = $_POST['inputEmail'];
        $phone = $_POST['inputTelephone'];
        $text = $_POST['inputMessage'];

    


    $sql = "INSERT INTO helpdesk (navn, brukernavn, mail, telefonnummer, henvendelse) VALUES ('$name', '$username1', '$email', '$phone', '$text')";

    if(mysqli_query($connection, $sql)) {
        header('location: success.php');

    } else {
        echo "ERROR: Noe gikk galt med $sql. " . mysqli_error($connection);
    }
?>

Det som skjer her er at når vi trykket send inn i formen, så kommer det bare blanke "rows" i databasen.
Den henter rett og slett ikke ut data fra formen.

Er det noen som ser en / flere feil som jeg ikke ser?



Takk.
Prøvd å kjøre samme spørring direkte i MySql, PHPMyAdmin, SequelPro eller noe lignende? Eller printe spørringen før du utfører den så du kan se etter eventuelle feil der.

Ellers vil jeg si at Bootstrap er enkelt å bruke og du får kjapt satt opp en side som ser grei ut. Bruker dere themingen fra Bootstrap får dere noe som ser identisk ut som veldig mange andre sider. Men det har kanskje ikke noe å si. Grid-delen av Bootstrap er i alle fall veldig kjekk.
Trådstarter
Kjører jeg en test spørring med f.eks :

Kode

INSERT INTO `helpdesk`(`navn`, `brukernavn`, `mail`, `telefonnummer`, `henvendelse`) VALUES (1,2,3,4,5)
Så fungerer det helt fint. Det har liksom fungert på siden som eksisterer nå, men IKKE når vi gikk over til bootstrap. Ser ikke helt at php koden skal være så mye anderledes bare pga bootstrap.


Vi kjører veldig mange endringer i bootstrap.css fila, så vi får ikke helt likt som andre heldigvis
Har du prøvd å var_dump($_POST) for å se om det er noe der?

Hva om du spesifiserer at form skal ha method post?
Sitat av Nikon01 Vis innlegg
Kjører jeg en test spørring med f.eks :

Kode

INSERT INTO `helpdesk`(`navn`, `brukernavn`, `mail`, `telefonnummer`, `henvendelse`) VALUES (1,2,3,4,5)
Så fungerer det helt fint. Det har liksom fungert på siden som eksisterer nå, men IKKE når vi gikk over til bootstrap. Ser ikke helt at php koden skal være så mye anderledes bare pga bootstrap.


Vi kjører veldig mange endringer i bootstrap.css fila, så vi får ikke helt likt som andre heldigvis
Vis hele sitatet...
Har du prøvd å printe $sql-variabelen rett før du kjører:

Kode

if(mysqli_query($connection, $sql)) {
        header('location: success.php');

    } else {
        echo "ERROR: Noe gikk galt med $sql. " . mysqli_error($connection);
    }
Trådstarter
Sitat av Zepur Vis innlegg
Har du prøvd å var_dump($_POST) for å se om det er noe der?

Hva om du spesifiserer at form skal ha method post?
Vis hele sitatet...


Tar jeg en var_dump($_POST); får jeg meldingen array(0) { }

Så tydeligvis ingenting den henter fra formen.
Du må definere:

Kode

<form class="form-signin" action="post-contact.php" method="post">
method="post"
Sist endret av Yochi; 12. mai 2016 kl. 09:49.
Trådstarter
Har definert method nå og da får jeg opp det jeg trenger i array. Når jeg nå fjerner dump'en så kommer det bare blankt igjen.
Regner da med at jeg må gjøre noe her:


Kode

if(mysqli_query($connection, $sql)) {
        header('location: success.php');

    } else {
        echo "ERROR: Noe gikk galt med $sql. " . mysqli_error($connection);
    }
Hva er resultatet om du tar var_dump($sql) rett før den kodesnutten i siste innlegget ditt? (Vis oss et eksempel med testdata)
Trådstarter
Var_dump($_POST);

Kode

array(5) { ["name"]=> string(3) "hei" ["username"]=> string(3) "på" ["email"]=> string(13) "dere@freak.no" ["phone"]=> string(8) "12345678" ["text"]=> string(4) "Test" }


var_dump($sql);

Kode

string(101) "INSERT INTO helpdesk (navn, brukernavn, mail, telefonnummer, henvendelse) VALUES ('', '', '', '', '')"
Sist endret av Nikon01; 12. mai 2016 kl. 10:32.
Tenker på etter denne linja:

Kode

$sql = "INSERT INTO helpdesk (navn, brukernavn, mail, telefonnummer, henvendelse) VALUES ('$name', '$username1', '$email', '$phone', '$text')";
Trådstarter
La til dumpen på $sql over her.

Kode

    if (isset($_POST["submit"])) 
        $name = $_POST['inputName'];
        $username1 = $_POST['inputUsername'];
        $email = $_POST['inputEmail'];
        $phone = $_POST['inputTelephone'];
        $text = $_POST['inputMessage'];
Du bruker feil keys fra $_POST-arrayet i forhold til det du har satt i html-koden.

Sjekk f.eks. feltet for navn, her har du satt

Kode

<input type="text" name="name" ...
Da vil riktig key i $_POST-arrayet være $_POST['name'], ikke $_POST['inputName'] som du har satt.
Trådstarter
Hei.

Takk for det danielsk. Da fungerer alt bortsett fra name faktisk.
Alt kommer i databasen bortsett fra navn.

Da fungerer alt

Takk for svar
Sist endret av Nikon01; 12. mai 2016 kl. 13:00. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Neste steg blir å bruke prepared statements. Enten med mysqli eller PDO. Hurra!
<?php getUserTitle(); ?>
MrMrtn's Avatar
Det er verdt å nevne at denne koden da er sårbar for SQL injections, noe som worst case kan føre til at noen sletter hele databasen deres, med alle entries, kun ved å skrive noe ala. " '); DROP TABLE helpdesk; -- " i ett av inputfeltene. Jeg vil, som Zepur sier, anbefale prepared statements på det sterkeste for å motvirke dette.
Sitat av Zepur Vis innlegg
Neste steg blir å bruke prepared statements. Enten med mysqli eller PDO. Hurra!
Vis hele sitatet...
Anbefaler PDO på det sterkeste, flere muligheter dersom du skal overføre siden til noe annet enn MySQL