Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zmienna nazwa zmiennej
Forum PHP.pl > Forum > Przedszkole
MAYA
Witam wszystkich

Czy ktoś może wiek jak poradzić sobie z tym tematem:

Mam wyświetlanych X checkbox'ów. Liczba może być zmienna.
Każdy z nich nazywa się

  1. $Edit_<?echo $array[id];?> 
  2. // co daje w efekcie np:
  3. $Edit_134

i tak mam unikalną nazwę.

I teraz jeśli checkbox jest zaznaczony to potrzebuję zrobić UPDATE rekordu o numerze [id].

Wymyśliłem coś takiego....

  1. <?php
  2.  
  3. // zczytywanie wartości maksymalnej pola id
  4. $max_id = mysql_db_query($db_name,"SELECT max(osobowe.id) FROM osobowe");
  5. // ustawianie licznika na wartości 1
  6. $numerek==1;
  7. while ($numerek<=$max_id){
  8.  
  9. // Tu pewnie potrzeba pewnie zdefinjować dynamicznie zmienną
  10.  
  11. if (!empty(  $Zdefinjowana_dynamicznie_zmienna  )){
  12. $sql="UPDATE IGNORE osobowe SET cena=upper('".rtrim($cena)."') WHERE id='$numerek' LIMIT 1";
  13. $result = mysql_db_query($db_name,$sql) or die('Wtopa z uaktualnienia rekordu !');
  14. echo ' NIE ZAPESZAĆ - chyba działa !!!';
  15. }
  16.  
  17. $numerek++;
  18. }
  19.  
  20. ?>


Jeśli ktoś wie jak mam dynamicznie zdefinjować nazwę zmiennej prosze o pomoc.

Pozdrawiam
Marcin
luinnar
nie lepiej użyć tablicy?
Zamiast dużej ilości zmiennych dajesz tablice
Kod
$edit[34354] zamiast $edit_34354
a potem robisz implode na tą tablice (tak żeby zrobiło się ładne zapytanie) np:
  1. <?php
  2. $query = 'UPDATE ble ble WHERE id='.implode(' AND id = ', $edit);
  3. ?>

Oczywiście musisz do tego zrobić jakieś zabespieczenia
Maya
Wszysko pieknie

Zamysł rozumiem...

Zamiast przyporządkować nazwie np:
  1. <?php
  2. $Edit_123
  3. ?>

wartość 123
tworzymy tabelę gdzie pole
  1. <?php
  2. $Edit[123]
  3. ?>

będzie miało wartość 123......

TYLKO

Duża liczba zmiennych generuje się mi sama poprzez nazwy checkbox'ów.
Jak mam zdefinjować nazwę w/w checkboxa jako rekord tabeli questionmark.gif

Było tak:
  1. <input type="checkbox" name="Edit_<?echo $array[id];?>" value="1">

A jak powinno być??

Czy tak będzie dobrze??
  1. <input type="checkbox" name="Edit" value="<?echo $array[id];?>">


Dodam tylko że nie moge zrezygnować ze słowa Edit bo obok mam drugi checkbox opisany jako Delete_


Marcin
crash
HTML też obsługuje tablice w formularzu... Ustaw nazwę na Edit[] i potem masz wszystkie te checkboxy w $_POST[ 'Edit' ].
kszychu
Cytat(MAYA @ 2005-09-02 15:45:45)
Jeśli ktoś wie jak mam dynamicznie zdefinjować nazwę zmiennej prosze o pomoc.

  1. <?php
  2. $zmienna_5 = 'Hello World!';
  3. $nr_zmiennej = 5;
  4. echo ${'zmienna_'.$nr_zmiennej};
  5.  
  6. ?>
krz2006
Witam.

Kto zabronil w html przekazywac zmiennych w tablicach questionmark.gifquestionmark.gif

Zaprezentuje kawalek kodu, ktory smiga az milo:
  1. <?php
  2.  
  3.  
  4. for($a=0;$a<950;$a++)
  5. {
  6. $string = '<input type="checkbox" name="temat['.$a.']" value="Start'.$a.'"></p>';
  7. }
  8.  
  9. /* W rezultacie powstanie kod HTML wygladajacy tak:
  10.  
  11. <input type="checkbox" name="temat[0]" value="Start0"></p>
  12. <input type="checkbox" name="temat[1]" value="Start1"></p>
  13. itd... az do 949 biggrin.gif 
  14. */
  15. ?>


I powiem Ci, ze bardzo dobrze sprawdza sie to w praktyce.... Sprawdz...

Pozdrawiam
MAYA
Wszystko pięknie

Pojawił się tylko mały problemik.
A mianowicie ......

Żeby coś uaktualnić muszę grupę danych wczytać z bazy....

Tymi danymi wypełniane są pola textarea.
Zawęźmy rozumowanie do do aktualizacji ceny produktu.

Mam więc Nazwę, Cenę w polu textarea i przyporządkowanego do nich Ccheckbox.

Wynik przy użyciu skryptu przesłanego przez krz2006 daje efekt następujący:

Cena[] ---- Edit[] - id produktu
[0] => 10 [0] => 3
[1] => 20 [1] => 4
[2] => 30
[3] => 40
[4] => 50

W wyniku tego uaktualnione zostaną dwa pierwsze wpisy a nie pozycje 3 i 4 (te które zostały zaznaczone w checkboxie)

Oczekiwany przezemnie zapis w tabeli to:

Cena[] ---- Edit[] - id produktu
[1] => 10
[2] => 20
[3] => 30 [3] => 3
[4] => 40 [4] => 4
[5] => 50

Lub

Edit[]
[0] ( 30, 3 )
[1] ( 40, 4 )

A oto skrypy:

Plik 01:

  1. ...... kod html
  2. <td rowspan="3"><div align="center">
  3. <input type="checkbox" name="Edit['.<? echo $array[id];?>.']" value="<? echo $array[id];?>">
  4. </div>
  5. </td>
  6. <td rowspan="3"><div align="center">
  7. <input type="checkbox" name="Delete[]" value="<? echo $array[id];?>">
  8. </div>
  9. </td>
  10. </tr>
  11. <tr>
  12. <td height="20" class="tekst_form"><div align="right">cena:</div></td>
  13. <td height="20" class="tekst_form">
  14. <input name="Cena['.<? echo $array[id];?>.']" type="text" class="tekst_form" value="<? echo $array[cena];?>" size="18">
  15. </td>
  16.  
  17. ...... kod html


Plik 2 ( do wyświetlania - testowy):

  1. <?php
  2.  
  3. print_r(array_values($_POST['Edit']));
  4. $n_edit = count($_POST['Edit']);
  5.  echo "<br><br><br><br><br><br>";
  6. print_r(array_values($_POST['Cena']));
  7. echo "<br><br><br><br><br>";
  8. $n_edit = count($_POST['Cena']);
  9.  
  10. ?>


Proszę o pomoc czy w ogóle da się tak zdefiniować nazwy pól żeby z pola cena wartość wskakiwała do pierwszej kolumny a z checkboxa do drugiej ....

A może zostają mi tylko poeracje na tabelach lub proste lecz działające przekazywanie dużej ilości zmiennych.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.