Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    108

    ricerca su 2 campi da database

    Ciao a tutti, avrei un problema nel codice che vi posto sotto.
    Ho creato un form per ricercare un elenco di persone in un database.
    Il codice funziona se cerco il campo 'nome cognome' , ma se cerco solo nome o solo cognome riesce a recuperare il valore 'nome cognome' ma genera anche un messaggio di errore : Undefined offset: 1 in pagina.php (alla riga che corrisponde a $nome2=$stringa[1]

    Ps: vorrei anche che digitando 'nomecognome' senza spazio fra i due ci fosse un risultato, ad ora non lo trova oltre alla solita segnalaziione di errore


    qui il codice:

    <?php
    require_once('connect.php');
    $stringa=$_GET['lista'];
    if ($nome1='nome' AND $nome2='cognome' or $nome2='nome' AND $nome1='cognome')
    {$stringa = explode(" ", $stringa);
    $nome1=$stringa[0];
    $nome2=$stringa[1];
    }

    $rs = mysql_query("SELECT * FROM elencopersone where nome like '%$nome1%' and cognome like '%$nome2%' or nome like '%$nome2%' and cognome like '%$nome1%' or cognome like '%$stringa%' or nome like '%$stringa%' ");
    $nr = mysql_num_rows($rs);
    if ($nr != 0){
    for($x = 0; $x < $nr; $x++){
    $row = mysql_fetch_assoc($rs);
    ?>


    Grazie per l'aiuto
    Ciao Japan
    Preferisco morire per qualcosa in cui credo che per qualcosa che ritengo vero,la vita di un artista è un lungo e interminabile suicidio e in fondo non mi dispiace che sia cosi..(O.Wilde)

  2. #2
    Prima di esplodere $stringa ti conviene controllare che contenga uno spazio. Perchè se contiene uno spazio significa che sono state inserite 2 parole.
    Se non fai questo controllo, se '$stringa=nome', la explode fa $nome1="nome" e $nome2=
    perchè ha esploso ma $stringa[1] non esiste perchè $stringa era una parola sola

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    108
    Ti ringrazio comunque per la tua risposta, sono riuscito a risolvere!!
    In pratica mettendo uno spazio qui: $stringa=$_GET['lista'].' ';

    Riposto tutto il codice corretto spero serve a qualcun altro

    <?php
    require_once('connect.php');
    $stringa=$_GET['lista'].' ';
    if ($nome1='nome' AND $nome2='cognome' or $nome2='nome' AND $nome1='cognome')
    {$stringa = explode(" ", $stringa);
    $nome1=$stringa[0];
    $nome2=$stringa[1];
    }

    $rs = mysql_query("SELECT * FROM elencopersone where nome like '%$nome1%' and cognome like '%$nome2%' or nome like '%$nome2%' and cognome like '%$nome1%' or cognome like '%$stringa%' or nome like '%$stringa%' ");
    $nr = mysql_num_rows($rs);
    if ($nr != 0){
    for($x = 0; $x < $nr; $x++){
    $row = mysql_fetch_assoc($rs);
    ?>


    ciao e grazie
    Japan
    Preferisco morire per qualcosa in cui credo che per qualcosa che ritengo vero,la vita di un artista è un lungo e interminabile suicidio e in fondo non mi dispiace che sia cosi..(O.Wilde)

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