• User Attivo

    IF

    Salve,
    saranno le tante ore passate davanti ad un monitor ma non sto uscendo pazzo!
    Ho una tabella con degli id (int 11) che hanno un intervallo da 1 a 20, ho fatto questa select impostando come $zzz sia un numero dell'intervallo, come 16, sia come in questo caso 555 ma sempre "almeno un risultato" esce! :arrabbiato:

    [PHP]if (isset($_POST["submit"]))
    {
    $zzz = 555;

    $risultato=mysql_query("SELECT id FROM tabella WHERE id = $zzz", $conn);

    if (!$risultato)
    {echo "non c'è risultato";}
    else {echo "c'è almeno un risultato";}[/PHP]

    Cosa sto sbagliando?


  • User

    Quando non so dove sbattere la testa (per quanto mi riguarda), uso un sistema STUPIDO ma VALIDO ovvero inserisco degli ECHO per vedere le variabili.
    Quindi aggiungerei nel tuo caso questa cosa :

    [PHP]ECHO "RISULTATO: " . $risultato;[/PHP]

    subito prima dell' IF.

    Cosi potrai accogerti se la variabile $risultato e' realmente vuota oppure no e scoprire dove sta l'errore 🙂

    Comunque io faccio in modo leggermente diverso quando devo aprire una tabella:

    [PHP]$sql ="SELECT id FROM tabella WHERE id = $zzz";
    $query = @mysql_query($sql); //personalmente apro la connessione precedentemente[/PHP]

    Poi ci sono dei comandi specifici (vedi mysql_num_rows ad esempio) per capire se la query ha restituito un qualcosa oppure no.

    Faccio questo anche quando ho dei dubbi ad esempio su una SQL e in questo caso scrivo:

    [PHP]ECHO "SQL:" . $sql;[/PHP]

    Poi giustamente cancellerai le righe in questione 🙂 CIAOOO.


  • ModSenior

    Ciao nofcfro,
    mysql_query restituisce in entrambi i casi un resource, non il numero di righe che si ottengono invece con mysql_num_rows passandogli il resource come parametro.


  • User Attivo

    Esatto, infatti seguendo anche i consigli di criccroc ho modificato così:

    [PHP]if (isset($_POST["submit"]))
    {
    $zzz = $_POST['newadd'];
    $risultato = mysql_query("SELECT id FROM tabella01 WHERE id = $zzz", $conn);
    $contarighe = mysql_num_rows($risultato);
    if($contarighe == 1) {die("basta così");}
    else
    {
    $xxx = $_SESSION['idutenti'];
    //gli altri parametri

    $query = "INSERT INTO tabella01";
    $query .= "(...)";
    $query .= " values ('"..."')";

    if (mysql_affected_rows() == 1)
    {$messaggio = "Inserito!";}
    else
    {
    $zzz = $_POST['newadd'];
    $risultato = mysql_query("SELECT id FROM tabella02 WHERE id = $zzz", $conn);
    $contarighe = mysql_num_rows($risultato);
    if($contarighe == 1) {die("basta così");}
    else
    {
    $xxx = $_SESSION['idutenti'];
    //gli altri parametri

    $query = "INSERT INTO tabella02";
    $query .= "(...)";
    $query .= " values ('"..."')";

    if (mysql_affected_rows() == 1)
    {$messaggio = "Inserito!";}[/PHP]

    Praticamente: entra nella tabella01 se NON trovi quell'id, fai l'inserimento, altrimenti passa alla tabella successiva. Una volta che fai un inserimento, fermati.


  • User Attivo

    Come suggerito da Criccroc ho anche aggiunto la stampa dei parametri:

    [PHP]echo "idutente: " . $xxx . "<br/>";
    echo "newadd: " . $zzz . "<br/>";[/PHP]

    Ed entrambi sono passati correttamente!
    Ad esempio newadd è 17, e la tabella01 è vuota, perché non lo aggiunge? :arrabbiato:


  • User Attivo

    Risolto, pubblico qui magari può essere d'aiuto.

    [PHP]if (isset($_POST["submit"])) //se premo il pulsante submit
    {
    // -------------------- # PRIMA AGGIUNTA --------------------
    $zzz = $_POST['newadd'];
    $risultato = mysql_query("SELECT id FROM tabella01 WHERE id = $zzz", $conn);
    $contarighe = mysql_num_rows($risultato);
    if ($contarighe == 0)
    {
    //i vari _POST
    $query = "INSERT INTO tabella01";
    $query .= "(...)";
    $query .= " values ('" . $... ."')";

    $Risultato = mysql_query($query, $conn);
    if (mysql_affected_rows() == 1)
    {$messaggio = "Inserito nella tabella n°1";}
    }
    else
    {
    // -------------------- # SECONDAAGGIUNTA --------------------
    $zzz = $_POST['newadd'];
    $risultato = mysql_query("SELECT id FROM tabella02 WHERE id = $zzz", $conn);
    $contarighe = mysql_num_rows($risultato);
    if ($contarighe == 0)
    {
    //i vari _POST
    $query = "INSERT INTO tabella02";
    $query .= "(...)";
    $query .= " values ('" . $... ."')";

    $Risultato = mysql_query($query, $conn);
    if (mysql_affected_rows() == 1)
    {$messaggio = "Inserito nella tabella n°2";}
    }
    else
    { //e così via...[/PHP]