AJAX <-> Baze de date

Discutii legate de AJAX, jQuery, MooTools, Prototype, Dojo, Yahoo! UI Library,script.aculo.us, ExtJS,AngularJS, Backbone.js, Ember.js, KnockoutJS

Moderator: Moderatori

anonym
Average Member
Mesaje: 139
Membru din: Vin Mar 20, 2009 2:31 pm

AJAX <-> Baze de date

Mesajde anonym » Sâm Mar 26, 2011 5:36 pm

Am un "<select></select>", cu valorile din <option> luate din DB, si as vrea ca atunci se selecteaza o categorie, la eventul onchange() sa mai apara un "<select></select>" cu subcategoriile categoriei respective(din primul select). Dupa ce apare si selectul cu subcategoria, tot la eventul onchange sa mai apara un select cu o subcategorie a subcategoriei :) .Aceste categorii/subcategorii sunt luate din baza de date. Sper ca ati inteles ce incerc sa fac.

Adica am asa:


Auto >>
Imobiliare >> -- cand se alege asta o sa apara alt select cu
Inchirieri>>
Vanzari >> --iar apoi alt select cu Garsoniere >>
Apartamente>> etc



Codul este structurat in 3 fisiere:

categ.php

Cod: Selectaţi tot

<?php require_once("includes/db_connection.php"); ?>

