Make dependant inputs in the 'State' -> 'City' -> 'Municipality' way in Laravel 5.7
I'm trying to make a form that contains 3 inputs. The first one should let the user select a state. Now, based on that selection (selection of input 1), the second input should load data from a DB table that has a relationship with the selected state, and the third input doing the same but in relation of the second input selection.
I have no idea how to do it, though I've tried this way:
My view: (it's all wrong here, I guess the magic happens on the controller).
<div id="inputs-estado">
<div class="form-group">
{{-- Estados --}}
<label for="">Estado</label>
<select name="direccion" id="forma-estado" class="form-control dynamic" data-dependant="state">
@foreach ($estados as $estado)
<option value="{{ $estado->state }}">{{ $estado->state }}</option>
@endforeach
</select>
<br>
{{-- Municipio/Delegación --}}
<label for="">Ciudad</label>
<select name="direccion" id="form-ciudad" class="form-control dynamic" data-dependant="city">
@foreach ($estados as $estado)
<option value="{{ $estado->state }}">{{ $estado->state }}</option>
@endforeach
</select>
<br>
{{-- Colonia --}}
<label for="">Municipio</label>
<select name="direccion" id="form-municipio" class="form-control dynamic" data-dependant="municipality">
<option value="">Selecciona el municipio</option>
</select>
</div>
</div>
My controller:
public function fetch(Request $request)
{
$state_id = DB::connection('db_postalcodes')->table('city')->get();
$select = $request->get('select');
$value = $request->get('value');
$dependent = $request->get('dependent');
$data = DB::connection('db_postalcodes')
->table('city')
->where($select, $state_id->state_id)
->groupBy($dependent)
->get();
$output = '<option value="">Select ' . ucfirst($dependent) . '</option>';
foreach ($data as $row) {
$output .= '<option value="' . $row->$dependent . '">' . $row->$dependent . '</option>';
}
echo $output;
}
Also, I've got multiple tables with the data stored. So I guess I need to use some relationship functions in Laravel (but I don't know).


javascript php mysql laravel
add a comment |
I'm trying to make a form that contains 3 inputs. The first one should let the user select a state. Now, based on that selection (selection of input 1), the second input should load data from a DB table that has a relationship with the selected state, and the third input doing the same but in relation of the second input selection.
I have no idea how to do it, though I've tried this way:
My view: (it's all wrong here, I guess the magic happens on the controller).
<div id="inputs-estado">
<div class="form-group">
{{-- Estados --}}
<label for="">Estado</label>
<select name="direccion" id="forma-estado" class="form-control dynamic" data-dependant="state">
@foreach ($estados as $estado)
<option value="{{ $estado->state }}">{{ $estado->state }}</option>
@endforeach
</select>
<br>
{{-- Municipio/Delegación --}}
<label for="">Ciudad</label>
<select name="direccion" id="form-ciudad" class="form-control dynamic" data-dependant="city">
@foreach ($estados as $estado)
<option value="{{ $estado->state }}">{{ $estado->state }}</option>
@endforeach
</select>
<br>
{{-- Colonia --}}
<label for="">Municipio</label>
<select name="direccion" id="form-municipio" class="form-control dynamic" data-dependant="municipality">
<option value="">Selecciona el municipio</option>
</select>
</div>
</div>
My controller:
public function fetch(Request $request)
{
$state_id = DB::connection('db_postalcodes')->table('city')->get();
$select = $request->get('select');
$value = $request->get('value');
$dependent = $request->get('dependent');
$data = DB::connection('db_postalcodes')
->table('city')
->where($select, $state_id->state_id)
->groupBy($dependent)
->get();
$output = '<option value="">Select ' . ucfirst($dependent) . '</option>';
foreach ($data as $row) {
$output .= '<option value="' . $row->$dependent . '">' . $row->$dependent . '</option>';
}
echo $output;
}
Also, I've got multiple tables with the data stored. So I guess I need to use some relationship functions in Laravel (but I don't know).


javascript php mysql laravel
1
You'll need to use ajax to pass the selected value back to the server in order to get the information for the next step.
– aynber
Nov 20 '18 at 18:34
1
And you should not have HTML in your controller code. It should be outputting data to be worked with by the view.
– miken32
Nov 20 '18 at 18:35
1
I advice you to use laravel.com/docs/5.7/eloquent instead of raws queries.
– loic.lopez
Nov 20 '18 at 18:47
add a comment |
I'm trying to make a form that contains 3 inputs. The first one should let the user select a state. Now, based on that selection (selection of input 1), the second input should load data from a DB table that has a relationship with the selected state, and the third input doing the same but in relation of the second input selection.
I have no idea how to do it, though I've tried this way:
My view: (it's all wrong here, I guess the magic happens on the controller).
<div id="inputs-estado">
<div class="form-group">
{{-- Estados --}}
<label for="">Estado</label>
<select name="direccion" id="forma-estado" class="form-control dynamic" data-dependant="state">
@foreach ($estados as $estado)
<option value="{{ $estado->state }}">{{ $estado->state }}</option>
@endforeach
</select>
<br>
{{-- Municipio/Delegación --}}
<label for="">Ciudad</label>
<select name="direccion" id="form-ciudad" class="form-control dynamic" data-dependant="city">
@foreach ($estados as $estado)
<option value="{{ $estado->state }}">{{ $estado->state }}</option>
@endforeach
</select>
<br>
{{-- Colonia --}}
<label for="">Municipio</label>
<select name="direccion" id="form-municipio" class="form-control dynamic" data-dependant="municipality">
<option value="">Selecciona el municipio</option>
</select>
</div>
</div>
My controller:
public function fetch(Request $request)
{
$state_id = DB::connection('db_postalcodes')->table('city')->get();
$select = $request->get('select');
$value = $request->get('value');
$dependent = $request->get('dependent');
$data = DB::connection('db_postalcodes')
->table('city')
->where($select, $state_id->state_id)
->groupBy($dependent)
->get();
$output = '<option value="">Select ' . ucfirst($dependent) . '</option>';
foreach ($data as $row) {
$output .= '<option value="' . $row->$dependent . '">' . $row->$dependent . '</option>';
}
echo $output;
}
Also, I've got multiple tables with the data stored. So I guess I need to use some relationship functions in Laravel (but I don't know).


