Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Include, a poprawny skrypt php
Forum PHP.pl > Forum > Przedszkole
kamosis
Witam wszystkich..
Mam mały kłopocik, a mianowicie kłopot z formularzem, który zapisuje, modyfikuje i kasuje dane w bazie mysql. Formularz ten skleciłem z przykładów znalezionych w necie.
Działający formularz podzielony jest na 4 stronki (podgląd danych, dodawanie, usuwanie, edycje i wyszukiwanie) i działa całkiem całkiem, ale w momencie zabrania się za includowanie wszystko się sypie.
Dodawanie i podgląd jakoś działa, po wielu staraniach i goglowaniu, ale kasowanie już nie.
Całość chciałem wyświetlać tylko na jednej stronce, ale nie wiem co i jak jest nie tak..Stronka się przeładuje, a kod wydaje się być w porządku, tylko nie usuwa rekordów w bazie tak jak należy, a mianowicie naciskając jakikolwiek przycisk del usuwa mi się wiersz z najniższym nr. id., a powinien ten w którym jest przycisk.
Jestem początkujący w php, więc proszę o wyrozumiałość i pomoc..

Stronka jest pod adresem:
Stronka


Kod

          <html>
<head>
<meta http-equiv="content-language" content="pl">
<title>Zgłoszenie reklamacji</title>

</head>
<body>
<table border="1" width="98%" cellspacing="0" cellpadding="0" bordercolorlight="#000000">
<tr>
</tr>
<tr>
<td width="4%" align="center" bgcolor="#E0E0E0">
<p align="center"><font size="2"> ID</font></td>
<td width="18%" align="center" bgcolor="#E0E0E0">
<p align="center"><font size="2">Imię</font></td>
<td width="18%" align="center" bgcolor="#E0E0E0"><font size="2">Nazwisko</font></td>
<td width="18%" align="center" bgcolor="#E0E0E0"><font size="2">Data
urodzenia</font></td>
<td width="18%" align="center" bgcolor="#E0E0E0"><font size="2">Adres</font></td>
<td width="14%" align="center" bgcolor="#E0E0E0"><font size="2">Telefon</font></td>
<td width="6%" align="center" bgcolor="#E0E0E0"><font size="2">Kasuj</font></td>
</tr>

<?php
mysql_connect ("localhost","piekut_r","230281");
mysql_select_db (piekut_r);

$zapytanie = "SELECT * FROM dane ORDER BY id DESC";
$wykonaj = mysql_query ($zapytanie);

while($wiersz=mysql_fetch_array ($wykonaj)) {
echo "<form method=\"post\" action=\"index.php?go=f2\">
<tr>
<td width=\"4%\">".$wiersz['id']."</td>
<td width=\"18%\">".$wiersz['imie']."</td>
<td width=\"18%\">".$wiersz['nazwisko']."</td>
<td width=\"18%\">".$wiersz['dataur']."</td>
<td width=\"18%\">".$wiersz['adres']."</td>
<td width=\"14%\">".$wiersz['telefon']."</td>

<td width=\"16%\"><b>

<font size=\"2\" face=\"Verdana\">

<input type=\"submit\" value=\"kasuj\" name=\"del\"></font></td></tr>";

echo '<input type="hidden" name="del_id" value="'.$wiersz['id'].'">';
}
if($_POST['del']=='kasuj')
{
$zapytanie2='DELETE FROM dane WHERE id='.$_POST['del_id'];
$wynik2 = mysql_query($zapytanie2);  
echo "Rekord o został skasowany !";
}
?>
</table>
</body>
</html>
redelek
Hej,

problem jest w tym że dołączasz całe pliki.

Zobacz jak sobie wejdziesz na stronkę i klikniesz pokaż źródło, to masz 2 razy <head> <body> wszystko jest dwa razy.

Nie można includ-ować tak sobie.

Masz jeden główny plik w nim kodowanie i style, a te które podłączasz muszą być "gołe".

Poza tym moim zdaniem raz przekazujesz del_id a klawisz ma name del.

Albo rozłącz to wszystko i zostaw tak jak miałeś, albo zrób porządki.

Dopisz sobie do komunikatu rekord skasowany zmienną del i del_id i zobacz co Ci zwracają.

Zawodowcem nie jestem, ale to mi się jako pierwsze nasuwa na myśl.

Pozdrawiam
Redelek
kamosis
Hej kolego poszedłem za twoją radą i usunełem nagłowek head i html, bo i powinienem to wczesniej zrobic, ale sadzilem ze to mam mały wpływ..

skrypcik działa, ale kasuje wartości od maks id., albo min. id, a powinien tylko te wybrane..


sposób kasowania zmienia się w zależnosci od pobrania danych z bazy np. DESC, ASC lub bez.


prosze o nienapadanie na mnie..jestem tylko człowiekiem i zadaje pytania..proszę o pomoc dobrych ludzi..

ponizej podaje kodzik..

Kod

$zapytanie = "SELECT * FROM `dane` ORDER BY id  ";
$wykonaj = mysql_query ($zapytanie);



while($wiersz=mysql_fetch_array ($wykonaj)) {
echo "<form method=\"post\" action=\"index.php?go=f2\">
<tr>
<td width=\"4%\">".$wiersz['id']."</td>
<td width=\"18%\">".$wiersz['imie']."</td>
<td width=\"18%\">".$wiersz['nazwisko']."</td>
<td width=\"18%\">".$wiersz['dataur']."</td>
<td width=\"18%\">".$wiersz['adres']."</td>
<td width=\"14%\">".$wiersz['telefon']."</td>

<td width=\"16%\"><b>

<font size=\"2\" face=\"Verdana\">

<input type=\"submit\" value=\"kasuj\" name=\"del\"></font></td></tr>";

echo '<input type="hidden" name="del_id" value="'.$wiersz['id'].'">';
}
if($_POST['del']=='kasuj')

{
$zapytanie2='DELETE FROM dane WHERE id='.$_POST['del_id'];
$wynik2 = mysql_query($zapytanie2);

echo "Rekord o został skasowany !";
}
?>
</table>


Kod
$zapytanie = "SELECT * FROM `dane` ORDER BY id  ";


sądze ze w tym miejscu jest błąd np. jak mam DESC to rekordy kasują się od najnizszego id, a jak ASC to od najwyzszego, ale jesli usune sposób pobierania to domyslny mam od najwyzszego..
redelek
Hej, hej

Na nikogo nie napadam smile.gifsmile.gif

No dobra a dopisz do
  1. <?php
  2. echo "Rekord pomyślnie skasowany $del_id";
  3. ?>

Zamień klawisze na linki i zobacz czy po najechaniu na link masz tą samą wartość ID co w tabeli.
Moje zapytanie DELETE wygląda podobnie do Twojego i u mnie kasowanie działa. Tylko ja GET kasuję rekord
Może tu jest problem. Spekuluję i staram się pomóc smile.gif

  1. <?php
  2. $id_del      = $_GET['id_del'];
  3.    $query   = "DELETE FROM db_name WHERE id = '$id_del'";
  4.    $result  = mysql_query($query) or die('Upsss kasowanie nieudane :(');
  5. ?>


Pozdrawiam
Redelek
kamosis
moze inaczej zacznej zaczne...

ponizej oryginał działający w 100%

Kod
<html>
<head>

</head>
<body>
<table border="1" width="98%" cellspacing="0" cellpadding="0" bordercolorlight="#000000">
<tr>
<td width="96%" colspan="7" bgcolor="#C0C0C0">
<p align="center"><b><font size="2">Dane osobowe</font></b></td>
</tr>
<tr>
<td width="4%" align="center" bgcolor="#E0E0E0">
<p align="center"><font size="2">&nbsp;ID</font></td>
<td width="18%" align="center" bgcolor="#E0E0E0">
<p align="center"><font size="2">Imię</font></td>
<td width="18%" align="center" bgcolor="#E0E0E0"><font size="2">Nazwisko</font></td>
<td width="18%" align="center" bgcolor="#E0E0E0"><font size="2">Data
urodzenia</font></td>
<td width="18%" align="center" bgcolor="#E0E0E0"><font size="2">Adres</font></td>
<td width="14%" align="center" bgcolor="#E0E0E0"><font size="2">Telefon</font></td>
<td width="6%" align="center" bgcolor="#E0E0E0"><font size="2">Kasuj</font></td>
</tr>


<?php

require_once('./config.php'); // załaczamy plik config.php

$zapytanie = "SELECT * FROM dane ORDER BY imie DESC";
$wykonaj = mysql_query ($zapytanie);
while($wiersz=mysql_fetch_array ($wykonaj)) {
echo " <tr>
<td width=\"4%\">".$wiersz['id']."</td>
<td width=\"18%\">".$wiersz['imie']."</td>
<td width=\"18%\">".$wiersz['nazwisko']."</td>
<td width=\"18%\">".$wiersz['dataur']."</td>
<td width=\"18%\">".$wiersz['adres']."</td>
<td width=\"14%\">".$wiersz['telefon']."</td>
<td width=\"6%\"><b><a href=\"f2.php?stan=del&iddel=".$wiersz['id']."\">KASUJ</a></b></td>
</tr>";
}
if($stan=='del') {
$zapytanie2="DELETE FROM dane WHERE id=$iddel";
$wynik2 = mysql_query($zapytanie2);
echo "Rekord o id=$iddel został skasowany !";
}
else {

}
?>

<tr>

<a href="f.php"><button type="submit">Podgląd</button></a><a href="f1.php"><button type="submit">Dodaj</button></a><a href="f2.php"><button type="submit">Usuń</button></a><a href="f3.php"><button type="submit">Modyfikuj</button></a><a href="f4.php"><button type="submit">Szukaj</button></a>
</tr>
</table>
</body>
</html>


Kiedy na stronce index.php includuje tą strone to stronka sie przeładuje, ale nic niedziała..

hej i po świętach..

skleciłem do kasowania cos takiego..

Kod
<?php
if($send=='Wyslij') {


$zapytanie = "DELETE FROM dane WHERE id=$id";

$wykonaj = mysql_query ($zapytanie);
echo "<BR>Dane dodane prawidłowo ! Dziękujemy za wypełnieni formularza !";
}
else {
echo "<form method=\"post\" action=\"index.php?go=f2\">
<div align=\"center\">
<center>
<table border=\"1\" width=\"50%\" bordercolorlight=\"#000000\" cellspacing=\"0\" cellpadding=\"0\">


<tr>
<td width=\"50%\"><font size=\"2\" face=\"Verdana\">Podaj nr ID do skasowania</font></td>
<td width=\"50%\" align=\"center\"><font size=\"2\" face=\"Verdana\"><input type=\"text\" name=\"id\" size=\"20\"></font></td>
</tr>
<tr>
<tr>
<td width=\"100%\" colspan=\"2\">
<p align=\"center\"><font size=\"2\" face=\"Verdana\"><input type=\"submit\" value=\"Wyslij\" name=\"send\"></font></td>
</tr>
</table>
</center>
</div>
</form>";
}

?>


i działa jest ok.

natomiast mam problem z edycją..

Kod
<?php



if($send=='szukaj') {
$zapytanie = "SELECT * FROM dane where id='$id'";
$wykonaj = mysql_query ($zapytanie);
$tablica = mysql_fetch_array($wykonaj);
echo "<form method=\"post\" action=\"index.php?go=f3\">
<div align=\"center\">
<center>
<table border=\"1\" width=\"50%\" bordercolorlight=\"#000000\" cellspacing=\"0\" cellpadding=\"0\">
<tr>
<td width=\"50%\"><font size=\"2\" face=\"Verdana\">Imie</font></td>
<td width=\"50%\" align=\"center\"><font size=\"2\" face=\"Verdana\"><input type=\"text\" name=\"imie\" value=\"".$tablica['imie']."\" size=\"20\"></font></td>
</tr>
<tr>
<td width=\"50%\"><font size=\"2\" face=\"Verdana\">Nazwisko</font></td>
<td width=\"50%\" align=\"center\"><font size=\"2\" face=\"Verdana\"><input type=\"text\" name=\"nazwisko\" value=\"".$tablica['nazwisko']."\" size=\"20\"></font></td>
</tr>
<tr>
<td width=\"50%\"><font size=\"2\" face=\"Verdana\">Data urodzenia YYYY-MM-DD</font></td>
<td width=\"50%\" align=\"center\"><font size=\"2\" face=\"Verdana\"><input type=\"text\" name=\"dataur\" value=\"".$tablica['dataur']."\" size=\"20\"></font></td>
</tr>
<tr>
<td width=\"50%\"><font size=\"2\" face=\"Verdana\">Adres</font></td>
<td width=\"50%\" align=\"center\"><font size=\"2\" face=\"Verdana\"><input type=\"text\" name=\"adres\" value=\"".$tablica['adres']."\" size=\"20\"></font></td>
</tr>
<tr>
<td width=\"50%\"><font size=\"2\" face=\"Verdana\">Telefon</font></td>
<td width=\"50%\" align=\"center\"><font size=\"2\" face=\"Verdana\"><input type=\"text\" name=\"telefon\" value=\"".$tablica['telefon']."\" size=\"20\"></font></td>
</tr>
<tr>
<td width=\"100%\" colspan=\"2\">
<p align=\"center\"><font size=\"2\" face=\"Verdana\"><input type=\"submit\" value=\"Modyfikuj\" name=\"stan\"></font></td>
</tr>
</table>
</center>
</div>

</form>";
}

