Formular inregistrare cu 2 adrese de livrare in aceeasi db

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
dim
Mesaje: 61

Formular inregistrare cu 2 adrese de livrare in aceeasi db

Buna dimineata.

Revin cu o noua provocare.
1.De data asta am o db in care am urmatoarele campuri :
utilizator id, Nume , prenume, telefon,companie, cui, cif, adresa , tara , oras;
2.am doua pagini una de inregistrare si una de adauga adresa noua ambele sunt ok si imi adauga date in baza de date.

Problema a aparut in momentul in care am pus un nou tabel in pagina de inregistrare in cazul in care ai alta adresa de livrare sa poti sa mai introduci un rand in bd in care sa apara noile valori :Nume , prenume, telefon, adresa , tara , oras; dar restul campurilor : utilizator id,companie, cui, cif, sa fie aceleasi ca in primul formular.

Cod: Selectaţi tot

{% if shipping_required %}
<div class="checkbox">
  <label>
    <input type="checkbox" id="shipping_address" name="shipping_address" value="1" checked="checked" />
    {{ entry_shipping }}</label>
</div>
{% endif %}

     <div id="adresa_livrare" class="tab_adresa_livrare">
	 <div class=" col-sm-6  margine_dreapta">
	 <fieldset id="account" class= "width_xs">
	    <legend>{{ text_contact_details}}</legend>
		<div class="col-sm-6 form-group required margine_drepta">
             <label class="control-label" for="input-payment-firstname">{{ entry_firstname }}</label>
             <input type="text" name="firstname" value="" placeholder="{{ entry_firstname }}" id="input-payment-firstname" class="form-control" />
        </div>
		<div class=" col-sm-6 form-group required margine_stanga">
              <label class="control-label" for="input-payment-lastname">{{ entry_lastname }}</label>
              <input type="text" name="lastname" value="" placeholder="{{ entry_lastname }}" id="input-payment-lastname" class="form-control" />
        </div>
		<div class="form-group required">
               <label class="control-label" for="input-payment-telephone">{{ entry_telephone }}</label>
               <input type="text" name="telephone" value="" placeholder="{{ entry_telephone }}" id="input-payment-telephone" class="form-control" />
        </div>
        <div class="form-group required">
                    <label class="control-label" for="input-payment-address-1">{{ entry_address_1 }}</label>
                    <input type="text" name="address_1" value="" placeholder="{{ entry_address_1 }}" id="input-payment-address-1" class="form-control" />
                </div>
                <div class="form-group required">
                     <label class="control-label" for="input-payment-country">{{ entry_country }}</label>
                     <select name="country_id" id="input-payment-country" class="form-control">
                     <option value="">{{ text_select }}</option>
                     {% for country in countries %}
                         {% if country.country_id == country_id %}
                         <option value="{{ country.country_id }}" selected="selected">{{ country.name }}</option>
                         {% else %}  
                         <option value="{{ country.country_id }}">{{ country.name }}</option>
                         {% endif %}
                      {% endfor %}
                      </select>	
                 </div>
                 <div class="col-sm-6 form-group required margine_drepta">
                      <label class="control-label" for="input-payment-zone">{{ entry_zone }}</label>
                      <select name="zone_id" id="input-payment-zone" class="form-control"></select>
                 </div>
	             <div class="col-sm-6 form-group required margine_stanga">
                       <label class="control-label" for="input-payment-city">{{ entry_city }}</label>
                       <input type="text" name="city" value="" placeholder="{{ entry_city }}" id="input-payment-city" class="form-control" />
                 </div>
			 </div>	 
     </fieldset>
	 </div></div>
nu stiu ce comanda sa dau in php pt acest lucru pt ca in momentu asta daca introduc datele in formular in bd ,in loc sa imi puna 2 randuri cu valorile din ambele formulare imi pune doar un rand cu valorile din ultimul tabel.

Multumesc anticipat pt ajutor

