Skocz do zawartości


Zdjęcie

[PHP]Przekazywanie zmiennych pobranych z bazy danych


  • Zaloguj się, aby dodać odpowiedź
1 odpowiedź w tym temacie

#1 Guton

Guton
  • Użytkownicy
  • 1 postów

Napisano 02 październik 2015 - 10:20

Cześć!
 
Mam pewien problem, zakładam dziennik (zadanie lekcyjne) i nie wiem jak przekazać zmienne, które mam z bazy danych.
 
Fragment kodu:
$sql = "SELECT id, imie, nazwisko, klasa FROM `stala` " ;
 
$result = $conn->query($sql) ;
 
if ($result->num_rows > 0) {
?>
<table border="1" width="400" height="300" style="float:left;">
<tr>
<td>ID</td><td>Imie</td><td>Nazwisko</td> <td> Klasa </td> <td> Dodaj ocene </td>
</tr>
 
<?php
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<tr>" ;
echo "<td>" . $row["id"]. "</td>" ." <td> " . $row["imie"]. "</td>". "  <td> " . $row["nazwisko"]. "<td>" . $row["klasa"]."</td>" ."<br>" ;
?>
<form method="get" action="ocena.php">
<td> <label><input type="text" name="ocena" /></label> </td>
<td><input type="submit" value="Dodaj"> </td>
</form>
 
<?php
echo "<tr>" ;
}
 
} else {
echo "0 results" ;
}
$conn->close() ;
?> 
 
</table>
 
Zmienne $row chce przekazać razem z inputem 'ocena' do pliku, który będzie dodawać nowy rekord w bazie danych razem z Imieniem i nazwiskiem (pobranych z $row) oraz oceną (pobraną z input).
 
 
 
Na razie mam dodawanie oceny bez imienia i nazwiska, gdy wartość id jest stała (wiem, że mam polecenie 'update' a nie 'instert into').
 
$ocena = $_GET['ocena']
$sql= "UPDATE `posz`.`dziennik` SET `ocena` = '$ocena' WHERE `dziennik`.`id` = 1;"
$result = $conn->query($sql)
 
 
Proszę o pomoc ;) z góry dziękuje. Pozdrawiam :)

  • 0


#2 ~janusz

~janusz
  • Użytkownicy
  • 238 postów

Napisano 02 październik 2015 - 17:16

Rozwiązanie czysto poglądowe (nie przyczepiam się do luk typu sql injection w skrypcie, jednak miej świadomość że tak się w PHP nie pisze funkcji bazodanowych)

 

Możesz przecież przekazać zmienną $result (ewentualnie przepisać wszystkie zmienne do jednej tablicy asocjacyjnej)

<?php 

function createDiaryEntries($entries, $grade) {
 
   while($entry = $entries->fetch_assoc()) {
        insertIntoDataBase($entry, $grade);
   }
   
}

function insertIntoDataBase($entry, $grade) {
      //insert into costam (imie, nazwisko, ocena) values ($entry['imie'], $entry['nazwisko'], $ocena)
}


?>

A wywołanie powyższego wystarczy zrobić tak:


//wysłany formularz tutaj, zainicjowana $_GET['ocena'];
$result = $conn->query($sql);
$grade = $_GET['ocena'];

createDiaryEntries($result, $grade);


Przy czym sam musisz zadbać o to, żeby ogarnąć czy formularz został wysłany (np zbadać,  czy zmienna $_GET['ocena']) istnieje w pliku ocena.php, możesz też akcję dać na osobny skrypt.

 

Sprawdzenie czy została taka zmienna wysłana np poprzez:

function isFormSubmitted() {
    return array_key_exists('ocena', $_GET);
}

if (isFormSubmitted()) {
  //dalsze dzialania
}

 


  • 0


Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych