Make dependant inputs in the 'State' -> 'City' -> 'Municipality' way in Laravel 5.7












0















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).



enter image description here



enter image description here










share|improve this question


















  • 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
















0















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).



enter image description here



enter image description here










share|improve this question


















  • 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














0












0








0








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).



enter image description here



enter image description here










share|improve this question














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).



enter image description here



enter image description here







javascript php mysql laravel






share|improve this question













share|improve this question











share|improve this question




share|improve this question










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














  • 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












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
});


}
});














draft saved

draft discarded


















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
















draft saved

draft discarded




















































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.




draft saved


draft discarded














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





















































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







這個網誌中的熱門文章

Academy of Television Arts & Sciences

L'Équipe

1995 France bombings