ik heb een javascript die resultaten haalt uit een database zodat je keuzes krijgt als je het formulier aan het invullen bent
nu wil ik een javascript variable omzetten naar een php variable zodat ik meet gegevens uit de database kan halen
iemand een idee hoe ik dit kan doen zonder de pagina te vernieuwen..
ik had al iets gevonden maar wil tot nu toe niet echt werken
This worked for me.
I didnt wanna do a page refresh.
I wanted to pass the value of a JS variable to a php function on the same page without having a page refresh or calling a 2nd php script
<script type='text/javascript'>
<?php $abc ?> = document.write(document.getElementById('report_nam e').value ); <?php ;?>;
</script>
<?php $obj1->getItem( $abc); ?>
$abc is the variable in which i get the JS variable value.
JS variable value is read using "document.getElementById"
I then pass the value of $abc in a php function as:-
<?php $obj1->getItem( $abc); ?>
Javascript is een client-side scripting-taal. PHP is server-side. Dit betekent dat wanneer je een pagina opvraagt op de server, deze pagina wordt gegenereerd door de PHP parser. Het resultaat hiervan wordt vervolgens naar de browser gestuurd. In de browser wordt de javascript uitgevoerd. Andersom kan niet. De enige manier om een waarde mee te geven aan PHP is door een AJAX-request te doen naar een PHP-bestand met bijvoorbeeld die waarde in de querystring. Deze waarde zou je vervolgens (onder water) in een sessie of een database kunnen zetten.
Op zich heb ik de waardes al opgehaald heb alleen geen idee hoe ik ze in mijn formulier krijg
rpc.php
<?php
// PHP5 Implementation - uses MySQLi.
// mysqli('localhost', 'yourUsername', 'yourPassword', 'yourDatabase');
$db = new mysqli('localhost', 'User' ,'pass', 'db');
if(!$db) {
// Show error if we cannot connect.
echo 'ERROR: Could not connect to the database.';
} else {
// Is there a posted query string?
if(isset($_POST['queryString'])) {
$queryString = $db->real_escape_string($_POST['queryString']);
// Is the string length greater than 0?
if(strlen($queryString) >0) {
// Run the query: We use LIKE '$queryString%'
// The percentage sign is a wild-card, in my example of countries it works like this...
// $queryString = 'Uni';
// Returned data = 'United States, United Kindom';
// YOU NEED TO ALTER THE QUERY TO MATCH YOUR DATABASE.
// eg: SELECT yourColumnName FROM yourTable WHERE yourColumnName LIKE '$queryString%' LIMIT 10
$query = $db->query("SELECT * FROM HWS_Orders WHERE opdrachtgever LIKE '$queryString%' GROUP BY opdrachtgever DESC");
if($query) {
// While there are results loop through them - fetching an Object (i like PHP5 btw!).
while ($result = $query ->fetch_object()) {
// Format the results, im using <li> for the list, you can change it.
// The onClick function fills the textbox with the result.
// YOU MUST CHANGE: $result->value to $result->your_colum
echo '<li onClick="fill(\''.$result->opdrachtgever.'\');">'.$result->opdrachtgever.'</li>';
$adres = "$result->adres1";
}
} else {
echo 'ERROR: There was a problem with the query.';
}
} else {
// Dont do anything.
} // There is a queryString.
} else {
echo 'There should be no direct access to this script!';
}
}
?>
ik ben inmiddels een stap verder alleen heb ik nu een probleem met het selecteren van de laatste rij in de database
Als ik een opdrachtgever aan klik pakt hij altijd de eerste ingevoegde rij terwijl ik wil dat hij de laatste rij pakt aangezien de adres gegevens zijn gewijzigd
het maakt niet uit of ik asc of desc gebruik hij blijft de eerste rij uit de database gebruiken
iemand een idee hoe ik dit kan oplossen
<?php
// PHP5 Implementation - uses MySQLi.
// mysqli('localhost', 'yourUsername', 'yourPassword', 'yourDatabase');
$db = new mysqli('localhost', 'user' ,'pass', 'db');
if(!$db) {
// Show error if we cannot connect.
echo 'ERROR: Could not connect to the database.';
} else {
// Is there a posted query string?
if(isset($_POST['queryString'])) {
$queryString = $db->real_escape_string($_POST['queryString']);
// Is the string length greater than 0?
if(strlen($queryString) >0) {
// Run the query: We use LIKE '$queryString%'
// The percentage sign is a wild-card, in my example of countries it works like this...
// $queryString = 'Uni';
// Returned data = 'United States, United Kindom';
// YOU NEED TO ALTER THE QUERY TO MATCH YOUR DATABASE.
// eg: SELECT yourColumnName FROM yourTable WHERE yourColumnName LIKE '$queryString%' LIMIT 10
$query = $db->query("SELECT * FROM HWS_Orders WHERE opdrachtgever LIKE '$queryString%' GROUP BY opdrachtgever ORDER BY id DESC LIMIT 8");
if($query) {
// While there are results loop through them - fetching an Object (i like PHP5 btw!).
while ($result = $query ->fetch_object()) {
// Format the results, im using <li> for the list, you can change it.
// The onClick function fills the textbox with the result.
// YOU MUST CHANGE: $result->value to $result->your_colum
echo '<li onClick="fill(\''.$result->opdrachtgever.'|'.$result->adres1.'|'.$result->postcode1.'|'.$result->plaats1.'|'.$result->land1.'|'.$result->tel1.'|'.$result->contact1.'|'.$result->email.'\');">'.$result->opdrachtgever.'</li>';
}
} else {
echo 'ERROR: There was a problem with the query.';
}
} else {
// Dont do anything.
} // There is a queryString.
} else {
echo 'There should be no direct access to this script!';
}
}
?>
Zolang de id AUTO_INCREMENT is, moet ORDER BY id DESC gewoon altijd beginnen bij laatst toegevoegde rijen. De fout zal ergens anders moeten zitten lijkt me. (Correct me if i'm wrong)
Dan laat hij maar 1 opdrachtgever zien terwijl je een keuze zou kunnen moeten maken uit een van de opdrachtgevers dus als je de L intikt laat hij alle opdrachtgevers zien dien beginnen met een L
Maar volgens mij heb ik een oplossing gevonden
$query = $db->query("SELECT * FROM (SELECT * FROM HWS_Orders WHERE opdrachtgever LIKE '$queryString%' ORDER BY id DESC) AS s GROUP BY opdrachtgever LIMIT 8");