Vinnaren i pepparkakshustävlingen!
2016-04-12, 20:38
  #1
Medlem
Hej,

jag vill överföra data från en databas(mysql) via en 2-dimensionell vektor i php till en 2-dimensionell vektor i javascript men får det inte att fungera. Det är i själva överföringen mellan php och javascript som jag inte vet hur jag ska göra för att det ska fungera.

Databasen ser ut såhär:
question_id question alt1 alt2 alt3 answer
1 question1 Alt1 Alt2 Alt3 Svar1
2 question2 Alt1 Alt2 Alt3 Svar2

Det går fint att hämta ut datan till php med bland annat följande kod..

$query = "SELECT question_id, question, alt1, alt2, alt3, answer FROM databasnamn";
$d = @mysqli_query($dbc, $query);

$data = array();
while($row = mysqli_fetch_array($d)){
$data[] = $row;
}


men sedan när jag ska föra över den till javascript så har jag läst i olika forum att man kan använda json_encode men jag får det inte att fungera när jag försöker föra över datan från databasen.
Jag har testat att skriva in en vektor direkt i php-koden utan att använda databasen och när jag då för över den vektorn till javascript med json_encode så fungerar det.. men inte när jag hämtar datan från databasen.

<script type="text/javascript">
var jsArr = <?php echo json_encode($data); ?>;
</script>


Vilket är sedan ett bra sätt att se datan i javascript-vektorn?
Är det att använda "Alert (jsArr);" på något sätt?

Hoppas någon har något tips på vad jag gör för fel.
Citera
2016-04-12, 20:41
  #2
Moderator
Protons avatar
Databaser --> PHP
/Moderator
Citera
2016-04-12, 20:44
  #3
Moderator
Protons avatar
Citat:
Ursprungligen postat av Tobbelito10
Hej,

jag vill överföra data från en databas(mysql) via en 2-dimensionell vektor i php till en 2-dimensionell vektor i javascript men får det inte att fungera. Det är i själva överföringen mellan php och javascript som jag inte vet hur jag ska göra för att det ska fungera.

Databasen ser ut såhär:
question_id question alt1 alt2 alt3 answer
1 question1 Alt1 Alt2 Alt3 Svar1
2 question2 Alt1 Alt2 Alt3 Svar2

Det går fint att hämta ut datan till php med bland annat följande kod..

$query = "SELECT question_id, question, alt1, alt2, alt3, answer FROM databasnamn";
$d = @mysqli_query($dbc, $query);

$data = array();
while($row = mysqli_fetch_array($d)){
$data[] = $row;
}


men sedan när jag ska föra över den till javascript så har jag läst i olika forum att man kan använda json_encode men jag får det inte att fungera när jag försöker föra över datan från databasen.
Jag har testat att skriva in en vektor direkt i php-koden utan att använda databasen och när jag då för över den vektorn till javascript med json_encode så fungerar det.. men inte när jag hämtar datan från databasen.

<script type="text/javascript">
var jsArr = <?php echo json_encode($data); ?>;
</script>


Vilket är sedan ett bra sätt att se datan i javascript-vektorn?
Är det att använda "Alert (jsArr);" på något sätt?

Hoppas någon har något tips på vad jag gör för fel.
Eftersom du har jsondatat i sidkoden med den där koden kan du ju välja visa källa ocvh kolla på jsondatat.

Vad innehåller $data när du har kört klart scriptet?

"Det fungerar inte" är en helt genomsopig beskrivning på vad som inte funkar, får du ingen utskrift, skriver scriptet ut fel saker, annat?
Citera
2016-04-12, 20:45
  #4
Medlem
För det första så kan du få problem om du använder JSON encode med svenska tecken. Du bör första koda till UTF8.

Sedan är det sätt som du gör detta på väldigt dålig. Du kan använda ajax för att hämta JSON från Servern. JQuery är bra om du jobbar med Javascript.
Citera
2016-04-12, 21:29
  #5
Medlem
Ok, ja det är kanske inte ett jättebra sätt, men det är för att jag inte kan programmeringen så bra än. Försöker ta ett steg i taget. Men tack för tipset att använda ajax. Har nog en del att sätta mig in i.

Ja precis, jag såg att det inte fick vara med några svenska tecken i koden om man inte kodade som UTF8 så då tog jag bort alla å,ä,ö.

Ja jag kunde kanske försökt förklara bättre hur jag menar med att det inte fungerar. När jag använder en vektor som jag skriver in i php-koden direkt och för över den till javascript så kan jag med "Alert" se vad javascript-vektorn innehåller.
Men när jag försöker på liknande sätt med Alert att se vad vektorn innehåller när jag försöker använda datan från databasen så kommer inte "alert" fram på skärmen och jag försöker skriva ut vektorn med en for-loop så skriver den inte ut något heller. Men som sagt, jag är inte jättebra på kodandet ännu så det är nog en hel del nybörjarfel.

med php-vektorn kan jag skriva ut datan från databasen så till den punkten verkar det inte ha varit några konstigheter.

