Tablice - id wybranego ucznia

0

mam problem z tablicami....

mam formularz z opcją wyboru, który wyrzuca mi dostępne nazwiska uczniów - działa dobrze.

tylko problem mam jak chciałbym aby po naciśnięciu przycisku uzyskac id wybranego ucznia... próbuje na różne sposoby...m.in tak jak poniżej, ale nic mi nie działa.. gdzie robię błąd ?

if(isset($_POST['btn-'])) {
 
 
 
$idzaw = strip_tags($_POST['idzaw'][$i]);
$idzaw = $DBcon->real_escape_string($idzaw);
 
echo "id zawodnika to:", $idzaw;
 
 
 
}
 
 
}
 
 
 
.
.
.
.
 
 
<form autocomplete="off" method="post" >
 
  <select class="form-control"  name="idzaw[]" >
 
 <?php  
 
 
 $Zquery = $DBcon->query("SELECT * FROM ... ");
 
$ileZ=$Zquery->num_rows; 
 
for ($i=0; $i <$ileZ; $i++)
        {
 
 
$dzieckoRowF=$Zquery->fetch_array();
 
  ?> 
    <option value="<?$dzieckoRowF['idzawodnik']?>"> 
 
 
 
	<?php echo $i+1 , '. ', $dzieckoRowF['idzawodnik'] , $dzieckoRowF['imie'] , ' ', $dzieckoRowF['nazwisko']; ?> </option>
 
 
	<?
 
		}
 
	?>
 
 
  </select>
</div> 
 
  <div class="form-group">
<button class="btn btn-block btn-primary" name="btn" type="submit">potwierdź</button>
</div>
 
 
</form>
0

Twój html jest poprawny? W formularzu masz btn - a potem sprawdzasz to tak if(isset($_POST['btn-']))

Poza tym używaj np var_dumpa - i użyj go na całej tablicy $_POST;

0

Twój html jest poprawny? W formularzu masz btn - a potem sprawdzasz to tak if(isset($_POST['btn-']))

Poza tym używaj np var_dumpa - i użyj go na całej tablicy $_POST;>

tak jest już poprawny HTML - zauważyłem to i poprawiłem.

natomiast jak z vardumpem..to nie za bardzo wiem o co chodzi..

0

Wejdź na php.net przejrzyj dokumentację i zobacz jak się używa tejże funkcji.

0

var_dump wyrzuca:

array(1) { [0]=> string(0) "" }

0

a robiłeś var_dump($_POST);? Poza tym Twój select zezwala na wybranie jednej wartości tak? Bo jeśli jednej to nazwa selecta jest niepoprawna (bez nawiasów). Jeśli wielokrotnego wyboru to select powinien mieć jeszcze atrybut mutlitple
Ten kod działa:

<?php
var_dump($_POST);
?>

<html>
    <body>
        <form action="abc.php" method="post">

            <select name="test[]" multiple>
                <option value="1">Abc</option>
                <option value="2">bbb</option>
                <option value="abc">555</option>
            </select>

            <input type="submit" value="klik" />
        </form>
    </body>
</html>

aaa no i jeszcze ma masę błędów w składni - skoro tak mieszasz html z php'em to przy parametrze value tagu option - daj echo $zmienna.

Lekcja na przyszłość - skoro robisz jakis kodzik w phpie i htmlu, to potem sprawdź źródło strony w przeglądarce i zobaczy czy wszystko działa i wyświetla się zgodnie z założeniami.

0

jak dam var_dump($_POST);

to coś się dzieje , bo jak wybiorę o id 1 to mam: array(2) { ["idzaw"]=> array(1) { [0]=> string(1) "1" } ["btn-FMS"]=> string(0) "" }
a jak o id np 5 to mam : array(2) { ["idzaw"]=> array(1) { [0]=> string(1) "5" } ["btn-FMS"]=> string(0) "" }

0

echo $zmienna - oczywiście poprawione

ale dalej nie wyświetla jakie id zostało wybrane..

0

Musisz nauczyć się czytania ze zrozumieniem, bo opisałem Ci możliwe warianty i podałem działający kod. Nawet w Twoim var dumpie widać co, instalowałem wybrane i są to poprawne > idki >

niestety próbowałem na różne sposoby i widać nie potrafię czytać ze zrozumieniem jak napisałeś..

nie chce selecta wielokrotnego wyboru wiec multiple nie jest mi potrzebne, co nie zmienia faktu,ze i tak nie dziala mi to :/

0

No to skoro nie jest potrzebne multiple - to nazwa select powienien wyglądać tak
<select class="form-control" name="idzaw" >

