 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
tristan_1982
Data înscrierii: 15/Oct/2007
Mesaje: 7
|
| Trimis: Vin Sep 12, 2008 2:26 pm Titlul subiectului: Citirea automata a campului la selectarea altuia din meniu |
|
|
Am urmatorul cod :
<?php
echo '<div align="left"><select name="type">';
$query = 'SELECT s_id, tip_str, nume_str, sector_str FROM strazi ORDER BY nume_str ASC';
$result = mysql_query ($query);
while ($row = mysql_fetch_array ($result, MYSQL_NUM)) {
echo "<option value=\"$row[0]\">$row[2] ($row[1])</option>";
}
echo "<p align=\"center\"><input type=\"text\" size=\"100\" value=\"$row[3] \"</p>";
echo '</div>';
?>
Cand incarc pagina in localhost nu imi citeste $row[3], adica sectorul de unde face parte strada.
Please Help !!!!! |
|
| Sus |
|
mihaitha
Data înscrierii: 04/Mai/2007
Mesaje: 1801
Locație: Sibiu
|
| Trimis: Vin Sep 12, 2008 2:34 pm Titlul subiectului: |
|
|
E logic. Script-ul tau se comporta exact asa cum ar trebui. mysql_fetch_array() iti returneaza un rand din rezultatul query-ului si incrementeaza pointerul, atata timp cat pointerul nu a ajuns la finalul rezultatelor, iar apoi returneaza booleanul false.
Tu apelezi $row[3] doar dupa ce s-a iesit din bucla while, adica in momentul in care $row nu mai e un array, e egal cu false.
Asigneaza valoarea $row[3] intr-o variabila in interiorul buclei, si dupa bucla afiseaza acea variabila. |
|
| Sus |
|
tristan_1982
Data înscrierii: 15/Oct/2007
Mesaje: 7
|
| Trimis: Dum Sep 14, 2008 3:21 pm Titlul subiectului: |
|
|
Am incercat si asa :
<?php
echo '<div align="left"><select name="type"><option value="null">Cauta strada</option>';
$query = 'SELECT s_id, tip_str, nume_str, sector_str FROM strazi ORDER BY nume_str ASC';
$result = mysql_query ($query);
while ($row = mysql_fetch_array ($result, MYSQL_NUM)) {
echo "<option value=\"$row[0]\">$row[2] ($row[1])</option>";
$t = $row[3];
}
echo "<p align=\"center\"><input type=\"text\" size=\"100\" value=\"$t\"</p>";
echo '</select></div>';
?>
Dar imi afiseaza doar ultima inregistrare din tabel. Sa inteleg ca bucla while le citeste pe toate si cand ii atribui lui $t randul din tabel corespunzator lui $row[0] pe care l-am selectat ea imi citeste intotdeauna ultima mea inregistrare. Ce sa mai fac? Nu stiu. Va implor o idee ca peretele de langa mine a facut o gaura de cand ma tot dau cu capul de el. |
|
| Sus |
|
tristan_1982
Data înscrierii: 15/Oct/2007
Mesaje: 7
|
| Trimis: Mar Sep 16, 2008 12:20 pm Titlul subiectului: |
|
|
| Please help. Macar spuneti-mi ca nu se poate |
|
| Sus |
|
mihaitha
Data înscrierii: 04/Mai/2007
Mesaje: 1801
Locație: Sibiu
|
| Trimis: Mar Sep 16, 2008 12:57 pm Titlul subiectului: |
|
|
| Explica mai clar ce vrei sa faci si poate reusim sa te ajutam. |
|
| Sus |
|
vectorialpx
Data înscrierii: 01/Mar/2005
Mesaje: 3014
Locație: țopăi pe tasta DELETE
|
| Trimis: Mar Sep 16, 2008 1:16 pm Titlul subiectului: |
|
|
de ce nu pui frate $row['nume_str']?.. ti-e lene? :?
edit // pune $result = mysql_query ($query) or die(mysql_error());
si, asigura-te ca exista CEVA in campul ala |
|
| Sus |
|
tristan_1982
Data înscrierii: 15/Oct/2007
Mesaje: 7
|
| Trimis: Mar Sep 16, 2008 2:54 pm Titlul subiectului: |
|
|
Am un tabel numit "strazi" cu urmatoarele coloane : s_id, nume_str si sector_str. In scriptul php cand selectez nume_str sa imi afiseze automat intr-un camp separat sector_str. Asa arata o parte din script :
<br><p style="font-size:14px "><b>Adresa persoanei / institutiei care sesizeaza : </b><select name="strada">
<?php
$result = mysql_query ("SELECT nume_str FROM strazi ORDER BY nume_str");
$num = mysql_num_rows ($result);
while ($i <= $num) {
$i = $i + 1;
$row = mysql_fetch_array ($result);
echo '<option value="' . '$row[nume_str]' . '">' . $row['nume_str'] . '</option>';
$t = $row['nume_str'];
}
?>
</select></p>
<br><p style="font-size:14px "><b>Adresa persoanei / institutiei care sesizeaza : </b><select name="sector">
<?php
$result = mysql_query ("SELECT sector_str, nume_str FROM strazi WHERE nume_str = '$t'");
while ($row = mysql_fetch_array ($result)) {
echo '<option value="' . '$row[sector_str]' . '">' . $row['sector_str'] . '</option>';
}
?></select></p>
Poate ca m-am facut un pic mai clar acum. Problema este ca atunci cand vreau sa imi afiseze sectorul imi afiseza doar ultima inregistrare din tabel. |
|
| Sus |
|
whooper
Data înscrierii: 05/Apr/2005
Mesaje: 727
Locație: Toronto ON
|
| Trimis: Mar Sep 16, 2008 10:47 pm Titlul subiectului: |
|
|
pai iar e normal ce se intampla. Tu cu primul query generezi toate strazile. in $t, tii minte strada curenta in primul ciclu while. Cand se termina ciclul, ai acolo numele ultimei strazi.
Apoi incepi generarea celei de-a doua liste cu sectoare, cu conditia ca numele strazii din variabila $t (ultima strada) sa se afle in sectorul care vrei sa fie adaugat la lista. Cum cred ca le-ai adaugat in o ordine prestabilita, va afisa intotdeauna sectorul ultimei strazi, adica ultimul sector.
Listele astea combinate se fac altfel. faci un tabel cu 3 campuri, toate bigint : id, sector, strada. Faci alt tabel cu 2 campuri id_strada si nume_strada, si faci al treilea tabel 2 campuri cu id_sector si nume_sector. Fixezi indecsi pe campurile ID in cele 3 tabele si abia dupa aia te gandesti cum arata query-ul.
Inca o chestie. Poti tine minte toate strazile si toate sectoarele in variabile JS si afisarea o faci cu JS. La event-ul ONBLUR in primul select, faci o functie care filtreaza singura sectorul functie de strada in cel de-al doilea ..
Daca vrei sa folosesti PHP, poti face aproximativ acelasi lucru daca folosesti AJAX (iar JS, iar event-ul ONBLUR), sau la selectarea unei valori in primul SELECT reincarci pagina ruland query-ul al doilea.
M-am facut inteles .. ?? |
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |
|