Recupero particolari dati

IlGladiatore

Nuovo Utente
16 Mag 2009
17
0
0
Salve a tutti!

Mi sono messo da quanche ora a smanettare con php con l'intendo di creare delle applicazioni che mi occorrono, per questo motivo mi sono creato un piccolo esercizio. Ossia inserire tramite un form dei dati e inserirli nel database per poi visualizzare tutti i record e anche alcuni record in particolare. Il mio problema sta proprio alla fine ossia prendere solo alcuni campi. Questo è il mio codice:

PHP:
<form method="post" action="file.php">
  <p>Nome  <input type="text" name="nome">    <br />
    Nognome <input type="text" name="cognome">    <br />
    Città       <input type="text" name="citta"> <br />
   Telefono <input type="text" name="telefono">  <br />
  Sesso <input type="checkbox" name="maschio" value="s">
 Maschio <input type="checkbox" name="femmina" value="s">
Femmina <br />
<br />
<input type="submit" value="Invia">
  </p>
</form>

Tutti i record!<br /><br />

<?php
include("config.php");
$db=mysql_connect($db_host,$db_user,$db_password);
if ($db==FALSE) die("errore nella connessione");
mysql_select_db($db_name,$db) or die("errore nella selezione del database");


$query = mysql_query("SELECT * FROM tabella",$db);

if ($query==FALSE) die("errore nella composizione della query");

mysql_close($db);

while($row=mysql_fetch_array($query)){

echo "nome: ".$row[Nome] . " cognome: ".$row[Cognome];

echo "<br>";

}

echo "<br><br> Solo le persone di cognome Pincopallo nate a MILANO: <br><br>";

$db=mysql_connect($db_host,$db_user,$db_password);
if ($db==FALSE) die("errore nella connessione");
mysql_select_db($db_name,$db) or die("errore nella selezione del database");

$query = mysql_query("SELECT * FROM tabella",$db);

if ($query==FALSE) die("errore nella composizione della query");

mysql_close($db);