MarPlo Mesaje: 4343
Problema e la afisarea datelor din bd sau la adaugarea lor?
Daca e la partea de preluare din pagina si adaugare in bd, trebuie modificari in codul php in functie de cum sunt trimise cele doua formulare, care trebuie transmise cu valorile intr-un array.
Campurile de formular sa aiba id-uri diferite si valoarea de la atributul "name" ca pentru array (cu []), de exemplu:

Cod: Selectaţi tot

<input type="text" name="city[]" value="">
Iar in php se preiau valorile cu:

Cod: Selectaţi tot

$_POST['city'][0]; $_POST['city'][1];

dim Mesaje: 61
la adaugarea datelor in db am problema

Cod: Selectaţi tot

addAddress($customer_id, $data) {
		$this->db->query("INSERT INTO " . DB_PREFIX . "address SET customer_id = '" . (int)$customer_id . "',      status = '" . $this->db->escape($data['status']) . "',
		 firstname = '" . $this->db->escape($data['firstname']) . "',
		 lastname = '" . $this->db->escape($data['lastname']) . "',
		 company = '" . $this->db->escape($data['company']) . "', 
		 address_1 = '" . $this->db->escape($data['address_1']) . "', address_2 = '" . $this->db->escape($data['address_2']) . "', postcode = '" . $this->db->escape($data['postcode']) . "', city = '" . $this->db->escape($data['city']) . "', zone_id = '" . (int)$data['zone_id'] . "', country_id = '" . (int)$data['country_id'] . "', custom_field = '" . $this->db->escape(isset($data['custom_field']['address']) ? json_encode($data['custom_field']['address']) : '') . "'");
asa am adaugat in baza de date

Cod: Selectaţi tot

<input type="text" name="city[]" value="">
parantezele de la nume le pun in ambele formulare sau doar in primul ??
iar la cele care nu doresc sa fie modificate le las fara ??

MarPlo Mesaje: 4343
Problema e cam complicata fiindca nici codul php nici html nu sunt facute pentru ceea ce vrei.
Parantezele patrate se pun la ambele formulare.
Apoi, in php, ca sa stii cum sa preiei datele transmise faci intai o verificare cu:

Cod: Selectaţi tot

echo '<pre>'; var_export($_POST);
Vezi cum e structura datelor primite, iar pe baza ei faci codul php cum sa le preia si sa le pui la adaugare in baza de date.

dim Mesaje: 61
am rezolvat problema cu o a doua functi de inrefistrare in baza de date

Cod: Selectaţi tot

addAddress_nou($customer_id, $data) {
		$this->db->query("INSERT INTO " . DB_PREFIX . "address SET customer_id = '" . (int)$customer_id . "',   
		 firstname = '" . $this->db->escape($data['firstname_nou']) . "',
		 lastname = '" . $this->db->escape($data['lastname_nou']) . "',
doar cu rubricile care ma interesau
ma gandeam ca sa fac asta cu ceva mai simplu

as mai avea o intrebare
1.am doua rubrici in formular nume si prenume
2. in baza de date ma o coloana nume/prenume
as vrea ca valaorea celor doua rubrici sa se duca in db intr-o sinhura coloana
am incercat asta da nu merge

Cod: Selectaţi tot

 firstname/lastname = '" . $this->db->escape($data['firstname_nou']['firstname_nou']) . "',

MarPlo Mesaje: 4343
Contine ceva variabila asta din codul tau:

Cod: Selectaţi tot

$data['firstname_nou']['firstname_nou']
Daca am inteles bine ca numele coloanei din tabel este exact: firstname/lastname, si vrei sa adaugi numele si prenumele impreuna in ea dupa acelasi model, incearca asa:

Cod: Selectaţi tot

"... `firstname/lastname`='". $this->db->escape($data['firstname_nou']).'/'.$this->db->escape($data['lastname_nou'])."'";

Subiecte similare