No i postaraj się też pisać ładniejszy kod - bo ja teraz wiem ze 'idzaw' to id zawodnika - ale po jakimś czasie jak się kod rozrasta już móze nie być tak ciekawie. Czemu nie dajesz konkretnych nazwa (no i powinny być po angielsku) np "player_id"?

Rejestracja na tym forum to jednak przydatna rzecz :D można pisać na privie na przykład ;)

Wklej też swój aktualny kod.

0

ok :)

a więc mam tak:


if(isset($_POST['btn'])) {
$idzaw = ($_POST['idzaw'][$i]);
$idzaw = $DBcon->real_escape_string($idzaw);



echo "id zawodnika to:", $idzaw," vardump:",  var_dump($_POST);

}
<form autocomplete="off" method="post" >



<div class="form-group">
<h2 class="">Uzupełnij dane </h2>

</div>
<div class="form-group">
<hr>
</div>




<div class="form-group">

  
 
  
 <div class="form-group">
  <label for="sel1">Wybierz </label>

  <select class="form-control"  name="idzaw" >
  
 <?php  



 
 $Zquery = $DBcon->query("SELECT * FROM zawodnik WHERE Team_idTeam=".$dzieckoRow['idTeam']." ");


$ileZ=$Zquery->num_rows; 

for ($i=0; $i <$ileZ; $i++)
        {


$dzieckoRowF=$Zquery->fetch_array();

  ?> 
    <option value="<? echo $dzieckoRowF['idzawodnik']?>"> 
	

	
	<?php echo $i+1 , '. ', $dzieckoRowF['idzawodnik'] , $dzieckoRowF['imie'] , ' ', $dzieckoRowF['nazwisko']; ?> 
	
	
	</option>
   
	
	<?
	
		}
	
	?>
	
	
  </select>
</div> 

  
  

			


	








<div class="form-group">
<hr>
</div>
<div class="form-group">
<button class="btn btn-block btn-primary" name="btn" type="submit">Dodaj </button>
</div>
<div class="form-group">

</div>
</form>
1

Dlaczego chcesz te dane wydobyć za pomocą $idzaw = ($_POST['idzaw'][$i]); Skoro chcesz wybrać jednego - to wystarczy $_POST['idzaw']. A teraz spójrz na cały ten wątek i zobacz że gdybyś używał var_dumpa na tablicy $_POST od razu byś wiedział gdzie trafiają dane. Ode mnie masz gotowe rozwiązanie, ale mam nadzieję że wyciągniesz z tego tematu jakieś wnioski i będziesz miał lekcję na przyszłość jak sobie radzić z takimi problemami.

aa i nie ma sensu dawać var_dumpa do echo.

0

bo jak robię tak jak piszesz:

$idzaw = $_POST['idzaw'];

echo "id zawodnika to:", $idzaw;

to wyświetla mi się :

id zawodnika to: Array

0
if(isset($_POST['btn'])) {

$idzaw = $_POST['idzaw'];

echo "id zawodnika to:", $idzaw;

}

}

.
.
.
.

<form autocomplete="off" method="post" >

  <select class="form-control"  name="idzaw" >

 <?php  

 $Zquery = $DBcon->query("SELECT * FROM ... ");

$ileZ=$Zquery->num_rows; 

for ($i=0; $i <$ileZ; $i++)
        {

$dzieckoRowF=$Zquery->fetch_array();

  ?> 
    <option value="<?$dzieckoRowF['idzawodnik']?>"> 

    <?php echo $i+1 , '. ', $dzieckoRowF['idzawodnik'] , $dzieckoRowF['imie'] , ' ', $dzieckoRowF['nazwisko']; ?> </option>

    <?

        }

    ?>

  </select>
</div> 

  <div class="form-group">
<button class="btn btn-block btn-primary" name="btn" type="submit">potwierdź</button>
</div>

</form>

ostatecznie mam tak.

i właśnie wtedy dostaję komunikat: id zawodnika to: Array

1

No to musisz mieć gdzieś indziej coś skasztanione w tym kodzie.
Patrz

<?php

if (isset($_POST['btn'])) {

    $idzaw = $_POST['idzaw'];

    echo "id zawodnika to:", $idzaw;

}

?>

    <form autocomplete="off" method="post">
        <select class="form-control" name="idzaw">
            <?php
            $players = [1 => 'Janek', 2 => 'Lolek', 3 => 'Bolek'];
            foreach ($players as $playerId => $playerName):?>
                <option value="<?php echo $playerId; ?>">
                    <?php echo $playerName; ?>
                </option>
            <?php endforeach;
            ?>

        </select>
        </div>

        <div class="form-group">
            <button class="btn btn-block btn-primary" name="btn" type="submit">potwierdź</button>
        </div>

    </form>

Działa bez problemu.

0

u mnie już teżdziała... musiałem się wylogować..zalogować znowu i jest ok.dzięki za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1