Visualizzazione risultati 1 fino 8 di 8

Discussione: PHP/MySql - Se risultati query "0" = messaggio

  1. #1
    Guest

    Predefinito PHP/MySql - Se risultati query "0" = messaggio

    Non so se dal titolo si capisce, lo rispiego!
    Volevo sapere se è possibile (ma credo di sì, dato che l'ho visto in alcuni siti) far comparire un "messaggio di errore/spiegazione" se la ricerca prodotta da una query non da frutti.

    Del tipo, ho un menu a "tendina" (che tramite il !isset($_GET['variabile']) ) sceglie come fare la ricerca. Mettiamo che l'utente scelga dal menu un campo che attualmente è vuoto (diciamo perchè, come nel mio caso, tutti i cuccioli di questa razza hanno già trovato una famiglia) :) ora come ora, semplicemente "non esce niente"... invece vorrei che l'esito fosse un messaggio del tipo: "I cuccioli della razza scelta hanno già trovato tutti una famiglia :)".


    Come devo fare?
    Grazie
    Ultima modifica di zannadiluna : 12-04-2006 alle ore 11.14.25

  2. #2
    Guest

    Predefinito

    Codice PHP:
    if (mysql_num_rows ($risultato_della_query) < 1)
    {
    echo(
    'I cuccioli della razza scelta hanno gi&agrave; trovato tutti una famiglia :)');
    }
    nel caso utilizzi una query di tipo SELECT

    per insert, delete o update puoi usare mysql_affected_rows()

    mavericck

  3. #3
    Guest

    Predefinito

    Forse sbaglio qualcosa, ma inserendolo dopo il "select" me lo fa comparire anche quando da risultati. o.o"

    E se invece metto if e poi un else, mi da errore :P

  4. #4
    L'avatar di seneca
    seneca non è connesso Super Moderatore
    Data registrazione
    18-12-2004
    Residenza
    la Città Eterna
    Messaggi
    8,376

    Predefinito

    posta il codice che hai scritto te, probabilmente ci sarà un errore di sintassi perchè il codice di maverick è giusto.


    -- Aut Roma Aut Nihil!

  5. #5
    Guest

    Predefinito

    Ok, queste son tutte le versioni con cui ho provato :D
    Codice PHP:
    <?PHP
    if( !isset($_GET['ordina']) )
    {
    $_GET['ordina'] = 'ID_CUCCIOLO';//setta quello di default
    }

    if( !isset(
    $_GET['per']) )
    {
    $_GET['per'] = 'ASC';//setta quello di default
    }

    if( !isset(
    $_GET['razza']) )

    {
    $_GET['razza'] = '%';//setta quello di default
    }

    if( !isset(
    $_GET['sesso']) )

    {
    $_GET['sesso'] = '%';//setta quello di default
    }

    $sqlonline = "SELECT CUCCIOLI.CUCCIOLO,CUCCIOLI.ETA,CUCCIOLI.RAZZA,CUCCIOLI.ID_CUCCIOLO FROM CUCCIOLI
    WHERE 1 AND CUCCIOLO LIKE '%' AND RAZZA LIKE '
    {$_GET['razza']}{$_GET['sesso']}' ORDER BY {$_GET['ordina']} {$_GET['per']}";
    $conteggio = mysql_query($sqlonline,$connessione) or die(mysql_error());
    $CONTA = 0;
    while(
    $ROW3 = mysql_fetch_array($conteggio))
    {
    $CUCCIOLO=$ROW3["CUCCIOLO"];
    $RAZZA=$ROW3["RAZZA"];
    $ETA=$ROW3["ETA"];
    $ID_CUCCIOLO=$ROW3["ID_CUCCIOLO"];

    {
    $num++;
    }

    if (
    mysql_num_rows ($risultato_della_query) < 1)
    {
    echo(
    'I cuccioli della razza scelta hanno gi&agrave; trovato tutti una famiglia :)');
    }

    ?>
    Messa cosi, mi da un numero pari di "I cuccioli della razza scelta hanno gi&agrave; trovato tutti una famiglia :)" in schiera, pari a quanti sono poi i risultati della ricerca (in caso di 0 non esce niente)


    Codice PHP:
    <?PHP
    if( !isset($_GET['ordina']) )
    {
    $_GET['ordina'] = 'ID_CUCCIOLO';//setta quello di default
    }

    if( !isset(
    $_GET['per']) )
    {
    $_GET['per'] = 'ASC';//setta quello di default
    }

    if( !isset(
    $_GET['razza']) )

    {
    $_GET['razza'] = '%';//setta quello di default
    }

    if( !isset(
    $_GET['sesso']) )

    {
    $_GET['sesso'] = '%';//setta quello di default
    }

    $sqlonline = "SELECT CUCCIOLI.CUCCIOLO,CUCCIOLI.ETA,CUCCIOLI.RAZZA,CUCCIOLI.ID_CUCCIOLO FROM CUCCIOLI
    WHERE 1 AND CUCCIOLO LIKE '%' AND RAZZA LIKE '
    {$_GET['razza']}{$_GET['sesso']}' ORDER BY {$_GET['ordina']} {$_GET['per']}";
    $conteggio = mysql_query($sqlonline,$connessione) or die(mysql_error());
    if (
    mysql_num_rows ($risultato_della_query) < 1)
    {
    echo(
    'I cuccioli della razza scelta hanno gi&agrave; trovato tutti una famiglia :)');
    }
    $CONTA = 0;
    while(
    $ROW3 = mysql_fetch_array($conteggio))
    {
    $CUCCIOLO=$ROW3["CUCCIOLO"];
    $RAZZA=$ROW3["RAZZA"];
    $ETA=$ROW3["ETA"];
    $ID_CUCCIOLO=$ROW3["ID_CUCCIOLO"];

    {
    $num++;
    }

    ?>
    Messa cosi, mi mette una volta il messaggio, sia che ci siano risultati, sia che non ce ne siano.


    Dove sbaglio? :P

  6. #6
    Guest

    Predefinito

    Sostituisci $risultato_della_query con $conteggio

    mavericck

  7. #7
    Guest

    Predefinito

    Ottimo, andata! Grazie! :)

    EDIT: Dato che il thread è ancora aperto, faccio un'altra domanda, l'argomentazione è simile (in caso di necessità apro un altro thread) ma credo possa andare bene anche questo, anche perchè cosi se qualche altro utente avesse bisogno, troverebbe tutto assieme :)

    Se invece tramite la solita query, volessi "dividere" in pagine i risultati se superiori ad un certo numero?
    Ad esempio: se facendo la ricerca per età escono più di 15 cuccioli, dal sedicesimo i 15 successivi sono in seconda pagina, dal 31 in terza e via dicendo? :)


    FunCool: Non fare UP, usa il tasto Edita. Cancello [Risolto] dal titolo.
    Ultima modifica di funcool : 12-04-2006 alle ore 18.33.51

  8. #8
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Aggiungi un parametro $start alla tua pagina, così:
    Codice PHP:
    if (isset ($_GET['start']) || $_GET['start'] < 0)
    $start = $_GET['start'];
    else
    $start = 0;
    Per scrivere i link alle pagine precedente e successiva, puoi fare così:
    Codice PHP:
    echo ('<A HREF="?start=' . ($start - 15) . '">Pagina precedente</A>');
    echo (
    '<A HREF="?start=' . ($start + 15) . '">Pagina successiva</A>');
    Per elencarli, procedi così (dovrai cambiare un po' di più il tuo codice):
    Codice PHP:
    // prima verifica che ci siano risultati...
    if (mysql_num_rows ($conteggio) > 0)
    {
    // ... ci sono? allora salta i primi $start...
    for ($i = 0; $i < start; $i++)
    mysql_fetch_array ($conteggio);
    // ... e poi elenca i successivi 15, o finché finiscono
    $i = 0;
    while (
    $i < 15 && $row = mysql_fetch_array ($conteggio))
    {
    // ... stampa, elabora, fai quello che vuoi...

    // MOLTO IMPORTANTE!!!
    $i++;
    }
    }
    else
    {
    // la query non ha dato risultati? Pazienza, avvisa il visitatore...
    echo ('La query non ha dato risultati!!!');
    }
    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •