Nie dodaje danych do bazy o wybranym id
|
krystian1988 |
Dodany dnia 11.10.2014 11:16:56
|
Zaawansowany
Postów: 1187 Pomógł: 100
v7.02.07 Data rejestracji: 07.05.2009 17:37
|
Witam, otóż mam problem od paru dni.
Chodzi o to że robię mały skrypt dla znajomego i problem mam taki że nie dodaje mi rekordów do bazy danych.
Bardziej rozwijając moją myśl chodzi o to że dodaje mi do bazy rekord ale nie do id wybranego projektu.
Zamieszczam kod php:
<?php
error_reporting(E_ALL);
include 'config.php';
db_connect();
check_login();
$user_data = get_user_data();
//$projekt = get_projekt();
include 'ank.php';
//dodanie ilosci punktow usera bez odliczania... $error :D
echo '<p>Witaj <b>'.$user_data['user_name'].'</b>!</p>
<p>Twoja liczba punktów którą możesz wykorzystać: <font color="red"><b>'.(empty($user_data['user_pkt']) ? '0' : $user_data['user_pkt']).'</b></font></p>
<p>[<a href="profile.php?id='.$user_data['user_id'].'">Wyświetl swój profil</a>] [<a href="editprofile.php">Edytuj profil</a>] [<a href="userlist.php">Lista użytkowników</a>] [<a href="logout.php">Wyloguj się</a>]</p>
<h4>Kto może oddać głosy na projekty:</h4>
Treść wklepana do pliku
<h4>Instrukcja:</h4>
Tu to samo co wyżej :)';
// ustawiamy ile ma być wyników na 1 strone
//dodawanie pkt
if (isset($_POST['add']) || isset($_GET['projekt_id'])) {
// filtrujemy dane
$add = $_POST['add'];
// zmienne tymczasowe na treść błędu
$err = '';
// i zapytanie sql
$up2 = '';
//$result2 = mysql_query("SELECT * FROM `projekt`");
//$result2 = mysql_query("SELECT Count(projekt_id) FROM `projekt`");
//$row1 = mysql_fetch_row($result2);
//echo '<br /><br />';
$result3 = mysql_query("SELECT projekt_id FROM `projekt`");
while($row1 = mysql_fetch_assoc($result3)) {
// jeśli są jakieś błędy z powyższych działań to je wyświetlamy
if(!empty($err)) {
echo $err;
} else {
// jeśli nie ma błędów to wykonujemy zapytanie dopisując te na aktualizacje
$pytanie = mysql_query("UPDATE `projekt` SET `projekt_pkt` = projekt_pkt+'".$add."' WHERE `projekt_id` = '".$row1['projekt_id']."'");
$pytanie = mysql_query("UPDATE `users` SET `user_pkt` = user_pkt-'".$add."' WHERE `user_id` = '".$user_data['user_id']."'");
if($pytanie) {
// jeśli zapytanie się wykonało to wyświetlamy komunikat...
echo '<p>Punkty zostały przyznane</p>';
// i pobieramy od nowa dane usera aby w poniższym formularze się one zaktualizowały
//$projekt = get_projekt();
} else {
// jeśli zapytanie będzie błędne to wyświetlamy treść errora
echo '<p>Niestety wystąpił błąd:<br>'.mysql_error().'</p>';
}
}
}
}
$per_page = 10;
// obliczamy ilość stron
$pages = ceil($per_page);
// aktualna strona - jeśli nie została podana to = 1
// jeśli została podana to filtrujemy ją i rzutujemy na int
$current_page = !isset($_GET['page']) ? 1 : (int)clear($_GET['page']);
// jeśli ktoś poda stronę mniejszą niż 1 lub większą niż ilość stron to zmieniamy ją na 1
if($current_page < 1 || $current_page > $pages) {
$current_page = 1;
}
$result1 = mysql_query("SELECT * FROM `projekt` ORDER BY `projekt_id` ASC LIMIT ".($per_page*($current_page-1)).", ".$per_page);
while($row = mysql_fetch_assoc($result1)) {
echo '<h2>'.$row['projekt_title'].'</h2>
'.$row['projekt_opis'].' <br /><br />
<div class="progress">
<div class="progress-bar" role="progressbar" aria-valuenow="'.(empty($row['projekt_pkt']) ? '0' : $row['projekt_pkt']).'" aria-valuemin="0" aria-valuemax="100" style="width: 100%;"><span class="sr-only">'.(empty($row['projekt_pkt']) ? '0' : $row['projekt_pkt']).'</span>
</div>
</div>';
echo '<p>Punkty przyznane Projektowi: '.(empty($row['projekt_pkt']) ? '0' : $row['projekt_pkt']).'</p>';
}
$zero = $user_data['user_pkt'] == 10 ;
if($zero > 0 ) {
echo '<form method="post" name="add" action="index.php">
<p>
<input type="text" name="add" maxlength="1">
</p>
<input type="submit" name="add" data-role="button" data-icon="plus" value="Dodaj punkty">
</p>
</form>';
} else {
echo 'Wykorzystana została Twoja cała pula dostępnych punktów.';
}
echo ' <a href="logout.php" data-role="button" data-icon="power">Wyloguj</a>
</div>
</div>';
db_close();
?>
Jeśli mam dodane dwa projekty dodaje mi do obu projektów wybraną ilość punktów.
Bardzo bym prosił o jakąś pomoc i bardzo z góry dziękuję.
BRAK STOPKI = BRAK POMOCY NA SUPPORCIE.PRZECZYTAJ:
Regulamin Supportu Nie pomagam na PW!!!
|
|
|
|
Wścibski Gość |
Dodany dnia 24.11.2024 17:45:53
|
Pan Kontekstualny
Postów: n^x
Data rejestracji: Zawsze
|
|
IP: localhost |
|
|
Piotrroger |
Dodany dnia 11.10.2014 14:21:53
|
Bywalec
Postów: 998 Pomógł: 19
v7.02.03 Data rejestracji: 27.04.2006 18:29
|
Dodaje do nie tego projektu, czyli? Do id wyższego, mniejszego? Czy zmienna $row1['projekt_id'] ma na pewno ten id, którego updatujesz?
|
|
|
|
krystian1988 |
Dodany dnia 11.10.2014 19:00:17
|
Zaawansowany
Postów: 1187 Pomógł: 100
v7.02.07 Data rejestracji: 07.05.2009 17:37
|
Właśnie o to chodzi bo jak zrobię w zapytaniu o id to mam błąd dlatego proszę o jakąś pomoc bo jest mi to bardzo potrzebne na wczoraj. Jak wspomniałem w pierwszym poście po update dodaje mi do wszystkich projektów a nie do tego co powinno i nie wiem jak to rozgryźć a wiem że pewnie chodzi o to jedno banalne zapytanie do SQL o co proszę Was.
BRAK STOPKI = BRAK POMOCY NA SUPPORCIE.PRZECZYTAJ:
Regulamin Supportu Nie pomagam na PW!!!
|
|
|
|
Piotrroger |
Dodany dnia 13.10.2014 12:17:50
|
Bywalec
Postów: 998 Pomógł: 19
v7.02.03 Data rejestracji: 27.04.2006 18:29
|
$result3 = mysql_query("SELECT projekt_id FROM `projekt`");
W tym momencie pobierasz wszystkie projekt_id z tabeli projekt. Potrzebujesz tylko jedno id, prawda? Musisz zatem zawęzić wyszukiwanie do jednego wiersza. Nie znam struktury bazy, więc tym bardziej ciężko mi określić do którego wiersza. Jedno jest pewne - brakuje Ci tutaj zapewne warunku WHERE.
|
|
|
|
krystian1988 |
Dodany dnia 13.10.2014 12:48:44
|
Zaawansowany
Postów: 1187 Pomógł: 100
v7.02.07 Data rejestracji: 07.05.2009 17:37
|
Chodzi o to że wyświetla poprawnie projekty ale nie dodaje do danego projektu prawidłowo ilości punktów.
Teraz jak daję 1 pkt do projektu np. 3 (mam ich 9) to dodaje mi automatycznie do wszystkich jakie mam.
BRAK STOPKI = BRAK POMOCY NA SUPPORCIE.PRZECZYTAJ:
Regulamin Supportu Nie pomagam na PW!!!
|
|
|
|
Piotrroger |
Dodany dnia 13.10.2014 13:27:37
|
Bywalec
Postów: 998 Pomógł: 19
v7.02.03 Data rejestracji: 27.04.2006 18:29
|
No piszę Ci, że źle pobierasz id_projektu, który potem updatujesz.
|
|
|
|
krystian1988 |
Dodany dnia 13.10.2014 13:32:26
|
Zaawansowany
Postów: 1187 Pomógł: 100
v7.02.07 Data rejestracji: 07.05.2009 17:37
|
Zaktualizowałem i nadal mam błąd w tej linii:
id = $_POST['id'];
$result3 = mysql_query("SELECT projekt_id FROM `projekt` WHERE projekt_id='".$id."'");
BRAK STOPKI = BRAK POMOCY NA SUPPORCIE.PRZECZYTAJ:
Regulamin Supportu Nie pomagam na PW!!!
|
|
|
|
Piotrroger |
Dodany dnia 13.10.2014 13:40:37
|
Bywalec
Postów: 998 Pomógł: 19
v7.02.03 Data rejestracji: 27.04.2006 18:29
|
Przepraszam, ale po co pobierasz id, które już masz w zmiennej? Abstra[cenzura]ąc od tego, że wróżbitą nie jestem i jaki błąd Ci wyskakuje - nie mam pojęcia, to ten SELECT jest zupełnie nie potrzebny, bo zmienna $id (przed id zapomniałeś znaczek $) to właśnie Twoje projekt_id
|
|
|
|
krystian1988 |
Dodany dnia 13.10.2014 13:44:52
|
Zaawansowany
Postów: 1187 Pomógł: 100
v7.02.07 Data rejestracji: 07.05.2009 17:37
|
Zapomniałem dodać ale mam ten owy znaczek ale pomimo to nie działa.
BRAK STOPKI = BRAK POMOCY NA SUPPORCIE.PRZECZYTAJ:
Regulamin Supportu Nie pomagam na PW!!!
|
|
|
|
Piotrroger |
Dodany dnia 13.10.2014 13:49:42
|
Bywalec
Postów: 998 Pomógł: 19
v7.02.03 Data rejestracji: 27.04.2006 18:29
|
Lodówka mi nie działa, może znasz przyczynę? Widzisz zależność? Musisz pisać co nie działa, jak nie działa - jakie błędy wyskakują. Inaczej to wróżenie z fusów :)
Zostaw tą zmienną $id, usuń tego selecta pod nim i zamień
$pytanie = mysql_query("UPDATE `projekt` SET `projekt_pkt` = projekt_pkt+'".$add."' WHERE `projekt_id` = '".$row1['projekt_id']."'");
na $pytanie = mysql_query("UPDATE `projekt` SET `projekt_pkt` = `projekt_pkt`+'".$add."' WHERE `projekt_id` = '".$id."'");
|
|
|
|
krystian1988 |
Dodany dnia 13.10.2014 14:10:19
|
Zaawansowany
Postów: 1187 Pomógł: 100
v7.02.07 Data rejestracji: 07.05.2009 17:37
|
Nic się nie zmieniło poza tym że odejmuje mi od usera pkt.
BRAK STOPKI = BRAK POMOCY NA SUPPORCIE.PRZECZYTAJ:
Regulamin Supportu Nie pomagam na PW!!!
|
|
|
|
Piotrroger |
Dodany dnia 13.10.2014 14:17:59
|
Bywalec
Postów: 998 Pomógł: 19
v7.02.03 Data rejestracji: 27.04.2006 18:29
|
Pan Kolega chyba sam nie wie co w tym kodzie ma :)
zamień na:
$pytanie = mysql_query("UPDATE `projekt` SET `projekt_pkt` = `projekt_pkt`+'".$add."' WHERE `projekt_id` = '".$_GET['projekt_id']."'");
|
|
|
|
krystian1988 |
Dodany dnia 13.10.2014 15:18:36
|
Zaawansowany
Postów: 1187 Pomógł: 100
v7.02.07 Data rejestracji: 07.05.2009 17:37
|
Dalej nie działa i mam błąd który pokazuje:
projekt_id
BRAK STOPKI = BRAK POMOCY NA SUPPORCIE.PRZECZYTAJ:
Regulamin Supportu Nie pomagam na PW!!!
|
|
|
|
Piotrroger |
Dodany dnia 13.10.2014 15:44:39
|
Bywalec
Postów: 998 Pomógł: 19
v7.02.03 Data rejestracji: 27.04.2006 18:29
|
To na pewno nie jest cały błąd, który się pokazuje.
|
|
|
|
krystian1988 |
Dodany dnia 13.10.2014 17:53:02
|
Zaawansowany
Postów: 1187 Pomógł: 100
v7.02.07 Data rejestracji: 07.05.2009 17:37
|
Proszę cała treść:
Notice: Undefined index: projekt_id in /home/virt104695/domains/*****************/index.php on line 33
Notice: Undefined index: projekt_id in /home/virt104695/domains/*****************/index.php on line 55
Linia 33:
$id = $_POST['projekt_id'];
oraz 55:
$pytanie = mysql_query("UPDATE `projekt` SET `projekt_pkt` = projekt_pkt+'".$add."' WHERE `projekt_id` = '".$_GET['projekt_id']."'");
BRAK STOPKI = BRAK POMOCY NA SUPPORCIE.PRZECZYTAJ:
Regulamin Supportu Nie pomagam na PW!!!
|
|
|
|
Piotrroger |
Dodany dnia 13.10.2014 18:03:37
|
Bywalec
Postów: 998 Pomógł: 19
v7.02.03 Data rejestracji: 27.04.2006 18:29
|
Zacznijmy od tego, w jaki sposób przekazuję sobie id projektu? POST czy GET?
|
|
|
|
krystian1988 |
Dodany dnia 13.10.2014 18:46:12
|
Zaawansowany
Postów: 1187 Pomógł: 100
v7.02.07 Data rejestracji: 07.05.2009 17:37
|
Właśnie przez GET bo robiłem na zasadzie tego co mam w profilu i tam mam przez GET i nie działa i robiłem przez POST i odwrotnie i nie zapisuje i dlatego mnie to głowi...
BRAK STOPKI = BRAK POMOCY NA SUPPORCIE.PRZECZYTAJ:
Regulamin Supportu Nie pomagam na PW!!!
|
|
|
|
Piotrroger |
Dodany dnia 13.10.2014 18:56:46
|
Bywalec
Postów: 998 Pomógł: 19
v7.02.03 Data rejestracji: 27.04.2006 18:29
|
<?php
error_reporting(E_ALL);
include 'config.php';
db_connect();
check_login();
$user_data = get_user_data();
//$projekt = get_projekt();
include 'ank.php';
//dodanie ilosci punktow usera bez odliczania... $error :D
echo '<p>Witaj <b>'.$user_data['user_name'].'</b>!</p>
<p>Twoja liczba punktów któr± możesz wykorzystać: <font color="red"><b>'.(empty($user_data['user_pkt']) ? '0' : $user_data['user_pkt']).'</b></font></p>
<p>[<a href="profile.php?id='.$user_data['user_id'].'">Wywietl swój profil</a>] [<a href="editprofile.php">Edytuj profil</a>] [<a href="userlist.php">Lista użytkowników</a>] [<a href="logout.php">Wyloguj się</a>]</p>
<h4>Kto może oddać głosy na projekty:</h4>
Treć wklepana do pliku
<h4>Instrukcja:</h4>
Tu to samo co wyżej :)';
// ustawiamy ile ma być wyników na 1 strone
//dodawanie pkt
if (isset($_POST['add']) || isset($_GET['projekt_id'])) {
// filtrujemy dane
$add = $_POST['add'];
// zmienne tymczasowe na treć błędu
$err = '';
// i zapytanie sql
$up2 = '';
//$result2 = mysql_query("SELECT * FROM `projekt`");
//$result2 = mysql_query("SELECT Count(projekt_id) FROM `projekt`");
//$row1 = mysql_fetch_row($result2);
//echo '<br /><br />';
//$result3 = mysql_query("SELECT projekt_id FROM `projekt`");
//while($row1 = mysql_fetch_assoc($result3)) {
// jeli s± jakie błędy z powyższych działań to je wywietlamy
if(!empty($err)) {
echo $err;
} else {
// jeli nie ma błędów to wykonujemy zapytanie dopisuj±c te na aktualizacje
$pytanie = mysql_query("UPDATE `projekt` SET `projekt_pkt` = projekt_pkt+'".$add."' WHERE `projekt_id` = '".$_GET['projekt_id']."'");
$pytanie = mysql_query("UPDATE `users` SET `user_pkt` = user_pkt-'".$add."' WHERE `user_id` = '".$user_data['user_id']."'");
if($pytanie) {
// jeli zapytanie się wykonało to wywietlamy komunikat...
echo '<p>Punkty zostały przyznane</p>';
// i pobieramy od nowa dane usera aby w poniższym formularze się one zaktualizowały
//$projekt = get_projekt();
} else {
// jeli zapytanie będzie błędne to wywietlamy treć errora
echo '<p>Niestety wyst±pił bł±d:<br>'.mysql_error().'</p>';
}
}
//}
}
$per_page = 10;
// obliczamy iloć stron
$pages = ceil($per_page);
// aktualna strona - jeli nie została podana to = 1
// jeli została podana to filtrujemy j± i rzutujemy na int
$current_page = !isset($_GET['page']) ? 1 : (int)clear($_GET['page']);
// jeli kto poda stronę mniejsz± niż 1 lub większ± niż iloć stron to zmieniamy j± na 1
if($current_page < 1 || $current_page > $pages) {
$current_page = 1;
}
$result1 = mysql_query("SELECT * FROM `projekt` ORDER BY `projekt_id` ASC LIMIT ".($per_page*($current_page-1)).", ".$per_page);
while($row = mysql_fetch_assoc($result1)) {
echo '<h2>'.$row['projekt_title'].'</h2>
'.$row['projekt_opis'].' <br /><br />
<div class="progress">
<div class="progress-bar" role="progressbar" aria-valuenow="'.(empty($row['projekt_pkt']) ? '0' : $row['projekt_pkt']).'" aria-valuemin="0" aria-valuemax="100" style="width: 100%;"><span class="sr-only">'.(empty($row['projekt_pkt']) ? '0' : $row['projekt_pkt']).'</span>
</div>
</div>';
echo '<p>Punkty przyznane Projektowi: '.(empty($row['projekt_pkt']) ? '0' : $row['projekt_pkt']).'</p>';
}
$zero = $user_data['user_pkt'] == 10 ;
if($zero > 0 ) {
echo '<form method="post" name="add" action="index.php">
<p>
<input type="text" name="add" maxlength="1">
</p>
<input type="submit" name="add" data-role="button" data-icon="plus" value="Dodaj punkty">
</p>
</form>';
} else {
echo 'Wykorzystana została Twoja cała pula dostępnych punktów.';
}
echo ' <a href="logout.php" data-role="button" data-icon="power">Wyloguj</a>
</div>
</div>';
db_close();
?>
Spróbuj uruchomić z dopiskiem do adresu ?projekt_id=wpisz istniejący id.
Zrobione na GETcie, jak nie działa to wyświetl błąd.
|
|
|
|
krystian1988 |
Dodany dnia 14.10.2014 20:11:25
|
Zaawansowany
Postów: 1187 Pomógł: 100
v7.02.07 Data rejestracji: 07.05.2009 17:37
|
Notice: Undefined index: add in /home/virt104695/domains/krismods-fusion.pl/public_html/ankieta/index.php on line 63
BRAK STOPKI = BRAK POMOCY NA SUPPORCIE.PRZECZYTAJ:
Regulamin Supportu Nie pomagam na PW!!!
|
|
|
|
Piotrroger |
Dodany dnia 14.10.2014 20:22:55
|
Bywalec
Postów: 998 Pomógł: 19
v7.02.03 Data rejestracji: 27.04.2006 18:29
|
Przede wszystkim Notice nie jest błędem. Jest to tylko informacja, że nie ma takiego indeksu w tablicy.
Zamień
if (isset($_POST['add']) || isset($_GET['projekt_id'])) {
na
if ((isset($_POST['add']) !empty(!$_POST['add'])) || (isset($_GET['projekt_id']) && !empty(!$_GET['projekt_id']))) {
Ps. wydaje mi się, że tutaj zamiast znaku lub ("||"), powinien być znak oraz ("&&").
|
|
|