$data innehåller
array(2) {
[0]=> array(14) { [0]=> string(1) "1" ["question_id"]=> string(1) "1" [1]=> string(9) "question1" ["question"]=> string(9) "question1" [2]=> string(4) "Alt1" ["alt1"]=> string(4) "Alt1" [3]=> string(4) "Alt2" ["alt2"]=> string(4) "Alt2" [4]=> string(4) "Alt3" ["alt3"]=> string(4) "Alt3" [5]=> string(5) "Svar1" ["answer"]=> string(5) "Svar1" }
[1]=> array(14) { [0]=> string(1) "2" ["question_id"]=> string(1) "2" [1]=> string(9) "question2" ["question"]=> string(9) "question2" [2]=> string(4) "Alt1" ["alt1"]=> string(4) "Alt1" [3]=> string(4) "Alt2" ["alt2"]=> string(4) "Alt2" [4]=> string(4) "Alt3" ["alt3"]=> string(4) "Alt3" [5]=> string(5) "Svar2" ["answer"]=> string(5) "Svar2" } }
Citera
2016-04-12, 21:32
  #6
Moderator
Protons avatar
Citat:
Ursprungligen postat av Tobbelito10
Ok, ja det är kanske inte ett jättebra sätt, men det är för att jag inte kan programmeringen så bra än. Försöker ta ett steg i taget. Men tack för tipset att använda ajax. Har nog en del att sätta mig in i.

Ja precis, jag såg att det inte fick vara med några svenska tecken i koden om man inte kodade som UTF8 så då tog jag bort alla å,ä,ö.

Ja jag kunde kanske försökt förklara bättre hur jag menar med att det inte fungerar. När jag använder en vektor som jag skriver in i php-koden direkt och för över den till javascript så kan jag med "Alert" se vad javascript-vektorn innehåller.
Men när jag försöker på liknande sätt med Alert att se vad vektorn innehåller när jag försöker använda datan från databasen så kommer inte "alert" fram på skärmen och jag försöker skriva ut vektorn med en for-loop så skriver den inte ut något heller. Men som sagt, jag är inte jättebra på kodandet ännu så det är nog en hel del nybörjarfel.

med php-vektorn kan jag skriva ut datan från databasen så till den punkten verkar det inte ha varit några konstigheter.

$data innehåller
array(2) {
[0]=> array(14) { [0]=> string(1) "1" ["question_id"]=> string(1) "1" [1]=> string(9) "question1" ["question"]=> string(9) "question1" [2]=> string(4) "Alt1" ["alt1"]=> string(4) "Alt1" [3]=> string(4) "Alt2" ["alt2"]=> string(4) "Alt2" [4]=> string(4) "Alt3" ["alt3"]=> string(4) "Alt3" [5]=> string(5) "Svar1" ["answer"]=> string(5) "Svar1" }
[1]=> array(14) { [0]=> string(1) "2" ["question_id"]=> string(1) "2" [1]=> string(9) "question2" ["question"]=> string(9) "question2" [2]=> string(4) "Alt1" ["alt1"]=> string(4) "Alt1" [3]=> string(4) "Alt2" ["alt2"]=> string(4) "Alt2" [4]=> string(4) "Alt3" ["alt3"]=> string(4) "Alt3" [5]=> string(5) "Svar2" ["answer"]=> string(5) "Svar2" } }
Men vad händer när du har kört det där genom json-encodingen, får du ut nån json i sidan då?
Citera
2016-04-12, 21:33
  #7
Medlem
Jag ser inget problem med att skriva ut datan direkt i koden om den bara ska användas på den sidan.

Gör som proton föreslog och kolla hur den utskrivna datan ser ut (visa källa i webbläsaren).
Citera
2016-04-12, 22:04
  #8
Medlem
Om jag förstår er rätt så står det såhär i sidkälla..

<script type="text/javascript">
var jsdata = [{"0":"1","question_id":"1","1":"question1","questi on":"question1","2":"Alt1","alt1":"Alt1","3":"Alt2 ","alt2":"Alt2","4":"Alt3","alt3":"Alt3","5":"Svar 1","answer":"Svar1"},{"0":"2","question_id":"2","1 ":"question2","question":"question2","2":"Alt1","a lt1":"Alt1","3":"Alt2","alt2":"Alt2","4":"Alt3","a lt3":"Alt3","5":"Svar2","answer":"Svar2"}];

</script>


Kanske det är helt rätt som det blir men då kanske jag inte vet exakt hur jag skulle lyckas skriva ut vektorn på sidan eller hur man kan använda alert för att visa ett element i vektorn.
Citera
2016-04-12, 22:36
  #9
Medlem
Du skulle kanske kunna använda dig av JSON.parse
JSON.parse('{}'); // {}
JSON.parse('true'); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse('null'); // null

https://developer.mozilla.org/en/doc...cts/JSON/parse

Med det exempelt får du en array med 2 objekt.

[
{
"0":"1",
"question_id":"1",
"1":"question1",
"questi on":"question1",
"2":"Alt1",
"alt1":"Alt1",
"3":"Alt2 ",
"alt2":"Alt2",
"4":"Alt3",
"alt3":"Alt3",
"5":"Svar 1",
"answer":"Svar1"
},
{
"0":"2",
"question_id":"2",
"1 ":"question2",
"question":"question2",
"2":"Alt1",
"a lt1":"Alt1",
"3":"Alt2",
"alt2":"Alt2",
"4":"Alt3",
"a lt3":"Alt3",
"5":"Svar2",
"answer":"Svar2"
}
]

Du kan sedan ta ut ett visst värde med till exempel arr[0].question

Det verkar som om du använder mysqli_fetch_array vilket inte är så bra eftersom du får resultatet både som en numerisk och associativ array. Du bör använda fetch_row eller fetch_assoc i stället.
Citera
2016-04-12, 23:38
  #10
Medlem
Stort tack allihopa för snabba svar och viljan att hjälpa till och för tipsen. Jag får ta och läsa på lite av de tips ni gett och så får jag försöka igen.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback