Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    sostituzione each con foreach

    avrei bisogno di un aiutino debbo sostituire each con foreach in questa porzione di codice:



    $chiave = $_POST['chiave'];
    $keys = explode (",", $chiave);
    $query = "";
    reset ($keys);


    //foreach (list(,$parola) as $keys)


    while (list(,$parola) = each ($keys))
    { $parola = trim($parola);
    if ($parola != "")
    $query .= "tipopiatto LIKE '%$parola%' OR ";
    }
    $query .= "0";
    $query = "SELECT id, titolo, tipopiatto FROM $db_tab WHERE " . $query;
    $result = mysqli_query($db, $query);

    ho provato ad inserirlo ma non funziona è la riga commentata dove sbaglio?

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,038
    Il primo parametro della funzione foreach() deve essere l'array su cui ciclare.

  3. #3
    ho provato cosi ma non funziona...

    foreach ( $keys as list(,$parola))


    //while (list(,$parola) = each ($keys))
    { $parola = trim($parola);
    if ($parola != "")
    $query .= "tipopiatto LIKE '%$parola%' OR ";
    }

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,038
    Quote Originariamente inviata da Blackeyes Visualizza il messaggio
    ho provato cosi ma non funziona...
    Dal regolamento
    4. "Non funziona" e' un sintomo troppo vago, specificate sempre in che modo qualcosa non funziona: se ottenete un errore (nel qual caso specificate l'errore come da punto precedente), se ottenete una pagina bianca, se ottenete un comportamento diverso da quello atteso, ditelo sempre chiaramente.
    Quindi, spiega la situazione:
    - come è fatto l'array $keys?
    - perché usi list() per tirarne fuori i valori?
    - in che modo il foreach() "non funziona"? Cosa ti aspetti che facesse e invece che cosa fa?

  5. #5
    Nel suo funzionamento normale lo allo script viene passata una stringa tramite un menu a tendina e fintanto che la parola che rappresenta l'array è presente nei record del db questi vengono estratti uno sotto l'altro e gli viene attribuito un link che poi fa riferimento al view.php perr essere visualizzato correttamente

    ecco lo script completo:
    $chiave = $_POST['chiave'];
    $keys = explode (",", $chiave);
    $query = "";
    reset ($keys);


    foreach ( $keys as list(,$parola))


    //while (list(,$parola) = each ($keys))
    { $parola = trim($parola);
    if ($parola != "")
    $query .= "tipopiatto LIKE '%$parola%' OR ";
    }
    $query .= "0";
    $query = "SELECT id, titolo, tipopiatto FROM $db_tab WHERE " . $query;
    $result = mysqli_query($db, $query);
    //echo $query; dopo l'esecuzione di una query ne mostra il risultato a video
    while ($row = mysqli_fetch_array($result))
    {
    echo "<a href=\"view.php?id=$row[id]\">" . " $row[titolo]" . " $row[tipopiatto]</a><br>";
    }
    foot();
    ?>

  6. #6
    con il foreach non ho messaggi di errore ma non vengono estratti i record

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,038
    Non hai però risposto alle prime 2 domande:
    - come è fatto l'array $keys? Fa un esempio di contenuto.
    - perché usi list() per estrarne i valori? list() si usa in casi particolari, vediamo se tu sei in uno di questi.

  8. #8
    come vedo il contenuto dell' array ho provato echo ([$keys]); e senza le parentesi quadre ma ricevo sempre questo errore
    Notice: Array to string conversion in /portata.php on line 19


    i valori dell'array sono quelli passati da questo form:
    <form method=post action=portata.php>
    <p align="center">
    <select name=chiave>
    <option value=Antipasto>Antipasto
    <option value=Bevande>Bevande
    <option value=Carne>Carne
    <option value=Contorno>Contorni
    <option value=Dessert>Dessert
    <option value=Pesce>Pesce
    <option value=Pollame>Pollame
    <option value=Primo>Primo
    <option value=Salsa>Salse
    </select>
    <input type=submit value=Portata><br>

    non ricordo perchè all'epoca usai la funzione list

  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,038
    print_r($keys)

  10. #10
    grazie, ricevo questo output

    Array ( [0] => Antipasto )

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 © 2020 vBulletin Solutions, Inc. All rights reserved.