@supersqualo.
Per fortuna per te non lavori per me.
@supersqualo.
Per fortuna per te non lavori per me.
Ridatemi i miei 1000 posts persi !!!!
Non serve a nulla ottimizzare qualcosa che non funziona.
Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr
Ultima modifica di supersqualo; 16-08-2017 a 23:28
WHERE CONCAT(f_name, ' ', l_name) LIKE '%$search%'
Qualcosa del genere potrebbe essere d aiuto?
Ho trovato questa discussione:
https://stackoverflow.com/questions/5893506/php-search-first-name-and-last-name
Cosa ne pensate di questo:
Codice PHP:
<?php
$fullName = "Chris Olson";
$names_exploded = explode(" ", $fullName); // will split " " (a space!)
counter_words = 0;
foreach($names_exploded as $each_name){
$counter_words++;
/* check the word count */
if($counter_words == 1){
$qPart .= " `f_name` LIKE '%$each_name%' OR `l_name` LIKE '%$each_name%'";
}else{
$qPart .= " OR `f_name` LIKE '%$each_name%' OR `l_name` LIKE '%$each_name%'";
}
}
$q = mysql_query("ELECT * FROM `glnce_users` WHERE $qPart");
while($r = mysql_fetch_assoc($q)){
// get your data here!
}
?>
Codice PHP:
<!doctype html><html>
<head>
<meta charset="utf-8">
<title>Ricerca</title>
</head>
<body>
<?php
include('./config.php');
$name = isset($_POST['name']) ? preg_replace('/\s+/', ' ', trim($_POST['ricerca'])) : '';
if ($name != '') {
$q = 'SELECT * FROM prenotazioni WHERE 1=2';
$part = explode(' ', $name);
foreach ($name as $part) {
$q .= ' OR nome LIKE \'%' . $part . '\' OR cognome LIKE \'%' . $npartame . '\'';
}
$exec = mysql_query($q);
if (mysql_num_rows($exec)) {
echo '<tr>
<td width="242">
<table border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
<tr></tr>
<tr>
<td align="center" bgcolor="#FFFFFF"><strong>Nome</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Cognome</strong></td>
</tr>';
while($row = mysql_fetch_array($exec)) {
echo '<tr>
<td align="center" bgcolor="#FFFFFF">' . $row['nome'] . '</td>
<td align="center" bgcolor="#FFFFFF">' . $row['cognome'] . '</td>
</table>
<p><br>
<br>';
}
}
else {
echo 'Errore: nessuna corrispondenza trovata.';
}
}
else {
echo 'Errore: Inserisci un nome.';
}
?>
</body>
</html>
Ho fatto degli errori e siccome il forum è buggato da far schifo quando si tratta di modifiche, posto il codice aggiornato:
Codice PHP:
<!doctype html><html>
<head>
<meta charset="utf-8">
<title>Ricerca</title>
</head>
<body>
<?php
include('./config.php');
$name = isset($_POST['name']) ? preg_replace('/\s+/', ' ', trim($_POST['ricerca'])) : '';
if ($name != '') {
$q = 'SELECT * FROM prenotazioni WHERE 1=2';
$parts = explode(' ', $name);
foreach ($parts as $part) {
$q .= ' OR nome LIKE \'%' . $part . '\' OR cognome LIKE \'%' . $npartame . '\'';
}
$exec = mysql_query($q);
if (mysql_num_rows($exec)) {
echo '<tr>
<td width="242">
<table border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
<tr></tr>
<tr>
<td align="center" bgcolor="#FFFFFF"><strong>Nome</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Cognome</strong></td>
</tr>';
while($row = mysql_fetch_array($exec)) {
echo '<tr>
<td align="center" bgcolor="#FFFFFF">' . $row['nome'] . '</td>
<td align="center" bgcolor="#FFFFFF">' . $row['cognome'] . '</td>
</table>
<p><br>
<br>';
}
}
else {
echo 'Errore: nessuna corrispondenza trovata.';
}
}
else {
echo 'Errore: Inserisci un nome.';
}
?>
</body>
</html>
Hai ragione...è divertente vedere come un forum di programmazione abbia queste lacune ma tutto sommato credo che sia voluta la non cancellazione dei post e la non possibilità di modifiche dopo un po di tempo... Comunque non smetterò mai di ringraziarti...appena posso lo testo... ma levami una curiosità questo andrà bene anche se inserissi + di 3 termini?
Ultima modifica di supersqualo; 17-08-2017 a 20:15
$q .= ' OR nome LIKE \'%' . $part . '\' OR cognome LIKE \'%' . $npartame . '\'';
correggi questa riga con questa:
$q .= ' OR nome LIKE \'%' . $part . '\' OR cognome LIKE \'%' . $part . '\'';
teoricamente si, praticamente non l'ho testato.ma levami una curiosità questo andrà bene anche se inserissi + di 3 termini
Poi le tabelle hanno la tua formattazione (sbagliata) infatti secondo me vedrai tutto sballato.
Non funziona...non trova niente (Errore: Inserisci un nome.)
La formattazione è cosi solo perchè ho preso una pagina che già avevo con una semplice query di ricerca che funzionava...ovviamente una volta che la query funzionerà aggiusterò il tutto ... ma purtroppo non funziona... ma correggimi se sbaglio...
isset($_POST['name'])
non è sbagliato?
Secondo me la soluzione sta nell'esplodere le parole e poi concatenarle... Ripeto non sono molto capace (non so nemmeno correggere quello che non va in quello che ha fatto zacca) la mia è solo un'idea
Ultima modifica di supersqualo; 17-08-2017 a 21:35
si sostituiscilo con
isset($_POST['ricerca'])
In locale l'ho provato e funziona:
Sorgente:codice:matias@matias-desktop:~$ mysql -u root -p Enter password: mysql> CREATE DATABASE test; Query OK, 1 row affected (0,00 sec) mysql> use test; Database changed mysql> CREATE TABLE prenotazioni ( nome VARCHAR(255), cognome VARCHAR(255) ); Query OK, 0 rows affected (0,01 sec) mysql> INSERT INTO prenotazioni VALUES ( 'Luca', 'De belli' ), ( 'xhiaun', 'zang fhan lin' ), ( 'Marco', 'Rossi' ); Query OK, 3 rows affected (0,00 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> SELECT * FROM prenotazioni; +--------+---------------+ | nome | cognome | +--------+---------------+ | Luca | De belli | | xhiaun | zang fhan lin | | Marco | Rossi | +--------+---------------+ 3 rows in set (0,00 sec)
Codice PHP:
<!doctype html><html>
<head>
<meta charset="utf-8">
<title>Ricerca</title>
</head>
<body>
<?php
$c = mysqli_connect('localhost', 'root', '1q2w3e4r', 'test') or die(mysqli_error($link));
$_POST['ricerca'] = 'zang fhan lin xhiaun';
$name = isset($_POST['ricerca']) ? preg_replace('/\s+/', ' ', trim($_POST['ricerca'])) : '';
if ($name != '') {
$q = 'SELECT * FROM prenotazioni WHERE 1=2';
$parts = explode(' ', $name);
foreach ($parts as $part) {
$q .= ' OR nome LIKE \'%' . $part . '\' OR cognome LIKE \'%' . $part . '\'';
}
$exec = mysqli_query($c, $q);
if (mysqli_num_rows($exec)) {
echo '<tr>
<td width="242">
<table border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
<tr></tr>
<tr>
<td align="center" bgcolor="#FFFFFF"><strong>Nome</strong></td>
<td align="center" bgcolor="#FFFFFF"><strong>Cognome</strong></td>
</tr>';
while($row = mysqli_fetch_array($exec)) {
echo '<tr>
<td align="center" bgcolor="#FFFFFF">' . $row['nome'] . '</td>
<td align="center" bgcolor="#FFFFFF">' . $row['cognome'] . '</td>
</table>
<p><br>
<br>';
}
}
else {
echo 'Errore: nessuna corrispondenza trovata.';
}
}
else {
echo 'Errore: Inserisci un nome.';
}
?>
</body>
</html>