Question

C'est assez spécifique et je n'ai pas encore trouvé de réponse.
J'écris un script pour vérifier si un nom est déjà entré dans le serveur SQL à l'aide de jQuery $ .post.

Le frontal ressemble à ceci:

registre.php

<div id="container" class="container">
    <div id="wrapper" class="wrapper">
        <div id="title" class="title">
            Welcome to Taskar!
        </div>
        <div id="login" class="login">
            <form method="post" action="registermembers.php">
            <div id="exists">
                Register Your Company Below:
            </div>
            <input type="text" id="company" name="company" value="Company Name"/> <br />
            <br />
            <input type="text" id="password" name="password" value="Default Password"/> <br />
            <input type="submit" name="submitcompany" value="Submit" />
            </form>

            <script>
            $(document).ready(function() {
                $('#company').keyup(function() {
                    var $company = $(this).val();
                    var $reg = $('#exists').html();
                    $.post('include/reg_post.php', { company: $company, reg: $reg }, function(company) {
                    $('#exists').html(company);
                    });
                });
            });
            </script>

        </div>
    </div>
</div>

Le code backend ressemble à ceci:

reg_post.php

<?php
include 'include/db.php';

$reg = $_POST['reg'];
$company = $_POST['company'];
$email_hash = $_COOKIE['email_hash'];
$password = $_COOKIE['password'];

$sql = "SELECT * FROM taskar_employee WHERE (company = '$company')";
$result = mysql_query($sql) or die(mysql_error());
    if(mysql_num_rows($result) <= 1){
        echo $reg;
    } else {
        echo "This Company Already Exists!";
    } ?>

Maintenant, le problème que j'ai est que, lorsque je teste cela, cela fonctionne bien jusqu'au moment où je tape un nom d'entreprise qui se trouve dans la base de données. Cela me montre que l'entreprise est déjà enregistrée. Lorsque j'appuie sur le backspace ou tape une autre lettre, il me dit toujours que l'entreprise existe toujours, même si elle ne le ferait évidemment pas.

Il semble que l'instruction IF souhaite empêcher la fonctionnalité $ .post de se poursuivre après qu'il obtient la déclaration opposée?

Qu'en pensez-vous?

Était-ce utile?

La solution

Votre problème réside dans la façon dont vous utilisez votre $reg variable.

$reg contient le contenu HTML du #exists Div, c'est donc "Enregistrez votre entreprise ci-dessous:" Pour commencer. Mais, une fois que vous avez frappé un nom d'entreprise qui existe, vous remplacez ce HTML par "cette entreprise existe déjà!". À partir de ce moment-là, $reg, sur les côtés javascript et php, est toujours "Cette entreprise existe déjà!" (Depuis que vous passez toujours $reg dans votre message).

Il serait probablement beaucoup plus facile si le contenu de cette div n'était pas transmis ou géré par le code PHP du tout. Ce serait plus simple si votre script PHP vient de retourner "1" si la société existait, et "0" sinon (ou d'autres indicateurs tout aussi simples).

Ensuite, du côté javascript, vous pouvez simplement faire:

$.post('include/reg_post.php', { company: $company }, function(exists) {
    var message;
    if (exists === '1') {
        message = 'This Company Already Exists!';
    }
    else {
        message = 'Register Your Company Below:';
    }
    $('#exists').html(message);
});

Autres conseils

Tu passes $('#exists').html(); à retourner dans le cas où l'entreprise ne serait pas trouvée. Le problème est que, dans le cas où l'entreprise est trouvée, vous remplacez le HTML dans #exists. Ensuite, la prochaine fois que vous appellerez le message, vous transmettez ce texte, donc dans ce cas:

if(mysql_num_rows($result) <= 1){
    echo $reg;
} else {
    echo "This Company Already Exists!";
} 

ton $reg est maintenant réglé sur This Company Already Exists! Donc, peu importe ce qui se passe, vous allez retourner ce texte.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top