Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem ze przekazaniem zmiennych
Forum PHP.pl > Forum > XML, AJAX
devil-war
Od nie dawna zacząłem przygodę z ajaxem znalazłem pewien gotowy kod "walidacja formularza rejestracyjnego"
Wszystko działa pięknie ,chciałem ten kod wykorzystać w zapisywaniu profilu użytkownika.Niestety kod po przystosowaniu juz nie dziala ;(

Proszę o pomoc..


To jest plik z formularzem
Kod
<script type="text/javascript" src="js/mootools.js"></script>
    <script type="text/javascript">
        window.addEvent('domready', function(){
                    $('registerForm2').addEvent('submit', function(e) {
                        new Event(e).stop();
                        var log = $('log_res').empty().addClass('ajax-loading');
                        this.send({
                            update: log,
                            onComplete: function() {
                                log.removeClass('ajax-loading');
                            }
                        });
                    });
                });
    </script>
<?php
function your_profil(){
global $db,$user;

if(isset($_GET['mode']) && $_GET['mode'] == 'edit'){
?>
<table width="350">
<form method="POST" id="registerForm2" action="./ajax/save_profil.php">
<tr>
              <td><b>Nazwa użytkownika</b></td>
               <tr>
                <td><input readonly="readonly" class="input" size="40" name="First_name" id="First_name" value="<?php echo $user['username']; ?>"></td>
            </tr>
            </tr>
            <tr>
                <td><b>link do avatara</b></td>
                  <tr>
                <td><input type="text" class="input" size="40" name="user_avatar" id="user_avatar" value="<?php echo $user['avatar']; ?>"></td>
              </tr>
            </tr>
            <tr>
                <td><b>Twój numer Gadu-Gadu</b></td>
                 <tr>
                <td><input type="text" size="40" class="input" name="user_gg"  id="user_gg" value="<?php echo $user['gg']; ?>"></td>
             </tr>
            </tr>
            <tr>
                <td><b>Krótki Opis</b></td>
                 <tr>
                <td><input type="text" size="40" class="input" name="user_opis" id="user_opis" value="<?php echo $user['opis'] ?>"></td>
             </tr>
            </tr>
            <tr>
                <td><b>Ilo&#347ć filmików na stronę w zakłdce "Moje filmy"</b></td>
                 <tr>
                <td><input type="text" size="40" class="input" name="user_ilosc" id="user_ilosc" value="<?php echo $user['ilosc']; ?>"></td>
              </tr>
            </tr>
            <tr>
                <td></td>
                  <tr>
                <td><input type="submit" name="register" class="login" value="Rejestruj" alt="submit" title="submit" /></td>
              </tr>
            </tr>
    </form>
</table>
<div id="log">
        <div id="log_res">
        
        </div>
    </div>

<?

}
}
?>



to natomiast jest plik z zapisywaniem do bazy

Kod
<?php
//error_reporting(E_ALL);
//ini_set('display_errors', 1);
include('./includes/functions.php');

if(isset($_SESSION['name'])){
$user_zapytanie = $db->query("SELECT * FROM ".DB_PREFIX."users WHERE `username`= '".$_SESSION['name']."'");
$user = mysql_fetch_assoc($user_zapytanie);
}

/*
if(empty($_POST['First_name']))
{
$errors[] ='Nie podałeś nazwy użytkownika';
}
*/
if(is_array($errors))
    {
        echo '<p class="error"><b>Zapisanie si&#281 nie powiod&#322o ,nast&#261pi&#322y nast&#281puj&#261ce b&#322edy:</b></p>';
        while (list($key,$value) = each($errors))
        {

            echo '<span class="error">'.$value.'</span><br />';
        }
}else{
$db->query('UPDATE '.DB_PREFIX.'users SET
`avatar`     = "'.htmlspecialchars($_POST['user_avatar']).'",
`opis`       = "'.mysql_real_escape_string($_POST['user_opis']).'",
`gg`         = "'.intval($_POST['user_gg']).'",
`ilosc` = '.intval($_POST['user_ilosc']).' WHERE  `id` = '.$user['id'].'');

echo '<p><b>Zapisano</b></p>';
}



?>


To sa komunikaty przy zapisywaniu
Kod
[b]Notice[/b]:  Undefined variable: errors in [b]/ajax/save_profil.php[/b] on line [b]17[/b]

[b]Notice[/b]:  Undefined index:  user_avatar in [b]/ajax/save_profil.php[/b] on line [b]27[/b]

[b]Notice[/b]:  Undefined index:  user_opis in [b]/ajax/save_profil.php[/b] on line [b]28[/b]

[b]Notice[/b]:  Undefined index:  user_gg in [b]/ajax/save_profil.php[/b] on line [b]29[/b]

[b]Notice[/b]:  Undefined index:  user_ilosc in [b]/ajax/save_profil.php[/b] on line [b]30[/b]
delfinium
Masz błędy bo odwołujesz się do danych, które nie istnieją.

1. Najpierw zadeklaruj zmienną zanim sprawdzisz czy jest tablicą.

  1. <?php
  2. $errors=null;
  3. /*
  4. if(empty($_POST['First_name']))
  5. {
  6. $errors[] ='Nie podałeś nazwy użytkownika'; 
  7. }
  8. */
  9. ?>



2. Sprawdzaj najpierw isset( $_POST[nazwa] ) zanim się do tego odwołasz bo będziesz miał właśnie takie błędy.

A już na koniec skoro dostajesz takie błędy to znaczy, że formularz nie przesłał danych, które chciałeś zapisać. Może dane nie idą POSTem tylko GETem?

Wstaw w pliku save_profil.php kod i zobacz jaką metodą przesyłany jest formularz
  1. <?php
  2. echo 'POST';
  3. print_r( $_POST );
  4.  
  5. echo 'GET';
  6. print_r( $_GET );
  7. ?>
devil-war
Efekt:

POSTArray ( ) GETArray ( )

ale nie wiem jak to naprawić
delfinium
No to na moje chude oko wychodzi, że JS nie przesyła żadnej wartości z formularza. Pisałeś, żę przestało działać po przystosowaniu - pokaż kod przed przystosowaniem i tam będziemy szukać przyczyny.
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.