Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Problema ciclo foreach

  1. #1

    Problema ciclo foreach

    Ciao a tutti ho questo ciclo foreach per fare una ricerca nel database.
    Funziona tutto bene però adesso vorrei che quando non trova niente scrivesse per esempio "Non ho trovato niente". Come faccio?

    if (isset($_POST['immobile']) AND ($_POST['immobile'] !='')) {
    echo "<h1>Risultati della ricerca</h1>\n";
    foreach ($_POST['immobile'] as $boh) {

    $sql2 = "SELECT article_id FROM cms_articles WHERE immobile LIKE '%$boh%' AND vani LIKE '%$_POST[vani]%' AND metri_quadri LIKE '%$_POST[metri_quadri]%' AND prezzo LIKE '%$_POST[prezzo]%' AND is_published=1 ORDER BY date_published DESC";

    $result2 = mysql_query($sql2, $conn)
    or die('Non riesco ad effettuare la ricerca; ' . mysql_error());


    while ($row2 = mysql_fetch_array($result2)) {
    outputStory($row2['article_id'], TRUE);
    }
    }
    }
    ::Nano::
    http://www.nanoscript.net

  2. #2
    Codice PHP:
    $result2 mysql_query($sql2$conn)
    or die(
    'Non riesco ad effettuare la ricerca; ' mysql_error());

    if(
    mysql_num_rows($result2) > 0) {

    while (
    $row2 mysql_fetch_array($result2)) {
    outputStory($row2['article_id'], TRUE);
    }

    } else  { echo 
    "non c'e' ciccia per i gatti";  } 

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Ciao grazie per la risposta.
    Così funziona ma rimane ancora un problema:

    Se Nell'array ci sono tre elementi e se durante la ricerca di questi tre ne trova solo uno poi mi scrive due volte "non c'è ciccia per gatti" mentre io vorrei che quando trova almeno un elemento non scrivesse nulla mentre quando non trova niente di niente scrivesse non c'è ciccia per gatti.
    E' possibile farlo?
    ::Nano::
    http://www.nanoscript.net

  4. #4
    certo che si .... controlla in quella funzione se ci sono risultati. Se non ci sono return false. Metti un contatore di eventi. Se eventi FALSE < di eventi totali stampi nulla.

    In altre parole che fai in quella funzione a cui passi i risultati?

    Insomma le soluzioni possono essere parecchie, ma se devono essere inserite in un contesto ... bisogna conoscere il contesto.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Ciao eccoti la funzione:

    function outputStory($article, $only_snippet=FALSE) {
    global $conn;
    if ($article) {
    $sql = "SELECT ar.*, usr.name ".
    "FROM cms_articles ar " .
    "LEFT OUTER JOIN cms_users usr ".
    "ON ar.author_id = usr.user_id " .
    "WHERE ar.article_id = " . $article;
    $result = mysql_query($sql,$conn);
    if ($row = mysql_fetch_array($result)) {
    echo "<h3>" . htmlspecialchars($row['title']) . "</h3>\n";
    echo "<h5>Inserito da: " . htmlspecialchars($row['name'])."
    ";
    if ($row['is_published'] == 1) {
    setlocale (LC_TIME, 'it_IT');
    echo date("j F, Y",strtotime($row['date_published']));
    } else {
    echo "non ancora pubblicato";
    }
    echo "</h5>\n";
    if ($only_snippet) {
    echo "

    \n";
    if ($row['filename']!="") {
    echo "<a href=\"upload_big/$row[filename]\" target=\"_blank\"><img src=\"upload/$row[filename]\" alt=\"\" /></a>";
    }
    echo nl2br(htmlspecialchars(trimBody($row['body'])));
    echo "</p>\n";
    echo "<h5><a href=\"viewarticle.php?article=" .
    $row['article_id'] . "\">Scheda completa...</a></h5>
    \n";
    } else {
    echo "

    \n";
    if ($row['filename']!="") {
    echo "<a href=\"upload_big/$row[filename]\" target=\"_blank\"><img src=\"upload/$row[filename]\" alt=\"\" /></a>";
    }
    echo nl2br(htmlspecialchars($row['immobile']))."
    ";
    echo "Vani: ". nl2br(htmlspecialchars($row['vani']))."
    ";
    echo "Mq: ".nl2br(htmlspecialchars($row['metri_quadri']))."
    ";
    echo "Prezzo: ".nl2br(htmlspecialchars($row['prezzo']))."
    ";
    echo nl2br(htmlspecialchars($row['body']));
    echo "</p>\n";
    }
    }
    }
    }

    Scusa ma non ho ben capito cosa devo fare.....
    ::Nano::
    http://www.nanoscript.net

  6. #6
    a questo punto manco io.

    conta le ricorrenze dell'array che vai a scandire, metti un contatore di eventi senza result set. Se eventi = risultati nulli stampi la stringa.

    Codice PHP:

    $num 
    count($_POST['immobile']);

    foreach (
    $_POST['immobile'] as $boh) {

    ......
    .....

    $result2 mysql_query($sql2$conn
    or die(
    'Non riesco ad effettuare la ricerca; ' mysql_error()); 

    if(
    mysql_num_rows($result2) > 0) { 

    while (
    $row2 mysql_fetch_array($result2)) { 
    outputStory($row2['article_id'], TRUE); 


    } else  { 
    $num--;  }


    //alla fine

    if($num == 0)  { echo "non c'e' ciccia per i gatti";  } 

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Miticooooooooo Grazie grazie
    ::Nano::
    http://www.nanoscript.net

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.