elseif ($stan=='Modyfikuj')

{


$zapytanie2 = "UPDATE `dane` SET ,imie='$imie', nazwisko='$nazwisko', dataur='$dataur', adres='$adres',telefon='$telefon' where id='$id'";
$wykonaj = mysql_query ($zapytanie2);


echo "<br>Dane poprawione<BR><a href=\"index.php?go=f3\">Obejrzyj poprawiona bazę</a>";}
else {
echo "<center><br><form method=\"post\" action=\"index.php?go=f3\"><input type=\"text\" name=\"id\" size=\"20\"><br><input type=\"submit\" value=\"szukaj\" name=\"send\">";

}

?>


Pobiera dane z odpowiedniego nr. id, ale nienadpisuje ich do bazy
piotrooo89
w zapytaniu masz byka:

  1. <?php
  2. $zapytanie2 = "UPDATE `dane` SET ,imie='$imie', nazwisko='$nazwisko', dataur='$dataur', adres='$adres',telefon='$telefon' where id='$id'";
  3. ?>


na:

  1. <?php
  2. $zapytanie2 = "UPDATE `dane` SET imie='$imie', nazwisko='$nazwisko', dataur='$dataur', adres='$adres', telefon='$telefon' WHERE id='$id'";
  3. ?>
kamosis
niestety niepomogło..nadal nienadpisuje..

moze jakos zmienną id powinienem przenosic do nastepnej czesci skryptu?

sam niewiem co dalej..
piotrooo89
wiec teraz pytanie za 100pkt czy masz "coś" w zmiennej $id?

  1. <?php
  2. echo $id;
  3. ?>


daj sobie przed zapytaniem. i sprawdź czy coś się wyświetla.
kamosis
sciana.gif pusto..
piotrooo89
dlatego nie możesz UPDATE'ować. jakoś nie widzę żebyś nadawał jakąś wartość zmiennej $id. musisz jej nadać jakąś wartość albo pokaż miejsce w kodzie w którym to robisz.
kamosis
Kod
else {
echo "<center><br><form method=\"post\" action=\"index.php?go=f3\"><input type=\"text\" name=\"id\" size=\"20\"><br><input type=\"submit\" value=\"szukaj\" name=\"send\">";

}



w pole tekstowe wpisuje nr. wiersza jaki ma byc edytowany

Formularz

Powyzej link do stronki

p.s. Niedziała pod ie, ale pomecze to jeszcze..
piotrooo89
poczytaj o register_globals.

  1. <?php
  2. $id=$_POST['id'];
  3. $imie=$_POST['imie'];
  4. $nazwisko=$_POST['nazwisko'];
  5. $dataur=$_POST['dataur'];
  6. $adres=$_POST['adres'];
  7. $telefon=$_POST['telefon'];
  8. $zapytanie2 = "UPDATE `dane` SET imie='$imie', nazwisko='$nazwisko', dataur='$dataur', adres='$adres', telefon='$telefon' WHERE id='$id'";
  9. ?>
kamosis
Bede musial..

Heh z przyciskami pod ie sobie poradziłem, ale nadal niemoge znalesc rozwiązania dla problemu modyfikacji..
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.