2013-05-22 14 views
7

mam tej funkcji find_all(), która jest napisana w oddzielnym pliku:PHP: My przycisk nie działa prawidłowo wewnątrz pętli foreach

public static function find_all() { 
    return self::find_by_sql("SELECT * FROM ".self::$table_name); 
} 

Został odwołuje się w górnej części pliku, który zawiera moje pętla foreach:

<?php require_once("../../includes/initialize.php"); ?> 
<?php if (!$session->is_logged_in()) { redirect_to("login.php"); } ?> 
<?php 
    $parents = UserParent::find_all(); 
?> 

jest to pętla foreach:

<?php foreach($parents as $parent): ?> 
     <div class='popup-screen' id = "popup"> 
      <div class = "spacing"> 
      Do you want to delete this data? 
      </div> 
      <a href="list_users.php?parentNum=<?php echo $parent->parentNum; ?>"> <input type="button" value="YES" class = "popup-button"> </a> 
      <input type="button" value="CANCEL" class = "popup-button" onClick = "hide();"> 
     </div> 
     <tr class = "tr-1"> 
      <td onClick = "document.location = 'viewParent.php?parentNum=<?php echo $parent->parentNum; ?>';"><img src="../<?php echo $parent->image_path(); ?>" width="100" height = "100" class = "profile-pic"/></td> 
      <td onClick = "document.location = 'viewParent.php?parentNum=<?php echo $parent->parentNum; ?>';">Parent</td> 
      <td onClick = "document.location = 'viewParent.php?parentNum=<?php echo $parent->parentNum; ?>';"><?php echo $parent->username; ?></td> 
      <td onClick = "document.location = 'viewParent.php?parentNum=<?php echo $parent->parentNum; ?>';"><?php echo ucwords($parent->firstName); ?></td> 
      <td onClick = "document.location = 'viewParent.php?parentNum=<?php echo $parent->parentNum; ?>';"><?php echo ucwords($parent->lastName); ?></td> 
      <td onClick = "show();"><img src = "../stylesheets/images2/delete-icon.png" height="25" width="25" ></td> 
     </tr> 
<?php endforeach; ?> 

I to jest kod javascript:

function show() 
{ 
    document.getElementById("popup").style.display='block'; 
} 

function hide(){ 
    document.getElementById("popup").style.display='none'; 
} 

Zasadniczo to, co robi mój kod, polega na tworzeniu rzędów informacji, które pobierają dane z pętli foreach. Na końcu każdego wiersza znajduje się ikona usuwania, co ilustruje tag img. Po kliknięciu ikony usuwania funkcja show() zostanie uruchomiona (funkcja show() po prostu pokazuje wyskakujące okienko div, które jest niewidoczne) - potwierdzenie, czy użytkownik chce usunąć swoje dane, czy też nie. Jeśli użytkownik kliknie przycisk ANULUJ, okno zamknie się, co ilustruje kod javascript. Jeśli użytkownik kliknie przycisk TAK, należy przejść do łącza: list_users.php? ParentNum = parentNum; ?> (Wartość $ parent-> parentNum jest różna dla każdego wiersza). Jednak znacznik zakotwiczenia ZAWSZE pobiera łącze do pierwszego wiersza, niezależnie od tego, czy jest to trzeci wiersz, czy cokolwiek (linki przy innych znacznikach td działają, nawiasem mówiąc). Teraz moje pytanie brzmi: jak poprawnie połączyć przycisk YES dla każdego wiersza w popup div?

+0

Czy podajesz wartość parentNum w dowolnym miejscu? – NCoder

+1

Pokaż kod, w którym przypisujesz wartości do '$ parents' –

+0

ParentNum znajduje się wewnątrz klasy nadrzędnej, więc nie ma potrzeby deklarowania go. Odbiera dane z mojej bazy danych. Łącza na td działają, nawiasem mówiąc, więc parentNum nie jest tak naprawdę problemem. – YourMom

Odpowiedz

4

Wartość $ nadrzędnej> parentNum jest inna dla każdego wiersza

Ale w kodzie, to nie jest:

<?php echo $parent->parentNum; ?> 

Wartość nie jest zwiększany lub zmieniono lub cokolwiek, więc jest takie samo dla wszystkich wierszy.


Także ja bym silnie zalecają stosowania <button> lub <a> elementy dla tego produktu. Właśnie do tego zostały stworzone. <td> s nie były przeznaczone do kliknięcia. Dobra praktyka projektowa jest (prawie) zawsze warta trochę dodatkowego wysiłku.

IMO, Twój kod powinien wyglądać bardziej jak

... 
<td><a href='viewParent.php?n=<?php echo $n; ?>'></a></td> 
... 
<button name='show' value='1'>Show</button> 

... gdzie $n jest z pętli for. Następnie u góry strony, aby otrzymać zdarzenie "pokaż".

+0

Też tak myślałem. Po prostu nie wiem jak poprawnie połączyć przycisk. – YourMom

+0

Nie jesteś pewien co masz na myśli? Zrób element '

' i weź wszystko wewnątrz. Następnie, po kliknięciu przycisku, strona przesyła (przeładowuje) z zapełnionym $ _POST. Znaczniki '' poradzą sobie same i mogą znajdować się wewnątrz lub na zewnątrz formularza. – Ben

+0

Zrobiłem ten post, zanim edytowałeś swoją odpowiedź. Po prostu zignoruj ​​mój komentarz. W każdym razie, dzięki za twoją odpowiedź, Steve. Zrobię to później. – YourMom

2
<?php 

$parentNum = 0; 

foreach($parents as $parent): ?> 
     <div class='popup-screen' id = "popup"> 
      <div class = "spacing"> 
      Do you want to delete this data? 
      </div> 
      <a href="list_users.php?parentNum=<?php echo $parent[$parentNum]; ?>"> <input type="button" value="list_users.php?parentNum=<?php echo $parent[$parentNum]; ?>" class = "popup-button"> </a> 
      <input type="button" value="CANCEL" class = "popup-button" onClick = "hide();"> 
     </div> 
     <tr class = "tr-1"> 
      <td onClick = "document.location = 'viewParent.php?parentNum=<?php echo $parent[$parentNum]; ?>';"><img src="../<?php echo $parent->image_path(); ?>" width="100" height = "100" class = "profile-pic"/></td> 
      <td onClick = "document.location = 'viewParent.php?parentNum=<?php echo $parent[$parentNum]; ?>';">Parent</td> 
      <td onClick = "document.location = 'viewParent.php?parentNum=<?php echo $parent[$parentNum]; ?>';"><?php echo $parent[$parentNum]->username; ?></td> 
      <td onClick = "document.location = 'viewParent.php?parentNum=<?php echo $parent[$parentNum]; ?>';"><?php echo ucwords($parent[$parentNum]->firstName); ?></td> 
      <td onClick = "document.location = 'viewParent.php?parentNum=<?php echo $parent[$parentNum]; ?>';"><?php echo ucwords($parent[$parentNum]->lastName); ?></td> 
      <td onClick = "show();"><img src = "../stylesheets/images2/delete-icon.png" height="25" width="25" ></td> 
     </tr> 
<?php 

$parentNum++; 

endforeach; ?> 
+0

Jak utworzyć tablicę dla parentNum?A w jaki sposób poprawnie przechodzę przez tablicę? – YourMom

+0

OK, spróbuj teraz ..... – NCoder

+0

Dziękuję za odpowiedź. Zapomniałem powiedzieć, że mam tę funkcję: $ parents = UserParent :: find_all() ;. A $ parent-> parentNum to sposób pobierania elementu parentNum z klasy userParent. Pobiera dane z bazy danych i nie powinien być inicjowany, ponieważ dane są już dostępne. – YourMom

Powiązane problemy