javascript php mysql laravel
I'm trying to make a form that contains 3 inputs. The first one should let the user select a state. Now, based on that selection (selection of input 1), the second input should load data from a DB table that has a relationship with the selected state, and the third input doing the same but in relation of the second input selection.
I have no idea how to do it, though I've tried this way:
My view: (it's all wrong here, I guess the magic happens on the controller).
<div id="inputs-estado">
<div class="form-group">
{{-- Estados --}}
<label for="">Estado</label>
<select name="direccion" id="forma-estado" class="form-control dynamic" data-dependant="state">
@foreach ($estados as $estado)
<option value="{{ $estado->state }}">{{ $estado->state }}</option>
@endforeach
</select>
<br>
{{-- Municipio/Delegación --}}
<label for="">Ciudad</label>
<select name="direccion" id="form-ciudad" class="form-control dynamic" data-dependant="city">
@foreach ($estados as $estado)
<option value="{{ $estado->state }}">{{ $estado->state }}</option>
@endforeach
</select>
<br>
{{-- Colonia --}}
<label for="">Municipio</label>
<select name="direccion" id="form-municipio" class="form-control dynamic" data-dependant="municipality">
<option value="">Selecciona el municipio</option>
</select>
</div>
</div>
My controller:
public function fetch(Request $request)
{
$state_id = DB::connection('db_postalcodes')->table('city')->get();
$select = $request->get('select');
$value = $request->get('value');
$dependent = $request->get('dependent');
$data = DB::connection('db_postalcodes')
->table('city')
->where($select, $state_id->state_id)
->groupBy($dependent)
->get();
$output = '<option value="">Select ' . ucfirst($dependent) . '</option>';
foreach ($data as $row) {
$output .= '<option value="' . $row->$dependent . '">' . $row->$dependent . '</option>';
}
echo $output;
}
Also, I've got multiple tables with the data stored. So I guess I need to use some relationship functions in Laravel (but I don't know).


javascript php mysql laravel
javascript php mysql laravel
asked Nov 20 '18 at 18:26
dawndawn
3361518
3361518
1
You'll need to use ajax to pass the selected value back to the server in order to get the information for the next step.
– aynber
Nov 20 '18 at 18:34
1
And you should not have HTML in your controller code. It should be outputting data to be worked with by the view.
– miken32
Nov 20 '18 at 18:35
1
I advice you to use laravel.com/docs/5.7/eloquent instead of raws queries.
– loic.lopez
Nov 20 '18 at 18:47
add a comment |
1
You'll need to use ajax to pass the selected value back to the server in order to get the information for the next step.
– aynber
Nov 20 '18 at 18:34
1
And you should not have HTML in your controller code. It should be outputting data to be worked with by the view.
– miken32
Nov 20 '18 at 18:35
1
I advice you to use laravel.com/docs/5.7/eloquent instead of raws queries.
– loic.lopez
Nov 20 '18 at 18:47
1
1
You'll need to use ajax to pass the selected value back to the server in order to get the information for the next step.
– aynber
Nov 20 '18 at 18:34
You'll need to use ajax to pass the selected value back to the server in order to get the information for the next step.
– aynber
Nov 20 '18 at 18:34
1
1
And you should not have HTML in your controller code. It should be outputting data to be worked with by the view.
– miken32
Nov 20 '18 at 18:35
And you should not have HTML in your controller code. It should be outputting data to be worked with by the view.
– miken32
Nov 20 '18 at 18:35
1
1
I advice you to use laravel.com/docs/5.7/eloquent instead of raws queries.
– loic.lopez
Nov 20 '18 at 18:47
I advice you to use laravel.com/docs/5.7/eloquent instead of raws queries.
– loic.lopez
Nov 20 '18 at 18:47
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53399267%2fmake-dependant-inputs-in-the-state-city-municipality-way-in-laravel%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53399267%2fmake-dependant-inputs-in-the-state-city-municipality-way-in-laravel%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
You'll need to use ajax to pass the selected value back to the server in order to get the information for the next step.
– aynber
Nov 20 '18 at 18:34
1
And you should not have HTML in your controller code. It should be outputting data to be worked with by the view.
– miken32
Nov 20 '18 at 18:35
1
I advice you to use laravel.com/docs/5.7/eloquent instead of raws queries.
– loic.lopez
Nov 20 '18 at 18:47