Introducere ID si nota selectata din html in baza de date
Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
-
sterica
- Mesaje:285
Introducere ID si nota selectata din html in baza de date
Salutare,
Am urmatoarea baza de date:
personal
Cod: Selectaţi tot
+------+-----------+------------+
| ID | NUME | PRENUME |
+------+-----------+------------+
| 1 | POPESCU | Nicu |
| 2 | IONESCU | ION |
+------+-----------+------------+
Valorile din baza de date vreau sa il intrduc intr-un tabel de forma aceasta:
Cod: Selectaţi tot
<table>
<tr>
<th>Numele angajatului</th>
<th>Nota acordata</th>
</tr>
<?php include"query_tbl_personal.php"; ?>
</table>
Ca sa aduc valorile in tabel am procedat in felul urmator:
Cod: Selectaţi tot
.....
$sql = "SELECT NUME, PRENUME, TIP, ID
FROM personal
....
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$nota = 10;
echo "<tr><td>" $row["NUME"]. ' '. $row["PRENUME"]. "<br/></td>";
echo "<td>";
echo "<select autocomplete='off'>
<option disabled selected>-- Alege nota --</option>";
for( $i = 1; $i <= $nota; $i++ ) {
echo "<option value='$i'>$i</option>\n";
};
echo "</select></td></tr>";
}
}
...
Dupa ce aleg din select nota dorita pentru fiecare persoana vreau ca toate notele sa le trimit intr-o tabela:
Am butonul de submit:
Cod: Selectaţi tot
<form action="insert_value_mysqli.php" method="POST">
<input type="submit" name="insert" value="Submit">
</form>
tabelul unde vreau sa trimit valorile este de forma aceasta:
Cod: Selectaţi tot
+----+-------------+------+
| ID | ID_PERSONAL | NOTA |
+----+-------------+------+
| 1 | 1 | 7 |
| 2 | 2 | 9 |
+----+-------------+------+
Nu stiu cum pot adauga td-urilor un atribut cu ID-ul personalului si notelor ca ulterior sa le pod aduce in tabelul dorit.
Multumesc!
MarPlo
Mesaje:4343
Salut
Se poate face cu javascript /ajax, sau cu html si php care e putin mai usor.
Metoda ar fi asa:
1. La fiecare <select> din coloanele tabelului html se adauga un atribut "name" de tip array care sa contina id-ul:
Cod: Selectaţi tot
echo "<select name='id_nota[". $row['ID'] ."]' autocomplete='off'> ...";
2. Tot acel tabel html il incadrezi in formularul de trimitere, ca sa ai <select>-urile in <form>:
Cod: Selectaţi tot
<form action="insert_value_mysqli.php" method="POST">
<table> ... </table>
<input type="submit" name="insert" value="Submit">
</form>
3. La trimiterea formularului, scriptul php din "insert_value_mysqli.php" va primi un array 2-dimensional de forma:
Cod: Selectaţi tot
$_POST['id_nota'] =[id1=>nota, id2=>nota, ...];
4. Se parcurge acest array si se definesc valorile pentru Insert:
Cod: Selectaţi tot
if(isset($_POST['id_nota']) && is_array($_POST['id_nota'])){
$insert =[]; //array with values to insert (id, nota)
foreach($_POST['id_nota'] as $id=>$nota) $insert[] ='('. $id .', '. $nota .')';
$sql ="INSERT INTO table_name (ID_PERSONAL, NOTA) VALUES ". implode(',', $insert);
//...
echo $sql; //for debug
}
sterica
Mesaje:285
Functioneaza perfect, insa va trebui sa mai studiez logica din spatele codului. Vreau sa mai adaug o variabila, si anume
pe care vreau sa o pun in:
Cod: Selectaţi tot
$sql ="INSERT INTO table_name (ID_PERSONAL, NOTA, DATA_NOTARII) VALUES ". implode(',', $insert);
Multumesc!
sterica
Mesaje:285
Ma invart in jurul codului si nu reusesc sa mai adaug o variabila a caror valori sa le introduc in BD.
Am incercat in modul acesta, insa imi introduce numai o singura valoare in BD
Cod: Selectaţi tot
if(isset($_POST['id_nota']) && is_array($_POST['id_nota'])){
// get values form input text and number
$insert = []; //array with values to insert (id, nota)
$today = date("Y-m-d H:i:s");
foreach($_POST['id_nota'] as $id=>$nota) $insert[] ='('. $id .', '. $nota .')';
// mysql query to insert data
$sql = "INSERT INTO chestionar_sterica (ID_PERSONAL,NOTA, TIME_DATA) VALUES ('$id', '$nota', '$today')";
Am adaugat variabila aici, dar tot nu functioneaza
Cod: Selectaţi tot
$insert[] ='('. $id .', '. $nota .', '.$today')';
$sql = "INSERT INTO chestionar_sterica (ID_PERSONAL,NOTA, TIME_DATA) VALUES";.implode(',', $insert);
Cum pot adauga datele din variabila $today pentru fiecare valoare introdusa in bd?
Multumesc!
MarPlo
Mesaje:4343
Ai gasit bine cu se face, doar ca acea valoare ce trebuie adaugata, fiind un sir, la VALUES pt. SQL sa fie intre ghilimele.
Incearca asa:
Cod: Selectaţi tot
$insert[] ='('. $id .', '. $nota .", '". $today ."')";
sterica
Mesaje:285
multumesc mult, functioneaza perfect
MarPlo
Mesaje:4343
O varianta mai simpla si profesionala e sa definesti coloana TIME_DATA cu setare:
Cod: Selectaţi tot
... DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
Astfel, se va adauga automat data si timpul in acea coloana, la Insert sau Update, fara sa o mai specifici in codul php.
sterica
Mesaje:285
la un click distanta si am scapat de o variabila. Multumesc foarte mult, foarte simpla aceasta varianta.
sterica
Mesaje:285
Am mai adaugat o variabila
Cod: Selectaţi tot
$insert[] ='('. $id .', '. $nota .", '". $intrebarea ."', '" . $sugestie ."')";
este o variabila de tip input ce va contine text.
Cod: Selectaţi tot
if($num_rows >0){
$tabels ='<table class="t_note">';
$n2 = ceil($num_rows /2); //for half of rows
$nr =0;
while($row = $result->fetch_assoc()){
//ends 1st table and creates 2nd table, if index $nr=$n2
if($nr == $n2) $tabels .='</table><table class="t_note">';
$nota = 10;
$tabels .="<tr><td>" .$row["NUME"]. ' '. $row["PRENUME"]. "<br/></td><td>";
$tabels .="<select class='nota' name='id_nota[". $row['ID'] ."]' autocomplete='off'><option disabled selected>-- Alege nota --</option>";
for($i=1; $i<=$nota; $i++) $tabels .="<option value='$i'>$i</option>\n";
$tabels .="</select></td>";
$tabels .="<td><input type='text' name='sugestie'></td></tr>";
$nr++;
}
$tabels .='</table>';
}
echo $tabels;
Imi sunt introduse toate celelalte valori mai putin cele aferente varabilei sugestie, imi lasa spatiul gol in tabela. Am incercat ceva in genul:
Cod: Selectaţi tot
$tabels .="<td><input type='text' name='sugestie[". $row['ID'] ."]'></td></tr>";
iar in tabela in coloana SUGESTII imi este trecut Array.
Unde gresesc de nu imi sunt introduse valorile corect?
Multumesc!
MarPlo
Mesaje:4343
Nu stiu sigur. Poti aplica un:
inainte de Insert, ca sa vezi ce contine acea variabila de la formular.
Incearca asa:
Cod: Selectaţi tot
foreach($_POST['id_nota'] as $id=>$nota) $insert[] ='('. $id .', '. $nota .", '". $intrebarea ."', '" . $_POST['sugestie'][$id] ."')";
sterica
Mesaje:285
Nu vrea nici cum. Sunt generate 40 de inputuri de forma aceasta
ar putea fi o problema ca am 40 de name-uri egale cu sugestie?
MarPlo
Mesaje:4343
La codul php dat in raspunsul anterior, inputul sa fie de forma:
Cod: Selectaţi tot
<input type='text' name='sugestie[". $row['ID'] ."]'>
Mai multe input-uri cu acelasi nume se transmit sub forma de array, iar in php li-se preiau valorile prin parcurgere cu for() /foreach().
Subiecte similare
- Adaugare orar zilele saptamanii in baza de date
PHP - MySQL - XML
Primul mesaj
Salut
Am o baza de date cu toate locatiile
location_id | name |address |telephone | open
Si un formular prin care incarc datele in bd....
Ultimul mesaj
Treaba cu adaugare json in mysql e simpla, se rezuma la adaugarea unui sir care contine ghilimele duble.
Problema la tine e ca acele ghilimele sunt...
- Valoarea id-ului din HTML atribuită unei variabile php
PHP - MySQL - XML
Primul mesaj
Încerc să extrag valorile id= min5 , id= max5 si să le pun în $_GET $_GET fara trimitere în altă pagină
cum aș putea proceda?
<div class=...
Ultimul mesaj
Nu prea inteleg ce vrei sa faci.
Codul php se executa pe server inainte de a fi pagina cu codul html si javascript.
In php, valorile pentru...