Μεταβλητές από js αρχείο σε php

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
burzum
Δημοσιεύσεις: 7
Εγγραφή: 01 Ιουν 2016 20:59

Μεταβλητές από js αρχείο σε php

Δημοσίευση από burzum » 12 Ιούλ 2016 16:58

Καλησπέρα σας,
Ας υποθέσουμε ότι έχουμε τα εξής αρχεία: index.php, save.js και save.php
Το index.php έχει μία μεταβλητή της οποίας την τιμή προωθεί στο save.js.
To save.js κρατάει την τιμή από την προηγούμενη μεταβλητή και δίνει τιμή σε άλλη μία.

Το save.php θέλω να δείξει αποτελέσματα από ένα query το οποίο εξαρτάται από τις δυο προηγούμενες μεταβλητές.
Πως μπορώ να περάσω τις τιμές από αυτές τις 2 μεταβλητές στο save.php?
Μέχρι το save.js είμαι ΟΚ (με alert βλέπω τις τιμές και των 2 μεταβλητών) αλλά δεν μπορώ να τις περάσω στο save.php για να εκτελέσω το query.

Όποιος μπορεί ας με βοηθήσει γιατί έχω κολλήσει μέρες με αυτό.

Σας ευχαριστώ προκαταβολικά.

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

Μεταβλητές από js αρχείο σε php

Δημοσίευση από alou » 12 Ιούλ 2016 17:22

Θα έπρεπε να δείξεις κάτι πιο συγκεκριμένο αλλά έστω και έτσι, το πιο απλό πράγμα που μπορείς να κάνεις είναι να στείλεις τις μεταβλητές στο url και να τις πάρεις με get στο save.php

Έστω ότι οι μεταβλητές σου υπάρχουν σε javascript σαν foo, bar

Κώδικας: Επιλογή όλων

var foo = "yey", bar = "nay";
var url = 'path/to/save.php?var1=' + foo + '&var2=' + bar;
window.location = url;
θα σε πάει εκτελώντας το στο someurl/save.php?var1=yay&var2=nay

Εκεί, θα πάρεις τις τιμές yay, nay στην php από GET
http://php.net/manual/en/reserved.variables.get.php

Κώδικας: Επιλογή όλων

$foo = $_GET["foo"]; //yay
$bar = $_GET["bar"]; //nay

burzum
Δημοσιεύσεις: 7
Εγγραφή: 01 Ιουν 2016 20:59

Μεταβλητές από js αρχείο σε php

Δημοσίευση από burzum » 12 Ιούλ 2016 19:55

Ευχαριστώ ΠΑΡΑ πολύ για την απάντηση. Λειτουργεί άψογα, τουλάχιστον σύμφωνα με το παράδειγμα που ανέφερα.

Έχω όμως ένα πρόβλημα το οποίο δεν θα είχε δημιουργηθεί αν ήμουν πιο συγκεκριμένος.

Η μία μεταβλητή είναι όντως το id το οποίο θα χρησιμοποιήσω για mysql query.
Η δεύτερη μεταβλητή "κουβαλάει" μπόλικη πληροφορία γιατί είναι από canvas.toDataURL() και δεν μπορώ να την πάρω με GET στο php αρχείο (Request-URI Too Long).
Αν καταφέρω να το περάσω με κάποιο τρόπο στο php ξέρω/μπορώ να το διαχειριστώ με διάφορους τρόπους.

Το θέμα είναι ότι με GET δεν περνάει.

burzum
Δημοσιεύσεις: 7
Εγγραφή: 01 Ιουν 2016 20:59

Μεταβλητές από js αρχείο σε php

Δημοσίευση από burzum » 12 Ιούλ 2016 20:50

burzum έγραψε:Ευχαριστώ ΠΑΡΑ πολύ για την απάντηση. Λειτουργεί άψογα, τουλάχιστον σύμφωνα με το παράδειγμα που ανέφερα.

Έχω όμως ένα πρόβλημα το οποίο δεν θα είχε δημιουργηθεί αν ήμουν πιο συγκεκριμένος.

Η μία μεταβλητή είναι όντως το id το οποίο θα χρησιμοποιήσω για mysql query.
Η δεύτερη μεταβλητή "κουβαλάει" μπόλικη πληροφορία γιατί είναι από canvas.toDataURL() και δεν μπορώ να την πάρω με GET στο php αρχείο (Request-URI Too Long).
Αν καταφέρω να το περάσω με κάποιο τρόπο στο php ξέρω/μπορώ να το διαχειριστώ με διάφορους τρόπους.