<script type="text/javascript">
//AJAX
function showSubcateg1(str)
{
if (str=="")
  {
  document.getElementById("subcateg").innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("subcateg").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","subcateg1.php?s1="+str,true);
xmlhttp.send();
}
</script>

<p  style="margin:20px 0px 30px 20px; font-size:23px;">Alegeti categoria in care va fi adaugat anuntul:</p>
<div style="margin-left:20px;">
<?php

   mysql_select_db("x", $con);
   
   //Selecteaza categoriile
    $c=mysql_query("SELECT * FROM categorii");

echo '<form action="" method="post">
      <select name="categorie" onchange="showSubcateg1(this.value)" multiple="multiple" size="12" style="float:left;">';

while ($r=mysql_fetch_array($c))
{
   //Se afiseaza categoria
   echo '<option value="'.$r['id_categ'].'">'.$r['categorie'].' &gt;&gt;</option>';
}
echo "</select>
   </form>";

?>
</div>


<div id="subcateg" style="float:left; margin-left:10px;margin-top:0px;"><!--Aici se afiseaza formul cu subcategoriile-->

</div><br />




subcateg1.php

Cod: Selectaţi tot

<?php require_once("includes/db_connection.php"); ?>
<script type="text/javascript">
function showSubcateg2(str)
{
if (str=="")
  {
  document.getElementById("subcateg1").innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp2=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp2=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp2.onreadystatechange=function()
  {
  if (xmlhttp2.readyState==4 && xmlhttp2.status==200)
    {
    document.getElementById("subcateg1").innerHTML=xmlhttp2.responseText;
    }
  }
xmlhttp2.open("GET","subcateg2.php?s2="+str,true);
xmlhttp2.send();
}
</script>
<?php
mysql_select_db("x", $con);
$s1=$_GET["s1"];

$result = mysql_query("SELECT * FROM subcateg1 WHERE id_categ = '".$s1."'");

echo '<form action="" method="post" style="float:left">
      <select name="subcateg1" onchange="showSubcateg2(this.value)" multiple="multiple" size="12" style="float:left;">';

while($s1 = mysql_fetch_array($result))
  {
   echo '<option value='.$s1['id_subcateg1'].'>'.$s1['subcateg1'].' &gt;&gt;</option>';
  }
echo '</select></form>';

?>

<div id="subcateg1" style="float:left; margin-left:10px;margin-top:0px; border:1px solid black;width:200px;height:200px;">

</div>



subcateg2.php

Cod: Selectaţi tot

<?php require_once("includes/db_connection.php"); ?>

<?php
mysql_select_db("ax", $con);
$s2=$_GET["s2"];


$result = mysql_query("SELECT * FROM subcateg2 WHERE id_subcateg1 = '".$s2."'");

echo "<form action=\"\" method=\"post\"  style=\"float:left;\">
      <select name=\"subcateg2\" multiple=\"multiple\" size=\"12\" style=\"float:left;\">";

while($sub2 = mysql_fetch_array($result))
  {

   echo "<option value=".$sub2['id_subcateg2'].">".$sub2['subcateg2']." &gt;&gt;</option>";

  }
echo "</select>
   </form>";
?>

<div id="subcateg2" style="float:left; margin-left:10px;margin-top:0px;">

</div>



Dupa ce aleg categoria imi afiseaza subcategoria, dar apoi nu-mi mai afiseaza subcategoria subcategoriei.
Ultima oară modificat Dum Mar 27, 2011 7:27 am de către anonym, modificat 1 dată în total.



Avatar utilizator
teachme
Senior Member
Mesaje: 550
Membru din: Mar Aug 17, 2010 11:52 am

Mesajde teachme » Sâm Mar 26, 2011 5:42 pm

poate pentru ca id-urile sunt la fel la subcategorii.
vad un id=subcateg1.
verifica si query-ul la subactegoria 2 sa selecteze ce vrei tu sa selecteze.

anonym
Average Member
Mesaje: 139
Membru din: Vin Mar 20, 2009 2:31 pm

Mesajde anonym » Dum Mar 27, 2011 7:26 am

Edit:
Nu am copiat bine subcateg2.php :

Cod: Selectaţi tot

<?php require_once("includes/db_connection.php"); ?>

<?php
mysql_select_db("ax", $con);
$s2=$_GET["s2"];


$result = mysql_query("SELECT * FROM subcateg2 WHERE id_subcateg1 = '".$s2."'");

echo "<form action=\"\" method=\"post\"  style=\"float:left;\">
      <select name=\"subcateg2\" multiple=\"multiple\" size=\"12\" style=\"float:left;\">";

while($sub2 = mysql_fetch_array($result))
  {

   echo "<option value=".$sub2['id_subcateg2'].">".$sub2['subcateg2']." &gt;&gt;</option>";

  }
echo "</select>
   </form>";
?>

<div id="subcateg2" style="float:left; margin-left:10px;margin-top:0px;">

</div>


Si am observat ca orice as scrie in subcateg2.php nu este afisat... deci problema cred ca este pe la subcateg1.php ... de 2 zile stau si ma uit la codul asta si nu-mi dau seama 8O

Avatar utilizator
teachme
Senior Member
Mesaje: 550
Membru din: Mar Aug 17, 2010 11:52 am

Mesajde teachme » Dum Mar 27, 2011 1:47 pm

$s2=$_GET["s2"];
iar formul are metoda POST.

incearca $s2 = $_POST["s2"]; sau schimba metoda formului in GET

anonym
Average Member
Mesaje: 139
Membru din: Vin Mar 20, 2009 2:31 pm

Mesajde anonym » Dum Mar 27, 2011 3:57 pm

Am schimbat, dar degeaba pt ca datele nu sunt trimise din formular(deci nu conteaza ce method am la form), ci cu ajax.

Avatar utilizator
teachme
Senior Member
Mesaje: 550
Membru din: Mar Aug 17, 2010 11:52 am

Mesajde teachme » Dum Mar 27, 2011 4:00 pm

pune te rog schema tabelelor accesate de cele 3 selecturi. (sau SQL)

anonym
Average Member
Mesaje: 139
Membru din: Vin Mar 20, 2009 2:31 pm

Mesajde anonym » Dum Mar 27, 2011 4:06 pm

categorii : id_categ | categorie

subcateg1: id_subcateg1 | subcateg1 | id_categ (categoria din care face parte)

subcateg2 : id_subcateg2 | subcateg2 | id_subcateg1 (subcategoria din care face parte)

Avatar utilizator
teachme
Senior Member
Mesaje: 550
Membru din: Mar Aug 17, 2010 11:52 am

Mesajde teachme » Dum Mar 27, 2011 4:16 pm

cand accesezi direct subcateg2.php cu o valoare pentru s2, iti genereaza ceva?
subcateg2.php?s2=1 (id_subcateg1)

anonym
Average Member
Mesaje: 139
Membru din: Vin Mar 20, 2009 2:31 pm

Mesajde anonym » Dum Mar 27, 2011 4:22 pm

da, imi afiseaza subcategoria din subcateg2 intr-un select box... adica afiseaza ce trebuie sa afiseze :)

Avatar utilizator
teachme
Senior Member
Mesaje: 550
Membru din: Mar Aug 17, 2010 11:52 am

Mesajde teachme » Dum Mar 27, 2011 4:29 pm

tind sa cred ca nu poate rula ajax-ul la ultima subcategorie.
incearca sa muti scriptul ajax pentru a doua subcategorie in categ.php. sa fie ambele acolo.

anonym
Average Member
Mesaje: 139
Membru din: Vin Mar 20, 2009 2:31 pm

Mesajde anonym » Dum Mar 27, 2011 4:40 pm

ce pot sa spun... esti un geniu :D

Mersi mult de tot ca ai avut rabdare, acum merge perfect :D

anonym
Average Member
Mesaje: 139
Membru din: Vin Mar 20, 2009 2:31 pm

Mesajde anonym » Mar Mar 29, 2011 6:12 pm

Am mai intampinat o problema... Nu stiu cum sa preiau datele din subcateg1 si subcateg2.php.

categoria o preiau cu $_POST['categ'] , dar subcategoriile nu le afiseaza cu $_POST['subcateg1'];

Si as vrea sa am doar un buton de submit, care sa fie vizibil doar dupa ce se alege ultima subcategorie (subcateg2).

Avatar utilizator
teachme
Senior Member
Mesaje: 550
Membru din: Mar Aug 17, 2010 11:52 am

Mesajde teachme » Mie Mar 30, 2011 11:41 am

poate pentru ca div-ul in care incarci selecturile pentru subcategorii este in afara form-ului din categ.php.
cand dai submit, nu le ia in calcul.
incearca sa-l pozitionezi inainte sa inchizi form-ul, poate merge.

si in fisierele pentru subcategorii trebuie sa renunti la form. sa genereze doar select-ul si atat.
iar la a doua subcategorie trebuie la select sa adaugi cu "onchange" un buton submit.


Înapoi la “Librarii Javascript”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 8 vizitatori