Data fra brugerne gemt i MySQLi
Hej
Tak for de mange gode videoer. Jeg skal til i gang nu, men der er en ting, jeg ikke har fanget endnu. Hvis man vil bygge en database af data, som brugeren selv har indtastet - altså det er Jens Jensen, der selv indtaster på min hjemmeside - så kan jeg godt lave felterne til det, men hvordan får jeg det gemt i en bestemt database?
Kan I henvise til den video, jeg må have overset.
Tusind tak,
Robin
Tak for de mange gode videoer. Jeg skal til i gang nu, men der er en ting, jeg ikke har fanget endnu. Hvis man vil bygge en database af data, som brugeren selv har indtastet - altså det er Jens Jensen, der selv indtaster på min hjemmeside - så kan jeg godt lave felterne til det, men hvordan får jeg det gemt i en bestemt database?
Kan I henvise til den video, jeg må have overset.
Tusind tak,
Robin
- Daniel
- Admin
- Indlæg:625
- Tilmeldt:14. jun 2011, 09:27
- Geografisk sted:Danmark, Fyn, Nørre Aaby
- Kontakt:
Re: Data fra brugerne gemt i MySQLi
Hej Robin,
Velkommen til NemProgrammering.dk forummet
Når du arbejder med databaser, så er der flere muligheder, siden du er helt ny til det her, så vil jeg anbefale at du starter ud med MySQLi.
NemProgrammering.dk har en hel serie omkring MySQLi liggende, og mere specifikt skal du kigge på denne video, hvis du gerne vil se hvordan man indsætter data med MySQLi.
Håber dette hjælper dig videre, ellers må du altid spørge igen
Velkommen til NemProgrammering.dk forummet
Når du arbejder med databaser, så er der flere muligheder, siden du er helt ny til det her, så vil jeg anbefale at du starter ud med MySQLi.
NemProgrammering.dk har en hel serie omkring MySQLi liggende, og mere specifikt skal du kigge på denne video, hvis du gerne vil se hvordan man indsætter data med MySQLi.
Håber dette hjælper dig videre, ellers må du altid spørge igen
Re: Data fra brugerne gemt i MySQLi
Hej Daniel
Tak for dit svar og for den fremsendte video - endda med min favoritinstruktør
Men det, jeg gerne vil, er, at det er brugeren, der sætter data ind. Altså at jeg ikke selv skriver Jens Jensen mv i koden, men istedet henter et stykke data, som brugeren har fyldt ind via en form.
Venligst
Robin
Tak for dit svar og for den fremsendte video - endda med min favoritinstruktør
Men det, jeg gerne vil, er, at det er brugeren, der sætter data ind. Altså at jeg ikke selv skriver Jens Jensen mv i koden, men istedet henter et stykke data, som brugeren har fyldt ind via en form.
Venligst
Robin
- Daniel
- Admin
- Indlæg:625
- Tilmeldt:14. jun 2011, 09:27
- Geografisk sted:Danmark, Fyn, Nørre Aaby
- Kontakt:
Re: Data fra brugerne gemt i MySQLi
Hej igen,
Så er jeg med på hvad du spørger om
Jeg kommer først lige med nogle links her til 2 videoer der forklare princippet i hvad du skal gøre, og så kommer jeg med et eksempel nedenunder hvordan du i praksis sætter de forskellige ting sammen.
PHP: POST
PHP: GET
Eksempel:
I eksemplet ovenfor, bliver værdien fra tekstfeltet indsat ind i databasen, i en tabel med navnet tabel, i en række der hedder navn.
Der er ikke vist noget om hvordan man forbinder til databasen eller noget, så det er ikke et helt færdigt eksempel, men resten burde du nemt kunne finde blandt MySQLi videoerne her på siden
Så er jeg med på hvad du spørger om
Jeg kommer først lige med nogle links her til 2 videoer der forklare princippet i hvad du skal gøre, og så kommer jeg med et eksempel nedenunder hvordan du i praksis sætter de forskellige ting sammen.
PHP: POST
PHP: GET
Eksempel:
Kode: Vælg alt
<form action="" method="POST">
<label for="navn">Navn: </label>
<input type="text" name="navn" id="navn">
<br>
<input type="submit" value="Indsæt data">
</form>
<?php
if(isset($_POST['navn']) && !empty($_POST['navn'])) {
$navn = mysqli_real_escape_string($db, $_POST['navn']);
mysqli_query($db, "INSERT INTO `tabel` (`navn`) VALUES ('$navn')");
}
?>
Der er ikke vist noget om hvordan man forbinder til databasen eller noget, så det er ikke et helt færdigt eksempel, men resten burde du nemt kunne finde blandt MySQLi videoerne her på siden
Re: Data fra brugerne gemt i MySQLi
Kære Daniel
Tusind tak. Du har hjulpet mig et stort skridt videre. Jeg kan ikke påstå, at det virker endnu - det er som om min performQuery ikke kan genkende variablene. Men jeg forsøger videre i morgen,
MVH
Robin
Tusind tak. Du har hjulpet mig et stort skridt videre. Jeg kan ikke påstå, at det virker endnu - det er som om min performQuery ikke kan genkende variablene. Men jeg forsøger videre i morgen,
MVH
Robin
- Daniel
- Admin
- Indlæg:625
- Tilmeldt:14. jun 2011, 09:27
- Geografisk sted:Danmark, Fyn, Nørre Aaby
- Kontakt:
Re: Data fra brugerne gemt i MySQLi
Du skal være velkommen til at indsætte koden herinde du har problemer med, så vil jeg meget gerne kigge på det
Re: Data fra brugerne gemt i MySQLi
Kære Daniel
Tusind tak. Jeg har klippet det, jeg tror, er relevant ind nedenfor
<
MVH
Robin
Tusind tak. Jeg har klippet det, jeg tror, er relevant ind nedenfor
<
Kode: Vælg alt
form method='POST' action="">
<fieldset>
<legend>Indsæt data her</legend>
<label for="name"> fornavn </label>
<input type="text" name="name" id="name" autofocus required placeholder="Søren Petersen">
<br></br>
<label for="age"> alder </label>
<input type="text" name="age" id="age" required placeholder="25">
<br></br>
<label for="phone"> nummer </label>
<input type="text" name="phone" id="phone" required placeholder="12345678">
<br></br>
<input type="submit" name="send" id="send" value="Opret">
</fieldset>
</form>
<?php
require_once "connecttildatabase.php";
if(isset($_POST['submit'])){
$name = $_POST['name'];
$name = mysqli_real_escape_string($name);
$age = $_POST['age'];
$age = mysqli_real_escape_string($age);
$phone = $_POST['phone'];
$phone = mysqli_real_escape_string($phone);
performQuery("INSERT INTO personerne(name, age, phone)VALUES ('$name', '$age', '$phone')");
}
?>
MVH
Robin
- Daniel
- Admin
- Indlæg:625
- Tilmeldt:14. jun 2011, 09:27
- Geografisk sted:Danmark, Fyn, Nørre Aaby
- Kontakt:
Re: Data fra brugerne gemt i MySQLi
Så fik jeg kigget din kode igennem, og der er nogle småfejl, som jeg har rettet i nedenstående kode, som jeg kopierer ind nederst i indlægget her, så kan du kigge på den, og tage det ud du kan bruge
1. For lige at tage din HTML, så har du bruget <br></br> i løbet af din kode, br tags er et af de tilfælde, hvor du kan nøjes med åbningstagget, altså <br> (en lille ting, men rart at få det med fra start)
2. I starten af din PHP kode har du brugt if(isset($_POST['submit'])), det kan du ikke bruge, da du ikke har noget input med et "navn" af submit. Altid når du arbejder med POST og GET, så er det name attributten du skal henvise til i din PHP kode.
3. Når du arbejder med MySQLi, så skal du i næsten alle funktioner starte med at linke til den variabel der indeholder din database forbindelse, det vil sige når du forbinder, så skriver du noget alla $db = mysqli_connect(...);, i det her tilfælde hedder min variabel $db, så ved mysqli_real_escape_sting og query, der skal du starte ud med $db som det første parameter. Eksempel: $name = mysqli_real_escape_string($db, $_POST['name']);
4. Du har skrevet performQuery("..."), det er der ikke en funktion der hedder, her skal du bruge mysqli_query($db, "...");.
Det er højst sandsynligt den sidste fejl der gør at det ikke virker for dig, de andre ting vil også påvirke resultatet, men din besked til databasen går slet ikke igennem uden den sidste detalje
Her kommer så den kode jeg har skrevet til dig, det jeg har gjort med den, er at jeg har optimeret den til nogle af de mere generelle standarder. Det vil sige at det ikke er alt jeg har skrevet om til det mest optimale, men kun de ting der vil hjælpe dig mest til ikke at få lært noget der senere kan forvirre dig når du skal læse andres kode.
Det der så er ved det, er at det ikke er alle der bør lære det mest korrekte fra starten, jeg var/er personligt en af dem der bare skal lære det på den nemmeste og mest kludrede måde, og så finder jeg ud af standarterne efterhånden, men nu er eksemplet givet til dig, og så kan du bruge det hvis du får noget ud af det, og ellers så er det bare at glemme alt om det
1. For lige at tage din HTML, så har du bruget <br></br> i løbet af din kode, br tags er et af de tilfælde, hvor du kan nøjes med åbningstagget, altså <br> (en lille ting, men rart at få det med fra start)
2. I starten af din PHP kode har du brugt if(isset($_POST['submit'])), det kan du ikke bruge, da du ikke har noget input med et "navn" af submit. Altid når du arbejder med POST og GET, så er det name attributten du skal henvise til i din PHP kode.
3. Når du arbejder med MySQLi, så skal du i næsten alle funktioner starte med at linke til den variabel der indeholder din database forbindelse, det vil sige når du forbinder, så skriver du noget alla $db = mysqli_connect(...);, i det her tilfælde hedder min variabel $db, så ved mysqli_real_escape_sting og query, der skal du starte ud med $db som det første parameter. Eksempel: $name = mysqli_real_escape_string($db, $_POST['name']);
4. Du har skrevet performQuery("..."), det er der ikke en funktion der hedder, her skal du bruge mysqli_query($db, "...");.
Det er højst sandsynligt den sidste fejl der gør at det ikke virker for dig, de andre ting vil også påvirke resultatet, men din besked til databasen går slet ikke igennem uden den sidste detalje
Her kommer så den kode jeg har skrevet til dig, det jeg har gjort med den, er at jeg har optimeret den til nogle af de mere generelle standarder. Det vil sige at det ikke er alt jeg har skrevet om til det mest optimale, men kun de ting der vil hjælpe dig mest til ikke at få lært noget der senere kan forvirre dig når du skal læse andres kode.
Det der så er ved det, er at det ikke er alle der bør lære det mest korrekte fra starten, jeg var/er personligt en af dem der bare skal lære det på den nemmeste og mest kludrede måde, og så finder jeg ud af standarterne efterhånden, men nu er eksemplet givet til dig, og så kan du bruge det hvis du får noget ud af det, og ellers så er det bare at glemme alt om det
Kode: Vælg alt
<form action="" method="post">
<fieldset>
<legend>Indsæt data her</legend>
<label for="name">Fornavn </label>
<input type="text" name="name" id="name" autofocus required placeholder="Søren Petersen">
<br>
<label for="age">Alder </label>
<input type="text" name="age" id="age" required placeholder="25">
<br>
<label for="phone">Telefonnummer </label>
<input type="text" name="phone" id="phone" required placeholder="12345678">
<br>
<input type="submit" name="send" id="send" value="Opret">
</fieldset>
</form>
<?php
require 'connecttildatabase.php';
if(isset($_POST['send'])) {
if(isset($_POST['name'], $_POST['age'], $_POST['phone']) && !empty($_POST['name']) && !empty($_POST['age']) && !empty($_POST['phone'])) {
$name = mysqli_real_escape_string($db, $_POST['name']);
$age = mysqli_real_escape_string($db, $_POST['age']);
$phone = mysqli_real_escape_string($db, $_POST['phone']);
$query = mysqli_query($db, "INSERT INTO `personerne` (`name`, `age`, `phone`) VALUES ('$name', '$age', '$phone')");
if($query) {
echo 'Alt gik godt og personerne er nu indsat i databasen';
} else {
echo 'Der skete en fejl da personerne skulle indsættes i databasen';
}
} else {
echo 'Alle felter skal udfyldes';
}
}
Re: Data fra brugerne gemt i MySQLi
Mange tak igen
Funktionen, du savner i pt 4 er i en selvstændig connect fil, som jeg henter.
Er det rigtigt forstået, når jeg læser dine gode råd, at jeg bruger $DB..... sådan som du beskriver det i pkt 3 - i stedet for en selvstændig connect fil?
Tak for de mange forbedringstips.....
Funktionen, du savner i pt 4 er i en selvstændig connect fil, som jeg henter.
Er det rigtigt forstået, når jeg læser dine gode råd, at jeg bruger $DB..... sådan som du beskriver det i pkt 3 - i stedet for en selvstændig connect fil?
Tak for de mange forbedringstips.....
- Daniel
- Admin
- Indlæg:625
- Tilmeldt:14. jun 2011, 09:27
- Geografisk sted:Danmark, Fyn, Nørre Aaby
- Kontakt:
Re: Data fra brugerne gemt i MySQLi
Ikke helt
Som det er lige nu, så har du en connect fil, i den skulle der gerne være noget i stil med:
connecttildatabase.php
fil.php
Her er filerne opdelt sådan som jeg forstår at du har det.
Det jeg så har gjort, er at jeg har oprettet en performQuery funktion som kunne være den du har.
I starten af den har jeg brugt global $db. Det har jeg gjort for at gøre $db global, normalt når man arbejder i funktioner, så arbejder man med lokale variabler, altså variabler der kun findes i den pågældende funktion. Det kan også gøres på andre måder, hvor man sender variablen igennem funktionens parametre, men i første omgang er det andet nemmere at lære og forstå (vil jeg mene).
Håber det giver mening, det er ikke det nemmeste at starte ud med at skulle lære om globale og lokale scopes i funktioner
Som det er lige nu, så har du en connect fil, i den skulle der gerne være noget i stil med:
connecttildatabase.php
Kode: Vælg alt
<?php
$db = mysqli_connect('vært', 'brugernavn', 'kodeord', 'database');
function performQuery($query) {
global $db;
mysqli_query($db, $query);
}
Kode: Vælg alt
<?php
performQuery("INSERT INTO...");
Det jeg så har gjort, er at jeg har oprettet en performQuery funktion som kunne være den du har.
I starten af den har jeg brugt global $db. Det har jeg gjort for at gøre $db global, normalt når man arbejder i funktioner, så arbejder man med lokale variabler, altså variabler der kun findes i den pågældende funktion. Det kan også gøres på andre måder, hvor man sender variablen igennem funktionens parametre, men i første omgang er det andet nemmere at lære og forstå (vil jeg mene).
Håber det giver mening, det er ikke det nemmeste at starte ud med at skulle lære om globale og lokale scopes i funktioner
Re: Data fra brugerne gemt i MySQLi
YES!!!
Nu virker det.
mange tak for hjælpen, det var virkelig godt,
mvh
Robin
Nu virker det.
mange tak for hjælpen, det var virkelig godt,
mvh
Robin
Re: Data fra brugerne gemt i MySQLi
Er overstående et prepared statement eller skriver i bare direkte til databasen?
- Daniel
- Admin
- Indlæg:625
- Tilmeldt:14. jun 2011, 09:27
- Geografisk sted:Danmark, Fyn, Nørre Aaby
- Kontakt:
Re: Data fra brugerne gemt i MySQLi
Kanon Robin, glad for at du har fået det til at virke
Hej Cristian,
Ovenstående jeg har vist har ikke været prepared statements
Hej Cristian,
Ovenstående jeg har vist har ikke været prepared statements
Re: Data fra brugerne gemt i MySQLi
Okey. Så vil jeg bare nævne at man kan lave SQL injection i koden.Hej Cristian,
Ovenstående jeg har vist har ikke været prepared statements
Vh
Cristian
- Daniel
- Admin
- Indlæg:625
- Tilmeldt:14. jun 2011, 09:27
- Geografisk sted:Danmark, Fyn, Nørre Aaby
- Kontakt:
Re: Data fra brugerne gemt i MySQLi
Det er rigtigt, men synes personligt ikke at man til at starte med, skal tænke alt for meget over SQL injection, men det er kun min personlige mening.
Og på den anden side, så er prepared statements i PHP PDO og MySQLi heller ikke 100% sikre i forhold til SQL injection, men det er da absolut det bedste at bruge på seriøse live sider
Og på den anden side, så er prepared statements i PHP PDO og MySQLi heller ikke 100% sikre i forhold til SQL injection, men det er da absolut det bedste at bruge på seriøse live sider
Re: Data fra brugerne gemt i MySQLi
Hej
Kunne jeg have lavet en hjemmeside direkte fra WordPress til at lægge data ind i min mySQLi tabel og til at hente det igen.
Er lidt i tvivl nu om, om jeg skal gå php eller wordpress vejen, når jeg nu skal bygge videre.
Hvad er egentlig fordelene ved at lave det i php? Hvad er dit råd?
Mange hilsner
Robin
Kunne jeg have lavet en hjemmeside direkte fra WordPress til at lægge data ind i min mySQLi tabel og til at hente det igen.
Er lidt i tvivl nu om, om jeg skal gå php eller wordpress vejen, når jeg nu skal bygge videre.
Hvad er egentlig fordelene ved at lave det i php? Hvad er dit råd?
Mange hilsner
Robin
Re: Data fra brugerne gemt i MySQLi
Kan du nok godt men har ingen anelse hvordan.Kunne jeg have lavet en hjemmeside direkte fra WordPress til at lægge data ind i min mySQLi tabel og til at hente det igen.
Personligt bruger jeg ikke WordPress, Joomla / Andet.Er lidt i tvivl nu om, om jeg skal gå php eller wordpress vejen, når jeg nu skal bygge videre.
Der er igen fordele ved PHP fremfor andre sprog. Sproget er mere udbredt fordi det er nemmere at sætte servereHvad er egentlig fordelene ved at lave det i php? Hvad er dit råd?
op til det, og derved mindre overhead for udbydere.
Du kan bruge PHP, Java (bruger jeg selv), Pearl, Python mm som dit server-side language.
Sidst jeg tjekkede har PHP stadig nogle ulemper som andre sprog ikke har og jeg ser flere og flere firmaer der skifter fra PHP til f.eks Java.
Grunden til det er blandt andet at Java eksekvere hurtigere end PHP, dette var den direkte årsag til at Twitter gik væk fra PHP.
Facebook burde nok også gøre det men de har investeret en del i at modificere PHP så det virker til deres behov.
Dog deler de så vidt jeg ved ikke disse modifikationer med andre.