Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    209

    Problema con if tra due stringhe

    Ragazzi sono disperato e devo riuscire a sbrigare quasto grattacapo il prima possibile

    Ho due array che contengono gli ingredienti di varie ricette e un'altro oltre gli ingredienti, contiene anche la quantità necessaria. Ora devo verificare quanti ingredienti del primo database sono inseriti nel secondo e darne una percentuale.

    io ho pensato di fare in questo modo ma il risultato è zero.
    premetto che $keys contiene sol il nome degli ingredienti, mentre $keys1 contiene oltre agli ingredienti anche la quantità.
    ESEMPIO:
    $keys1[]
    200g pasta
    150g pomodoro
    sale
    pepe
    300g formaggio

    $keys[]
    pasta
    sale

    $conto=0;
    foreach ($keys1 As $arrayindex => $ingredientidb)
    {
    foreach ($keys As $ingrdientiform)
    {
    if ($ingredientiform == '%$ingrdientidb%' )
    $conto ++;
    }
    }

    $countingredienti = $arrayindex + 1;
    $media = ($conto * 10) / $countingredienti;
    echo "media: $media";
    Probabilmente l'errore sta nel codice scritto in grassetto, ma come posso fare?
    Vi prego aiutatemi!!!!

  2. #2
    il % serve solo nelle query SQL, per questo confronto il più semplice è strpos();

    if(strpos($ingredientidb, $ingredientiform) !== false){
    // l'ingrediente è trovato
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    209
    Mi ritorna ancora 0.

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    209
    Mi risponde ancora 0: probabilmente ho sbagliato ancora qualcosa....
    $conto=0;
    foreach ($keys1 As $arrayindex => $ingredientidb)
    {
    foreach ($keys As $ingrdientiform)
    {
    if(strpos($ingredientidb, $ingredientiform) !== false){
    $conto ++;
    }
    }
    }
    $countingredienti = $arrayindex + 1;
    $media = ($conto * 10) / $countingredienti;

  5. #5
    Codice PHP:
    $conto=0;
    foreach (
    $keys1 As $arrayindex => $ingredientidb)
    {
    foreach (
    $keys As $ingrdientiform)
    {
    if(
    strpos($ingredientidb) && strpos($ingredientiform)){
    $conto ++;
    }
    }
    }
    $countingredienti $arrayindex 1;
    $media = ($conto 10) / $countingredienti
    prova mpò...
    http://codecanyon.net/category/all?ref=Manuelandro
    And I bet she told a million people that she'd stay in touch, Well all the little promises they dont mean much,When theres
    memories to be made

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    209
    Mi risulta ancora zero.

    provo a farvi vedere tutto il codice, forse qualcuno mi sa dare una mano.

    <?php
    include ("config.php");
    include ("miefunzioni.inc");

    //verifica_SSL();

    session_start();

    echo "<table border=\"1\">\n
    <tr>\n
    <td>\n
    <h2>Risultati della ricerca</h2>\n
    </td>\n
    </tr>\n";

    $ptr_mysqls=mysql_connect($dbhost,$dbusername,$dbp ass) //Connessione al database
    or die("Impossibile connettersi al server MySQL.\n");
    mysql_select_db($dbname, $ptr_mysqls)// selezione del database
    or die("Impossibile aprire il database.\n");

    $keys = explode (",", $_POST['cerca']);

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

    }

    }
    $query .= "0";

    $query = "SELECT id, titolo, ingredienti, descrizione FROM $tabricetta WHERE " . $query . " ORDER BY id";

    $result = mysql_query($query, $ptr_mysqls);

    //se non sono stati trovati dei risultati stampo l'avviso
    if(mysql_num_rows($result) == 0) {
    echo "<tr>\n
    <td>\n
    <h2>Spiacente, nessun record trovato</h2>\n
    </td>\n
    </tr>\n";
    }
    else {
    while ($row = mysql_fetch_array($result)) {

    // explode del campo ingredienti presente sul db
    $keys1 = explode (",", $row['ingredienti']);

    reset ($keys1); //Reimposto il puntatore interno dell'array sulla posizione iniziale

    $conto=0;
    foreach ($keys1 As $arrayindex => $ingredientidb)
    {
    foreach ($keys As $ingrdientiform)
    {
    if(strpos($ingredientidb) && strpos($ingredientiform)){
    $conto ++;
    }
    }
    }

    $countingredienti = $arrayindex + 1;
    $percento = ($conto * 100) / $countingredienti;
    echo "media: $conto";//media ingredienti
    echo "<tr>\n
    <td>\n
    $row[titolo] - Percentuale ingredienti $percento\n
    </td>\n
    </tr>\n
    <tr>\n
    <td>$row[ingredienti] - </td>\n
    </tr>\n
    <tr>\n
    <td>$row[descrizione]</td>\n
    </tr>\n<tr>\n<td>\n</td>\n</tr>\n";
    }
    }
    echo "</table>\n
    \n
    \n<a href=\"javascript:history.back();\">Torna alla home page del sito</a>";

    //chiudo la connessione con mysql
    mysql_close($ptr_mysqls) or die ("Impossibile chiudere la connessione con MySQL");

    ?>

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.