Το θέμα είναι ότι με GET δεν περνάει.

Έκανα/βρήκα το παρακάτω:

Κώδικας: Επιλογή όλων

var id = test;
var img = canvas.toDataURL();
$.ajax({
type: "POST",
url: 'save.php',
data: {someid: id, image: img},
});
Στο save.php παίρνω με POST αυτές τις τιμές και προσπαθώ να τις κάνω echo αλλά δεν μου εμφανίζει τίποτα (δεν ανοίγει καν το save.php για να δω τι τιμές έχουν περάσει εκεί).

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Μεταβλητές από js αρχείο σε php

Δημοσίευση από korgr » 12 Ιούλ 2016 21:00

Κώδικας: Επιλογή όλων

var id = test;
var img = canvas.toDataURL();
$.ajax({
type: "POST",
url: 'save.php',
data: {someid: id, image: img},
success: function(response){
console.log(response);
}
});
στο save.php βάλε:

Κώδικας: Επιλογή όλων

var_dump($_POST['someid']);
var_dump($_POST['image']);
και θα τα δεις στην κονσόλα της javascript
Αν δεν ξέρεις πως να ανοίξεις την κονσόλα:
δεξί κλικ στη σελίδα σου -> Inspect element και μετά στο tab Console

burzum
Δημοσιεύσεις: 7
Εγγραφή: 01 Ιουν 2016 20:59

Μεταβλητές από js αρχείο σε php

Δημοσίευση από burzum » 12 Ιούλ 2016 21:15

Ωραία...στην κονσόλα βλέπω τις τιμές των μεταβλητών.
Επίσης άλλαξα το save.php έτσι ώστε να δημιουργεί ένα txt αρχείο στο οποίο γράφει αυτές τις μεταβλητές και τις βλέπω και εκεί.

Πως όμως θα ανοίξω το save.php ώστε να προχωρήσω σε άλλες ενέργειες σύμφωνα με αυτές τις μεταβλητές.
Ο λόγος που θέλω οι μεταβλητές να περάσουν στο τελευταίο php αρχείο είναι γιατί εκεί ο χρήστης συμπληρώνει μία φόρμα. Στο τέλος θα πατάει κάποιο submit και θα τα περνάει όλα μαζί σε κάποιον πίνακα στη βάση.

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

Μεταβλητές από js αρχείο σε php

Δημοσίευση από alou » 12 Ιούλ 2016 22:14

Μας έχεις μπερδέψει λίγο, δείξε τον κανονικό κώδικα με κάποιο παράδειγμα που θες να στείλεις, αυτό που λες πάντως σημαίνει ότι κάνεις κανονικό post τις τιμές στο url του save.php, η ajax δεν έχει κάποιο λόγο ύπαρξης.

Εκτός αν γράψεις κάπου πρώτα τα canvas data και μετά τα πάρεις από εκεί, αλλά δεν βρίσκω τον λόγο.

burzum
Δημοσιεύσεις: 7
Εγγραφή: 01 Ιουν 2016 20:59

Μεταβλητές από js αρχείο σε php

Δημοσίευση από burzum » 13 Ιούλ 2016 14:55

Το index.php

Κώδικας: Επιλογή όλων

<?php
$selected_id = $_GET&#91;'id'&#93;; //Το περνάω εδώ για να καταλήξει στο τελικό php μέσω του save.js
?>
<html>
<head>
	<title>Canvas</title>
	<link rel="stylesheet" href="css_js/bodyChart.css">
	<script type="text/javascript">var testVar = "<?= $selected_id ?>";</script>
	<script type="text/javascript" src="save.js"></script>
	<script type="text/javascript" src="//code.jquery.com/jquery-2.1.0.min.js"></script>
</head>
<body style='margin&#58; 0'>
	<div id="toolbar">
	<input id="patID" type="text" value="<?php echo $selected_id ?>"></input>
		<div id="rad">
			Radius <span id="radval">10</span>
			<div id="decrad" class="radcontrol">-</div>
			<div id="incrad" class="radcontrol">+</div>
		</div>
		<div id="colors">
		</div>
		<div id="save">
			Save
		</div>
	</div>
	<canvas id="canvas" style="display&#58; block;">
		This browser does not support canvas!!!
	</canvas>
	<script src="css_js/main.js"></script>
	<script src="css_js/radcontrol.js"></script>
	<script src="css_js/colors.js"></script>
	<script src="css_js/save.js"></script>
</body>
</html>
To save.js

Κώδικας: Επιλογή όλων

var saveButton = document.getElementById&#40;'save'&#41;;
saveButton.addEventListener&#40;'click', getValue&#41;;

function getValue&#40;&#41; &#123;
	var id = testVar;
	var bodyChart = canvas.toDataURL&#40;&#41;;
	alert&#40;"ID from php file&#58; " + id + bodyChart&#41;;
	
	$.ajax&#40;&#123;
        type&#58; "POST",
        url&#58; './save.php',
        data&#58; &#123;patientID&#58; id, image&#58; bodyChart&#125;,
		success&#58; function&#40;response&#41; &#123;
			console.log&#40;response&#41;;
		&#125;
    &#125;&#41;;
&#125;
To save.php

Κώδικας: Επιλογή όλων

<?php 
if &#40;isset&#40;$_POST&#91;'patientID'&#93;&#41; && isset&#40;$_POST&#91;'image'&#93;&#41;&#41; &#123;
	$x = $_POST&#91;'patientID'&#93;;
    echo "The variable received to the final php file is " . $x;
	$data = $_POST&#91;'image'&#93;;

	$data = str_replace&#40;'data&#58;image/png;base64,', '', $data&#41;;
	$data = str_replace&#40;' ', '+', $data&#41;;

	$img = base64_decode&#40;$data&#41;;

	$path = 'bodyChartImages/' . uniqid&#40;&#41; . '.png';
	
	echo $path;

	if&#40;file_put_contents&#40;$path, $img&#41;&#41;&#123;//Εδώ γραφω σε ένα txt για να επιβεβαιώσω ότι οι μεταβλητές περνάνε σωστά
		$myfile = fopen&#40;"newfile.txt", "w"&#41; or die &#40;"Unable to open file!"&#41;;
		$txt = $path . "\n" . $x;
		fwrite&#40;$myfile, $txt&#41;;
		fclose&#40;$myfile&#41;;
	&#125; else &#123;
		header&#40;"HTTP/1.1 500 Internal Server Error"&#41;;
	&#125;	
&#125; else &#123;
	echo 'no variable received';
&#125;
?>
Γενικότερα και μέχρι ένα σημείο λειτουργεί σωστά. Ο χρήστης ζωγραφίζει και όταν πατάει save στο index.php το image σώνεται στο φάκελο που αναφέρεται στο save.php.

Αυτό είναι το αρχικό σημείο της εφαρμογής. Αφού πατηθεί το save, θέλω ο χρήστης να μπορεί να συνεχίσει σε ένα άλλο php αρχείο στο οποίο θα σημπληρώνει μία φόρμα.
Αφού συμπληρωθεί και η φόρμα, με το submit θα περνάνε στη βάση όλα τα δεδομένα που πρόσθεσε ο χρήστης εκεί ΚΑΙ το path για το image που δημιουργήθηκε καθώς και το id του χρήστη που το δημιούργησε (τo id έρχεται από το πρώτο php αρχείο).

Το πρόβλημά μου είναι ότι ενώ καταφέρνω να περάσω τις μεταβλητές στο τελικό save.php και να σώσω το image στο σχετικό φάκελο, δεν μπορώ να το ανοίξω για να συνεχίσω με κάποια φόρμα. Δεν μου δείχνει ούτε αυτά που του λέω να κάνει echo (ενώ οι μεταβλητές έχουν περάσει σωστά - επιβεβαιώνεται και από το .txt το οποίο γράφεται από το save.php).
Δεν ξέρω τι κάνω λάθος.
Το δούλευα όλο το βράδυ για να το φτάσω σε αυτό το σημείο.

burzum
Δημοσιεύσεις: 7
Εγγραφή: 01 Ιουν 2016 20:59

Μεταβλητές από js αρχείο σε php

Δημοσίευση από burzum » 13 Ιούλ 2016 15:20

Αυτό που θέλω να καταφέρω είναι απλά να προβάλω στο browser αυτές τις δύο μεταβλητές και από 'κεί και πέρα θα καταφέρω να τις δουλέψω.
Με λίγα λόγια αν μπορείτε υποδείξτε μου πως θα καταφέρω με το save που πατάει ο χρήστης να ανοίγει το save.php στο browser για να μπορώ να δώ αυτά που έχω κάνει echo.

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες