Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Porblem z wpisaniem zmiennej do bazy
Forum PHP.pl > Forum > Przedszkole
mkotek
Witam,
Może mi ktoś powiedzieć dlaczego podczas wykonywania samego skryptu php w oddzielnym pliku w bazie jest zmniejszana wartość o jeden, natomiast w całym skrypcie dopisywania użytkownika wartość zmiennej zawsze jest ustawiana na -1 co w rezultacie daje wyzerowanie rekordu questionmark.gif?exclamation.gif

  1. <?php
  2. include ('./includes/config.inc.php');
  3.  
  4.  
  5.  
  6. $idt = $_SERVER['QUERY_STRING'];
  7. require_once ('mysql_connect.php');
  8.  
  9. $temat = "SELECT ilosc_wolnych_miejsc FROM `tematy` WHERE id_temat='$idt'";
  10. $res_t = mysql_query ($temat) or trigger_error("Zapytanie: $temat\n<br />Błąd MySQL: " . mysql_error());                                          
  11. $il_wol = mysql_query ("SELECT * FROM `tematy` WHERE id_temat='$idt'");
  12. $il_wol2 = mysql_fetch_assoc ($il_wol);
  13. $il_wol3 = $il_wol2 ['ilosc_wolnych_miejsc'];
  14. $stan = $il_wol3 -1;
  15. $up = mysql_query ("UPDATE `tematy` SET `ilosc_wolnych_miejsc`='$stan'") or trigger_error("Zapytanie: $up\n<br />Błąd MySQL: " . mysql_error());
  16.  
  17.  
  18. ?>