while($raw=mysql_fetch_array($query))
{

	if($raw[Cognome]==?????

}

?>

L'algoritmo che avevo pensato e confrontare l'indice dell'array cognome con la stringa Pincopallo e se è uguale fare un'altor if all'interno che confronta sta volta l'indice della città con la stringa Milano, solo che non php non so se si può mettere " == " in java metto equals qua non so... come potrei fare per ottenere questo risultato?


Grazie in anticipo!
 
Si, == è utilizzato per verificare le uguaglianze...

Ma non ti conviene mettere le due condizioni direttamente nella query?
Cioè scrivere:
SELECT * FROM tabella WHERE .....&&...... ?
 
si avevo pensato una cosa di questo genere, ma non sapevo se si poteva fare e come si fa :D

una cosa del genere?

$b = mysql_query("SELECT Cognome, Citta FROM tabella WHERE Cognome= '$_SESSION[Pincopallo]' && Citta= '$_SESSION[Milano]'",$db);

se voglio solo gonome e città, mentre se voglio tutte le info della persona metto

$b = mysql_query("SELECT * FROM tabella WHERE Cognome= '$_SESSION[Pincopallo]' && Citta= '$_SESSION[Milano]'",$db);

Dico bene o sto invendando troppo? XD
 
Sì direi di sì....

C'è una cosa che non riesco a capire.... perché usi la variabile $_session?
 
sisi che sto inventando o che è corretto?

Bho ho messo la variabile perchè pensavo che mettendo quella stringa la dentro lui confrontava. Ripeto io non ho mai programmato in php quindi sono tutte supposizioni che faccio, quindi possono essere anche sbagliate :D
 
Sisi che è corretto...

Cmq puoi mettere direttamente Cognome='Pincopallo' senza $_session o roba simile!!!
 
Questo è il codice che ho fatto:

PHP:
echo "<br><br> Pincopalli nati ad Milano: <br><br>";

$db=mysql_connect($db_host,$db_user,$db_password);
if ($db==FALSE) die("errore nella connessione");
mysql_select_db($db_name,$db) or die("errore nella selezione del database");

$b=mysql_query("SELECT Cognome, Citta FROM tabella WHERE Cognome='Pincopallino' Citta='Milano'",$db);

if ($b==FALSE) die("errore nella composizione della query");

mysql_close($db);

while($rig=mysql_fetch_array($b))
{
echo "<br> ".$rig['Cognome'].$rig['Citta']; 
}

Questo è il risultato:

" errore nella composizione della query "
 
si adesso esegue, ma non come voglio io. Cioè io voglio che mi da il record per intero quindi individua quanti pincopalli di milano ci sono e mi restituisce nome, cognome, città, telefono e sesso. In questo modo restituisce cognome e città solamente anche se metto

PHP:
while($rig=mysql_fetch_array($b))
{
echo "<br> ".$rig['Nome'].$rig['Cognome'].$rig['Citta'].$rig['Telefono']; 
}

che posso fare?
 
Risolto scrivendo così:

PHP:
$b=mysql_query("SELECT Nome, Cognome, Citta, Telefono FROM tabella WHERE Cognome='Pincopallo' && Citta='Milano'",$db);

ma il sesso non lo inserisce, io come variabile avevo messo " s " ora appena dopo telefono scrivendo " Telefono, s " mi dice errore nella composizione della query... come mai?
 
Invece della query che hai scritto tu prova a mettere questa:

$b=mysql_query("SELECT * FROM tabella WHERE Cognome='Pincopallo' && Citta='Milano'",$db);

L' * serve per selezionare tutti i campi che hai nella tabella...
 
fatto....ma non cambia, mi sorge un dubbio....forse ho sbagliato io qui:

PHP:
<?php
$nome=$_POST['nome'];
$cognome=$_POST['cogonome'];
$citta=$_POST['citta'];
$telefono=$_POST['telefono'];
$s=$_POST['s'];

include("config.php"); 
$db=mysql_connect($db_host,$db_user,$db_password);
if ($db==FALSE) die("errore nella connessione");
mysql_select_db($db_name,$db) or die("errore nella selezione del database");

$query = "INSERT INTO tabella (Nome,Cognome,Citta,Telefono,Sesso) 
          VALUES ('{$_POST['nome']}','{$_POST['cognome']}','{$_POST['citta']}','{$_POST['telefono']}','{$_POST['s']}')";
$result=mysql_query($query,$db);

if ($result==FALSE) die("Errore inserimento del cliente,<br> la seguente query è sbagliata: $query");
echo "Cliente" .$nome .$cognome "inserito con successo";
mysql_close($db);

?>

Questo è il form:

PHP:
<form method="post" action="file.php">
  <p>Nome 
    <input type="text" name="nome">
    <br />
    Nognome    
    <input type="text" name="cognome">
    <br />
    Città        	
    <input type="text" name="citta">
<br />
Telefono 
<input type="text" name="telefono">
<br />
Sesso 
<input type="checkbox" name="maschio" value="s">
Maschio 
<input type="checkbox" name="femmina" value="s">
Femmina
<br />
<br />
<input type="submit" value="Invia">
  </p>
</form>
 
Ultima modifica:
Aspetta... ci sono alcuni errori!!

Innanzitutto nel form ti converrebbe usare dei radio button invece che delle checkbox...quindi:

<input type="radio" name="s" value="maschio"/> Maschio
<input type="radio" name="s" value="femmina"/> Femmina

poi...visto che hai messo i valori del form nelle variabili, la query per inserire i dati nel database è:

$query = "INSERT INTO tabella (Nome,Cognome,Citta,Telefono,Sesso)
VALUES ('$nome','$cognome','$citta','$telefono','$s')";

Attento che quando hai fatto il post hai scritto :
$cognome=$_POST['cogonome']; anziché $cognome=$_POST['cognome'];

Infine... quando devi visualizzare i risultati della query, devi mettere:
while($rig=mysql_fetch_array($b))
{
echo "<br> ".$rig['Nome'].$rig['Cognome'].$rig['Citta'].$rig['Telefono'].$rig['Sesso'];
}
Perché il nome del campo nella tua tabella è 'Sesso' e non 's'...
 
Ho provato a riscrivere il codice e funziona!
Allora... Hai una tabella 'tabella' con le colonne: Nome,Cognome,Citta,Telefono,Sesso,Id.

In config.php il codice è:

<?php
// Dati connessione al database
$db_host = ''; // Host - solitamente localhost
$db_utente = ''; // Nome utente del Database
$db_password = ''; // Password del Database
$db = ''; // Nome del Database

// Effettua la connessione al database
$dbh=mysql_connect ($db_host, $db_utente, $db_password) or die ('Errore nella stringa di connessione al database: '.mysql_error());
mysql_select_db($db,$dbh);
?>


Il form è questo:


<form method="post" action="">
<p>Nome
<input type="text" name="nome">
<br />
Cognome
<input type="text" name="cognome">
<br />
Città
<input type="text" name="citta">
<br />
Telefono
<input type="text" name="telefono">
<br />
Sesso
<input type="radio" name="s" value="maschio"/> Maschio
<input type="radio" name="s" value="femmina"/> Femmina

<br />
<br />
<input type="submit" name="Invia" value="Invia">
</p>
</form>


Il codice per inserire dati nel database è:

<?php

include("config.php");
if(isset($_POST['Invia']))
{
$nome = (isset($_POST['nome'])) ? trim($_POST['nome']) : '';
$cognome = (isset($_POST['cognome'])) ? trim($_POST['cognome']) : '';
$citta = (isset($_POST['citta'])) ? trim($_POST['citta']) : '';
$telefono = (isset($_POST['telefono'])) ? trim($_POST['telefono']) : '';
$s = (isset($_POST['s'])) ? trim($_POST['s']) : '';

$query = "INSERT INTO tabella (Nome,Cognome,Citta,Telefono,Sesso)
VALUES ('$nome','$cognome','$citta','$telefono','$s')";
mysql_query($query) OR die("Errore 003, contattare l'amministratore ".mysql_error());

if (!$query) {

die("Errore inserimento del cliente,<br> la seguente query è sbagliata: $query");}
else {echo "Cliente".$nome.$cognome."inserito con successo";}
}

?>


E il codice per vedere tutte le persone che si chiamano Pincopallino e la cui città è Milano è:

<?php
$b = mysql_query("SELECT * FROM tabella WHERE Cognome= 'bosio' && Citta= 'ciao'");
while($rig=mysql_fetch_array($b))
{
echo "<br> ".$rig['Nome'].$rig['Cognome'].$rig['Citta'].$rig['Telefono'].$rig['Sesso'];
}
?>

Adesso dovrebbe realmente funzionare... fammi sapere!
 
Scusa l'ultima query è questa....

<?php
$b = mysql_query("SELECT * FROM tabella WHERE Cognome= 'Pincopallino' && Citta= 'Milano'");
while($rig=mysql_fetch_array($b))
{
echo "<br> ".$rig['Nome'].$rig['Cognome'].$rig['Citta'].$rig['Telefono'].$rig['Sesso'];
}
?>
 
Si adesso funziona grazie :D

Il pezzo che inserisce i dati nel db copiato così x come lo hai scritto mi dava un errore quando andavo per inserire un nuovo campo solo che il contatto lo inseriva lo stesso anche con l'errore che mi generava, quindi ho eliminato

mysql_query($query) OR die("Errore 003, contattare l'amministratore ".mysql_error());

e inserisce sempre il contatto ma sta volta mi dice inserimento effettuato ecc...

Una cosa sola....

PHP:
if(isset($_POST['Invia']))
{
$nome = (isset($_POST['nome'])) ? trim($_POST['nome']) : '';
$cognome = (isset($_POST['cognome'])) ? trim($_POST['cognome']) : '';
$citta = (isset($_POST['citta'])) ? trim($_POST['citta']) : '';
$telefono = (isset($_POST['telefono'])) ? trim($_POST['telefono']) : '';
$s = (isset($_POST['s'])) ? trim($_POST['s']) : '';


Quando scrivi If isset vuol dire che se il pulsante è stato "cliccato" allora prosegui con l'inserimento?Può avere altri significati?
Dopo la dichiarazione della variabile inserisci nuovamente isset e poi un "?" che cosa serve? la funziona trim toglie gli spazi a destra e a sinistra se non erro quindi elimina eventuali spazi fatti durante l'inserimento?

Grazie per l'aiuto che mi stai dando :D
 
Ultima modifica:
Si esatto...

if(isset($_POST['Invia']))... vuol dire che quando schiacci il pulsante Invia ti fa le operazioni che indichi tra le { }.

E questo invece:
$nome = (isset($_POST['nome'])) ? trim($_POST['nome']) : '';
Controlla che la variabile sia valorizzata ed eventualmente elimina gli spazi vuoti....

Ciao!:D
 
e se vorrei creare un campo di ricerca dove inserisco per esempio un nome e mi trova tt quelli che si chiamano in quel nome? o comunque se inserisco anche un cognome?
 
Potresti fare una cosa di questo tipo...

Un form dove hai un campo di ricerca, un'opzione dove puoi scegliere per esempio tra nome, cognome e città, e il pulsante Cerca.
Questo è il codice:

<?

if(isset($_POST['cerca']))
{
// Dati Inviati dal modulo
$parola = (isset($_POST['parola'])) ? trim($_POST['parola']) : '';
$search = (isset($_POST['search'])) ? trim($_POST['search']) : '';
$pagricerca= "cerca.php?parola=".$parola."&search=".$search;
header("Location:".$pagricerca);
}
?>

<div id="ricerca">

<form id="cerca" method="post" action="">
Ricerca:
<input name="parola" type="text"/>
<select name="search">
<option selected="selected" value="1">Nome</option>
<option value="2">Cognome</option>
<option value="3">Citta</option>
</select>
<input type="submit" name="cerca" value="Cerca"/>
</form>

</div>


E poi devi avere la pagina Cerca.php dove vai a visualizzare i dati che hai cercato...

$parola = $_GET['parola'];
$search = $_GET['search'];
if ($parola)
{
$parole = trim($parola); // elimina gli spazi circostanti
$parola = explode(" ", parole);// array di singole parole
}
//Definizione della query
$sql = "SELECT * FROM tabella";

if ($search=="1"){
if (isset($parola))
{
$sql .=" WHERE ";
for($i = 0; $i < count($parola); $i++)
{
$sql .= "Nome LIKE '%" . $parola[$i]. "%'";
if ($i < count($parola)-1)
{
$sql .= " OR ";
}
}
}
}
if ($search=="2"){
if (isset($parola))
{
$sql .=" WHERE ";
for($i = 0; $i < count($parola); $i++)
{
$sql .= "Cognome LIKE '%" . $parola[$i]. "%'";
if ($i < count($parola)-1)
{
$sql .= " OR ";
}
}
}
}
if ($search=="3"){
if (isset($parola))
{
$sql .=" WHERE ";
for($i = 0; $i < count($parola); $i++)
{
$sql .= "Citta LIKE '%" . $parola[$i]. "%'";
if ($i < count($parola)-1)
{
$sql .= " OR ";
}
}
}
}

$result =mysql_query($sql);
if (mysql_num_rows($result) == 0) {
die("Non è stato trovato il termine cercato. Effettua una nuova ricerca");
}
else {
while ($ricerca = mysql_fetch_array($result)){
echo $ricerca['Nome']."<br>".$ricerca['Cognome']."<br>".$ricerca['Citta']."<br>".$ricerca['Telefono']."<br>".$ricerca['Sesso']; }
}


Non l'ho provato però dovrebbe funzionare....
 

Discussioni simili