tutaj jest cały skrypt dodawania użytkownika:
  1. ?php
  2.  
  3. include ('./includes/config.inc.php');
  4.  
  5. $idt = $_SERVER['QUERY_STRING'];
  6.  
  7. $page_title = 'Dopisywanie studenta';
  8.  
  9. include ('./includes/naglowek.html');
  10.  
  11. if (isset($_POST['submitted'])) {
  12. require_once ('mysqlconnect.php');
  13.  if (eregi ('^[[:alpha:].' -]{2,15}$', stripslashes(trim($_POST['imie'])))) {
  14.  
  15.                $fn = escape_data($_POST['imie']);
  16.  
  17.                      } else {
  18.  
  19.                $fn = FALSE;
  20.  
  21.                echo '<p><font color="red" size="+1">Proszę podać imię !</font></p>';
  22.  
  23.  }
  24.  
  25.  if (eregi ('^[[:alpha:].' -]{2,30}$', stripslashes(trim($_POST['nazwisko']))))
  26.                      {
  27.  
  28.                $ln = escape_data($_POST['nazwisko']);
  29.  
  30.                      } else {
  31.  
  32.                $ln = FALSE;
  33.  
  34.                echo '<p><font color="red" size="+1">Proszę podać nazwisko !</font></p>';
  35.  
  36.                      }
  37.  
  38.    if (isset($_POST['gr_dziek']))
  39.                    {
  40.             $gr = escape_data($_POST['gr_dziek']);
  41.                   }else{
  42.               $gr = FALSE;
  43.               echo '<p><font color="red" size="+1">Proszę podać prawidłową Gr Dziekańską !</font></p>';
  44.                   }
  45.  if (isset($_POST['nr_alb']))
  46.                      {
  47.             $al = escape_data($_POST['nr_alb']);
  48.                  
  49.                    $search = mysql_query ("SELECT * FROM studenci WHERE nr_alb='$al'") or trigger_error("Przepraszamy, ale system nie znalazł odpowiedniego wpisu w bazie <p>:" .mysql_error());
  50.                    $zm = mysql_fetch_assoc($search);
  51.                        if ($zm == NULL) {
  52.                            $pes = FALSE;
  53.                             }
  54.                            else $al = escape_data($_POST['nr_alb']);                  
  55.                   }
  56.  
  57.  
  58.  if ('$fn' && '$ln' && '$gr' && '$al') {
  59.                 $query = "SELECT id_student FROM studenci WHERE nr_alb='$al'";    
  60.  
  61.                $result = mysql_query ($query) or trigger_error("Zapytanie: $query\n<br />Błąd MySQL: " . mysql_error());
  62.  
  63.    
  64.  
  65.                        if (mysql_num_rows($result) == 0) {
  66.  
  67.    
  68.  
  69.                          $query = "INSERT INTO studenci (id_student, imie, nazwisko, gr_dziek, nr_alb) VALUES ('', '$fn', '$ln', '$gr_dziek', '$nr_alb')";    
  70.  
  71.                          $result = mysql_query ($query) or trigger_error("Zapytanie: $query\n<br />Błąd MySQL: " . mysql_error());
  72.  
  73.  
  74.  
  75.                              if (mysql_affected_rows() == 1) {
  76.  
  77.        
  78.  
  79.                                    echo '<h3>Zostałeś dopisany do tematu.</h3>';
  80.  
  81.                                    include ('./includes/footer.html');
  82.  
  83.                                    exit();      
  84.  
  85.                              } else {
  86.  
  87.                                echo '<p><font color="red" size="+1">Nie zostałeś dopisany do tematu ze względu na błąd systemu. Przepraszamy za niedogodność.</font></p>';
  88.  
  89.                              }    
  90.  
  91.      
  92.  
  93.                       } else {
  94.  
  95.                      echo '<p><font color="red" size="+1">Podany nr Albumu znajduje się już w bazie. Jeżeli masz wątpliwości skontaktuj sie z administratorem, lub wykładowcą.</font></p>';
  96.  
  97.                        }
  98.  
  99.    
  100.  
  101.  } else {
  102.  
  103.    echo '<p><font color="red" size="+1">Proszę spróbować jeszcze raz.</font></p>';    
  104.  
  105.  }
  106.  
  107. $temat = "SELECT ilosc_wolnych_miejsc FROM `tematy` WHERE id_temat='$idt'";
  108. $res_t = mysql_query ($temat) or trigger_error("Zapytanie: $temat\n<br />Błąd MySQL: " . mysql_error());                                          
  109. $il_wol = mysql_query ("SELECT * FROM `tematy` WHERE id_temat='$idt'");
  110. $il_wol2 = mysql_fetch_assoc ($il_wol);
  111. $il_wol3 = $il_wol2 ['ilosc_wolnych_miejsc'];
  112. $stan = $il_wol3 -1;
  113. $up = mysql_query ("UPDATE `tematy` SET `ilosc_wolnych_miejsc`='$stan'") or trigger_error("Zapytanie: $up\n<br />Błąd MySQL: " . mysql_error());
  114.  
  115.  
  116.  mysql_close();
  117.  
  118.  
  119.  
  120. }
  121.  
  122. ?>
  123. <h1>Zapisz się do tematu.</h1>
  124.  
  125. <form action="dopisz.php" method="post">
  126.  
  127.  <fieldset>
  128.  
  129.  
  130.  
  131.  <p><b>Imię:</b> <input type="text" name="imie" size="15" maxlength="15" value="<?php if (isset($_POST['imie'])) echo $_POST['imie']; ?>" /></p>
  132.  
  133.  
  134.  
  135.  <p><b>Nazwisko:</b> <input type="text" name="nazwisko" size="30" maxlength="30" value="<?php if (isset($_POST['nazwisko'])) echo $_POST['nazwisko']; ?>" /></p>
  136.  
  137.  
  138.  <p><b>Gr. Dziekańska:</b> <input type="text" name="gr_dziek" size="11" maxlength="11" value="<?php if (isset($_POST['gr_dziek'])) echo $_POST['gr_dziek']; ?>" /> </p>
  139.  
  140.  
  141.  
  142.  <p><b>Nr Albumu:</b> <input type="text" name="nr_alb" size="11" maxlength="11" value="<?php if (isset($_POST['nr_alb'])) echo $_POST['nr_alb']; ?>" /> </p>
  143.  
  144.    
  145.  
  146.  </fieldset>
  147.  
  148.  <div align="center"><input type="submit" name="submit" value="Dopisz się" /></div>
  149.  
  150.  <input type="hidden" name="submitted" value="TRUE" />
  151. </form>
  152.  
  153. <?php
  154.  
  155. include ('./includes/stopka.html');
  156.  
  157. ?>


Niestety jakoś brakuje mi pomysłów, co jest nie tak.
Przy okazji może ktoś podpowie jak mam zmienić
  1. <?php
  2. if (eregi ('^[[:alpha:].' -]{2,15}$', stripslashes(trim($_POST['imie'])))) {
  3. ?>

Wszystko fajnie mi działa, ale niestety nie mogę dopisać użytkownika z polskimi znakami w Imieniu, lub nazwisku.

Z góry thx
Wieviór
Nie do końca rozumiem o co chodzi, ale ten kod na pewno możesz poprawić:

  1. <?php
  2. include ('./includes/config.inc.php');
  3. $idt = $_SERVER['QUERY_STRING'];
  4. require_once ('mysql_connect.php');
  5.  
  6. $temat = "SELECT ilosc_wolnych_miejsc FROM `tematy` WHERE id_temat='$idt'";
  7. $res_t = mysql_query ($temat) or trigger_error("Zapytanie: $temat\n<br />Błąd MySQL: " . mysql_error());                                          
  8. $il_wol = mysql_query ("SELECT * FROM `tematy` WHERE id_temat='$idt'");
  9. $il_wol2 = mysql_fetch_assoc ($il_wol);
  10. $il_wol3 = $il_wol2 ['ilosc_wolnych_miejsc'];
  11. $stan = $il_wol3 -1;
  12. $up = mysql_query ("UPDATE `tematy` SET `ilosc_wolnych_miejsc`='$stan'") or trigger_error("Zapytanie: $up\n<br />Błąd MySQL: " . mysql_error());
  13. ?>


Po co dwa razy łączysz się do bazy selectem? Update lepiej zrobić z SET ilosc_wolnych_miejsc = ilosc_wolnych_miejsc-1. Pod warunkiem, że jest to jakiś int, a powinien być.
erix
Proszę o tag tematu.
mkotek
OK
to może inaczej (mała zmiana :/) . Do tabeli studenci chcę zapisać wartość element $idt jako id_temat i niestety za każdym razem zapisuje mi w tym miejscu 0.
  1. <?php
  2. $query = "INSERT INTO studenci (id_student, imie, nazwisko, gr_dziek, nr_alb, id_temat) VALUES ('', '$fn', '$ln', '$gr_dziek', '$nr_alb', '$idt')";
  3. ?>

Wszystkie inne dane są zapisywane poprawnie, więc dlaczego nie chce mi się dopisać id_temat? Już wyświetlałem wartość zmiennej $idt (która jest przekierowywana za pomocą adresu .php?nr) i jej wartość jest poprawna.
  1. <?php
  2. include ('./includes/config.inc.php');
  3.  
  4. $idt = $_SERVER['QUERY_STRING'];
  5.  
  6. $page_title = 'Dopisywanie studenta';
  7.  
  8. include ('./includes/naglowek.html');
  9.  
  10. if (isset($_POST['submitted'])) {
  11. require_once ('mysqlconnect.php');
  12. if (eregi ('^[[:alpha:].' -]{2,15}$', stripslashes(trim($_POST['imie'])))) {
  13.  
  14.               $fn = escape_data($_POST['imie']);
  15.  
  16.                     } else {
  17.  
  18.               $fn = FALSE;
  19.  
  20.               echo '<p><font color="red" size="+1">Proszę podać imię !</font></p>';
  21.  
  22. }
  23.  
  24. if (eregi ('^[[:alpha:].' -]{2,30}$', stripslashes(trim($_POST['nazwisko']))))
  25.                     {
  26.  
  27.               $ln = escape_data($_POST['nazwisko']);
  28.  
  29.                     } else {
  30.  
  31.               $ln = FALSE;
  32.  
  33.               echo '<p><font color="red" size="+1">Proszę podać nazwisko !</font></p>';
  34.  
  35.                     }
  36.  
  37.   if (isset($_POST['gr_dziek']))
  38.                   {
  39.            $gr = escape_data($_POST['gr_dziek']);
  40.                  }else{
  41.              $gr = FALSE;
  42.              echo '<p><font color="red" size="+1">Proszę podać prawidłową Gr Dziekańską !</font></p>';
  43.                  }
  44. if (isset($_POST['nr_alb']))
  45.                     {
  46.            $al = escape_data($_POST['nr_alb']);
  47.                
  48.                   $search = mysql_query ("SELECT * FROM studenci WHERE nr_alb='$al'") or trigger_error("Przepraszamy, ale system nie znalazł odpowiedniego wpisu w bazie <p>:" .mysql_error());
  49.                   $zm = mysql_fetch_assoc($search);
  50.                       if ($zm == NULL) {
  51.                           $pes = FALSE;
  52.                            }
  53.                           else $al = escape_data($_POST['nr_alb']);                  
  54.                  }
  55.  
  56.  
  57. if ('$fn' && '$ln' && '$gr' && '$al') {
  58.                $query = "SELECT id_student FROM studenci WHERE nr_alb='$al'";    
  59.  
  60.               $result = mysql_query ($query) or trigger_error("Zapytanie: $query\n<br />Błąd MySQL: " . mysql_error());
  61.  
  62.  
  63.  
  64.                       if (mysql_num_rows($result) == 0) {
  65.  
  66.  
  67.  
  68.                         $query = "INSERT INTO studenci (id_student, imie, nazwisko, gr_dziek, nr_alb, id_temat) VALUES ('', '$fn', '$ln', '$gr_dziek', '$nr_alb', '$idt')";    
  69.  
  70.                         $result = mysql_query ($query) or trigger_error("Zapytanie: $query\n<br />Błąd MySQL: " . mysql_error());
  71.  
  72.  
  73.  
  74.                             if (mysql_affected_rows() == 1) {
  75.  
  76.      
  77.  
  78.                                   echo '<h3>Zostałeś dopisany do tematu.</h3>';
  79.                                   $temat = mysql_query ("SELECT ilosc_wolnych_miejsc FROM tematy WHERE id_temat='$idt'");
  80.                                   $up = mysql_query ("UPDATE tematy SET ilosc_wolnych_miejsc=ilosc_wolnych_miejsc-1");
  81.                                   include ('./includes/footer.html');
  82.  
  83.                                   exit();      
  84.  
  85.                             } else {
  86.  
  87.                               echo '<p><font color="red" size="+1">Nie zostałeś dopisany do tematu ze względu na błąd systemu. Przepraszamy za niedogodność.</font></p>';
  88.  
  89.                             }    
  90.  
  91.    
  92.  
  93.                      } else {
  94.  
  95.                     echo '<p><font color="red" size="+1">Podany nr Albumu znajduje się już w bazie. Jeżeli masz wątpliwości skontaktuj sie z administratorem, lub wykładowcą.</font></p>';
  96.  
  97.                       }
  98.  
  99.  
  100.  
  101. } else {
  102.  
  103.   echo '<p><font color="red" size="+1">Proszę spróbować jeszcze raz.</font></p>';    
  104.  
  105. }
  106.  
  107. ?>

Tabela Studenci wygląda:
  1. CREATE TABLE IF NOT EXISTS `studenci` (
  2. `id_student` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `imie` char(50) COLLATE utf8_polish_ci DEFAULT NULL,
  4. `nazwisko` char(50) COLLATE utf8_polish_ci DEFAULT NULL,
  5. `id_wydzial` int(10) UNSIGNED DEFAULT NULL,
  6. `gr_dziek` char(8) COLLATE utf8_polish_ci DEFAULT NULL,
  7. `nr_alb` char(8) COLLATE utf8_polish_ci DEFAULT NULL,
  8. `id_temat` int(10) DEFAULT NULL,
  9. PRIMARY KEY (`id_student`)
  10. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=20 ;


Dodatkowo co dziwniejsze w kodzie:
  1. <?php
  2. $temat = mysql_query ("SELECT ilosc_wolnych_miejsc FROM tematy WHERE id_temat='$idt'");
  3. $up = mysql_query ("UPDATE tematy SET ilosc_wolnych_miejsc=ilosc_wolnych_miejsc-1");
  4. ?>

zmniejsza mi wartość, ale niestety we wszystkich rekordach, a powinno tylko w jednym, gdzie id_temat się zgadza :/
natomiast kombinacja:
  1. <?php
  2. $temat = mysql_query ("SELECT * FROM tematy");
  3. $up = mysql_query ("UPDATE tematy SET ilosc_wolnych_miejsc=ilosc_wolnych_miejsc-1 WHERE id_temat='$idt'");
  4. ?>

Tabela Tematy wygląda następująco:
  1. CREATE TABLE IF NOT EXISTS `tematy` (
  2. `id_temat` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `id_przedmiot` int(10) UNSIGNED DEFAULT NULL,
  4. `id_wykladowca` int(10) UNSIGNED DEFAULT NULL,
  5. `id_wydzial` int(10) UNSIGNED DEFAULT NULL,
  6. `temat` varchar(500) COLLATE utf8_polish_ci DEFAULT NULL,
  7. `ilosc_wolnych_miejsc` int(10) UNSIGNED DEFAULT NULL,
  8. `na_ile_osob` int(10) UNSIGNED DEFAULT NULL,
  9. PRIMARY KEY (`id_temat`)
  10. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=3 ;

nie zmienia mi żadnej wartości :/
Pomoże ktoś?
golaod
  1. UPDATE tematy SET ilosc_wolnych_miejsc=ilosc_wolnych_miejsc-1 WHERE id_temat = id_tematu


A co do $idt to nie chce mi się sprawdzać czemu się zmienia na 0.
mkotek
Jak już pisałem:
Cytat(mkotek @ 3.06.2009, 11:47:37 ) *
Dodatkowo co dziwniejsze w kodzie:
  1. <?php
  2. $temat = mysql_query ("SELECT ilosc_wolnych_miejsc FROM tematy WHERE id_temat='$idt'");
  3. $up = mysql_query ("UPDATE tematy SET ilosc_wolnych_miejsc=ilosc_wolnych_miejsc-1");
  4. ?>

zmniejsza mi wartość, ale niestety we wszystkich rekordach, a powinno tylko w jednym, gdzie id_temat się zgadza :/
natomiast kombinacja:
  1. <?php
  2. $temat = mysql_query ("SELECT * FROM tematy");
  3. $up = mysql_query ("UPDATE tematy SET ilosc_wolnych_miejsc=ilosc_wolnych_miejsc-1 WHERE id_temat='$idt'");
  4. ?>

nie zmienia mi żadnej wartości :/
Pomoże ktoś?

To niestety mi nie działa :/

Nie wiem jakim cudem i dlaczego tak jest, ale postawiłem od nowa cały serwer i zadziałało:
  1. <?php
  2. $query_t = mysql_query ("SELECT ilosc_wolnych_miejsc FROM tematy WHERE id_temat='$idt'");
  3.                                            $update = mysql_query ("UPDATE tematy SET ilosc_wolnych_miejsc=ilosc_wolnych_miejsc-1");
  4. ?>


Nie wiem tylko dlaczego w dalszym ciągu zmienna $idt podczas zapisu do bazy nie zapisuje mi wartości zmiennej tylko za każdym razem zapisuje mi 0
sciana.gif
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.