ciao
fai una query su user perchè a quell'id deve (dovrebbe) corrispondere un unico indirizzo email e un unico nome e username
poi considera la possibilità di un registrato che non abbia annunci
PHP:
<?php
//.....
$us=mysql_query("SELECT name, user_name, user_email FROM user WHERE id=".$_SESSION['user_id'];
$user=mysql_fetch_array($us);
$jokelist=@mysql_query('SELECT * FROM annunci, citta, provincia WHERE user_id='.$_SESSION['user_id'].' AND provinciaid=provincia.id AND cittaid=citta.id ');
if (!$jokelist) {
exit('<p>Error performing query: ' . mysql_error() . '</p>');
}
$annunci=mysql_num_rows($jokelist);//verifica se ci sono annunci
if($annunci > 0){//l'user ha annunci
while ($joke = mysql_fetch_array($jokelist)) {
$descrizione = $joke['descrizione'];
$citta = $joke['citta'];
// Display the joke with author information
echo "<p>$descrizione<br />(by <a href=\'mailto:".$user['user_email']."\'>".$user['user_name']."</a>)<br />".$user['name']."<br />$citta<br /></p>";
}
}else{//non ci sono annunci per quell'user
echo "non ci sono annunci";
}
//....
?>
l'idea del mio cuginetto ( per qui mi sto imbattendo nella join e in questo sito ) è quella di far registrare il cliente ( gratuito ) con un form dove mette i suoi dati, ma le password ecc glie le da' lui registrandolo direttamente nell'admin..
Quindi ho creato una nuova tabella Cliente che ho legato alla tabella madre annunci e il risultato è fantastico, funziona eggregiamente e non da'
problemi.
ti posto il codice ....
PHP:
<?php
include 'dbc.php';
page_protect();
?>
<html>
<head>
<title>My Account</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="styles.css" rel="stylesheet" type="text/css">
</head>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="5" class="main">
<tr>
<td colspan="3"> </td>
</tr>
<tr>
<td width="160" valign="top">
<?php
if (isset($_SESSION['user_id'])) {?>
<div class="myaccount">
<p><strong>My Account</strong></p>
<a href="myaccount.php">My Account</a><br>
<a href="mysettings.php">Settings</a><br>
<a href="logout.php">Logout </a>
<p>You can add more links here for users</p></div>
<?php }
if (checkAdmin()) {
?>
<p> <a href="admin.php">Admin CP </a></p>
<?php } ?>
<p> </p>
<p> </p>
<p> </p></td>
<td width="732" valign="top"><p> </p>
<h3 class="titlehdr">Welcome <?php echo $_SESSION['user_name'];?></h3>
<?php
if (isset($_GET['msg'])) {
echo "<div class=\"error\">$_GET[msg]</div>";
}
?>
<p>This is the my account page</p>
<?php
$jokelist = @mysql_query(
'SELECT *
FROM annunci, citta, provincia, cliente WHERE user_id='.$_SESSION['user_id'].' AND provinciaid=provincia.id AND cittaid=citta.id AND clienteid=cliente.id ORDER BY `user_id` DESC LIMIT 1 ');
if (!$jokelist) {
exit('<p>Error performing query: ' . mysql_error() . '</p>');
}
while ($joke = mysql_fetch_array($jokelist)) {
$nome = $joke['nome'];
$cognome = $joke['cognome'];
$email = $joke['email'];
// Display the joke with author information
echo "$nome<br />";
echo "$cognome<br />";
echo "<a href='mailto:$email'>$email</a>";
}
?>
</td>
<td width="196" valign="top"> </td>
</tr>
<tr>
<td colspan="3"> </td>
</tr>
</table>
<?php echo $_SESSION['user_id'];?>
<br />
<br />
<br />
<?php
$jokelist = @mysql_query(
'SELECT *
FROM annunci, citta, provincia, cliente WHERE user_id='.$_SESSION['user_id'].' AND provinciaid=provincia.id AND cittaid=citta.id AND clienteid=cliente.id ');
if (!$jokelist) {
exit('<p>Error performing query: ' . mysql_error() . '</p>');
}
while ($joke = mysql_fetch_array($jokelist)) {
$descrizione = $joke['descrizione'];
$mq = $joke['mq'];
$locali = $joke['locali'];
$prezzo = $joke['prezzo'];
$tipologia = $joke['tipologia'];
$altro = $joke['altro'];
$name = $joke['name'];
$citta = $joke['citta'];
$nome = $joke['nome'];
$cognome = $joke['cognome'];
$email = $joke['email'];
// Display the joke with author information
echo "$descrizione<br />";
echo "$mq<br />";
echo "$locali<br />";
echo "$prezzo<br />";
echo "$tipologia<br />";
echo "$altro<br />";
echo "$name<br />";
echo "$citta<br /><br />";
echo "$nome<br />";
echo "$cognome<br />";
echo "$email<br /><br /><br />";
}
?>
</body>
</html>
Ora chiaramente lo sistemo, e ovvio che è tutto in fase test prima di finirlo.
Adesso altro piccolo problema ( scusami tanto ma con sta join sono proprio una capra ) ho preparato oltra a tutto il pannello di gestione anche il form per inserire gli annunci, ma era solo per prova, or devo inserirlo dentro alla pagina di gestione dell'utente.
La domanda è questa, per la città e provincia, lui basta che la seleziona e siamo ok, ma per non fargli selezionare anche l'id cliente e l'id users
che prenderebbe in automatico suppongo in $_SESSION user_id ecc ecc secondo te dove devo metterli qui
PHP:
<?php
require ("db_connect.php");
if (isset($_POST['descrizione'])):
// x un nuovo annuncio usa il form
$aid = $_POST['aid'];
$cid = $_POST['cid'];
$descrizione = $_POST['descrizione'];
$mq = $_POST['mq'];
$locali = $_POST['locali'];
$prezzo = $_POST['prezzo'];
$tipologia = $_POST['tipologia'];
$altro = $_POST['altro'];
$cats = $_POST['cats'];
if ($aid == '') {
exit('<p>Sceglia la provincia x l annuncio. Click "Back" and try again.</p>');
}
$sql = "INSERT INTO annunci SET
descrizione='$descrizione',
mq='$mq',
locali='$locali',
prezzo='$prezzo',
tipologia='$tipologia',
altro='$altro',
annunciodate=CURDATE(),
provinciaid='$aid',
cittaid='$cid'";
if (@mysql_query($sql)) {
echo '<p>Nuovo annuncio aggiunto</p>';
} else {
exit('<p>Errore aggiunta nuovo annuncio: ' . mysql_error() . '</p>');
}
$jid = mysql_insert_id();
if (isset($_POST['cats'])) {
$cats = $_POST['cats'];
} else {
$cats = array();
}
$numCats = 0;
foreach ($cats as $catID) {
$sql = "INSERT IGNORE INTO cittaprovinciauser
SET annunciid=$jid, cittaid=$catID";
$ok = @mysql_query($sql);
if ($ok) {
$numCats = $numCats + 1;
} else {
echo "<p>Errore inserimento annuncio $catID: " .
mysql_error() . '</p>';
}
}
?>
<p>Annunci aggiunto <?php echo $numCats; ?> categories.</p>
<p><a href="<?php echo $_SERVER['PHP_SELF']; ?>">Aggiungi un nuovo annuncio</a></p>
<p><a href="search.php">Ritorna alla ricerca/a></p>
<?php
else: // inserisci nuovo annuncio
$authors = @mysql_query('SELECT id, name FROM provincia');
if (!$authors) {
exit('<p>Unable to obtain provincia list from the database.</p>');
}
$cats = @mysql_query('SELECT id, citta FROM citta');
if (!$cats) {
exit('<p>Unable to obtain citta list from the database.</p>');
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<p>Inserisci annuncio<br />
descrizione
<textarea name="descrizione" rows="5" cols="45">
</textarea></p>
mq
<textarea name="mq" rows="5" cols="45">
</textarea></p>
locali
<textarea name="locali" rows="5" cols="45">
</textarea></p>
prezzo
<textarea name="prezzo" rows="5" cols="45">
</textarea></p>
tipologia
<textarea name="tipologia" rows="5" cols="45">
</textarea></p>
altro
<textarea name="altro" rows="5" cols="45">
</textarea></p>
<p>Provincia:
<select name="aid" size="1">
<option selected value="">Seleziona Provincia</option>
<option value="">---------</option>
<?php
while ($author = mysql_fetch_array($authors)) {
$aid = $author['id'];
$aname = htmlspecialchars($author['name']);
echo "<option value='$aid'>$aname</option>\n";
}
?>
</select></p>
<p>Citta':
<select name="cid" size="1">
<option selected value="">Seleziona Citta'</option>
<option value="">---------</option>
<?php
while ($cat = mysql_fetch_array($cats)) {
$cid = $cat['id'];
$cname = htmlspecialchars($cat['citta']);
echo "<option value='$cid'>$cname</option>\n";
}
?>
</select></p>
</p>
<input type="submit" value="SUBMIT" />
</form>
<?php endif; ?>
ciao
intanto guarda la riga
<p><a href="search.php">Ritorna alla ricerca/a></p>
è sbagliata
<p><a href="search.php">Ritorna alla ricerca</a></p>
metti il nome al pulsante submit
<input name="submit" type="submit" id="submit" value="SUBMIT" />
che poi devi verificare (non il post della descizione)
if (isset($_POST['submit'])):
// x un nuovo annuncio usa il form
//ecc.......
devi fare i controlli sui campi in modo che non ti inviino vuoti o peggio delle porcherie, soprattutto perchè poi l'annuncio lo metti nel db, come fai tu è estremamente rischioso
essendo la pagina (da che ho capito) una pag riservata può accedervi solo chi è iscritto per cui
<?php
session_start();
if(isset($_SESSION['user_id']){
//qui tutto il codice col form e la registrazione
}else{
//qui rimandi alla pag di log o a quella che vuoi
}
?>
Ciao Borgo,
grazie mille ho sistemato la </a> di search ...
Forse non mi sono spiegato bene ... aspetto provo cosi:
inserimento user_id e clienteid con join !
Allora ho creato un db relazionale dove ci sono 5 tabelle
annunci
citta
provincia
users
cliente
Ho creato un'area amministrativa dove ad ogni cliente dovrei associare i propri annunci,
e se inserisco a mano nella tabella annunci tutto funziona, infatti ad ogni cliente nella sua area si presenta il suo listato annunci e la sua anagrafica, fino qui tutto ok...
Ora ho creato un form per inviare gli annunci dove c'è una select sia per le provincie sia per le citta' e qui tutto funziona, io vorrei pero' che ad ogni invio si prendesse in automatico
l'user_id e clienteid ma non capisco davvero come fare, e vorrei evitare di farlo a mano per ogni cliente spero che qualcuno possa aiutarmi, vi posto la tabella annunci con un piccolo dump e lo script e confido in Voi.
dump tabella annunci
PHP:
-- phpMyAdmin SQL Dump
-- version 3.3.7
-- <a href="http://www.phpmyadmin.net" target="_blank">http://www.phpmyadmin.net</a>
--
-- Host: localhost
-- Generato il: 08 ago, 2011 at 06:58 AM
-- Versione MySQL: 5.1.44
-- Versione PHP: 5.3.2
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Database: `sicilia`
--
-- --------------------------------------------------------
--
-- Struttura della tabella `annunci`
--
CREATE TABLE IF NOT EXISTS `annunci` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`descrizione` longtext NOT NULL,
`mq` varchar(255) NOT NULL,
`locali` varchar(255) NOT NULL,
`prezzo` varchar(255) NOT NULL,
`tipologia` varchar(255) NOT NULL,
`altro` varchar(255) NOT NULL,
`annunciodate` date NOT NULL,
`provinciaid` int(255) NOT NULL,
`user_id` int(11) NOT NULL,
`cittaid` int(11) NOT NULL,
`clienteid` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=46 ;
--
-- Dump dei dati per la tabella `annunci`
--
INSERT INTO `annunci` (`id`, `descrizione`, `mq`, `locali`, `prezzo`, `tipologia`, `altro`, `annunciodate`, `provinciaid`, `user_id`, `cittaid`, `clienteid`) VALUES
(5, 'pizza e fichi', '100', '89', 'kklkdlslkds', 'sdnlkdsf', 'vkldsjfkldsfjlks', '2011-08-04', 13, 54, 4, 4),;
Script all'interno dell'area riservata che funziona, solo che ho provato e riprovato a mettere in automatico l'user_id ma da' sempre errore,
o meglio cosi come l'ho crato mi prende la citta e la provincia che io inserisco tramite la select ( originariamente era pensato in modo diverso) ma non capisco a: come fargli prendere in automatico user_id dato che sono già all'interno dell'area admin e loggato, b: come fargli prendere il clienteid....
spero che tu possa aiutarmi ????
PHP:
<?php
include 'dbc.php';
page_protect();
?>
<html>
<head>
<title>My Account</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="styles.css" rel="stylesheet" type="text/css">
</head>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="5" class="main">
<tr>
<td colspan="3"> </td>
</tr>
<tr>
<td width="160" valign="top">
<?php
if (isset($_SESSION['user_id'])) {?>
<div class="myaccount">
<p><strong>My Account</strong></p>
<a href="myaccount.php">My Account</a><br>
<a href="mysettings.php">Settings</a><br>
<a href="logout.php">Logout </a>
<p>You can add more links here for users</p></div>
<?php }
if (checkAdmin()) {
?>
<p> <a href="admin.php">Admin CP </a></p>
<?php } ?>
<p> </p>
<p> </p>
<p> </p></td>
<td width="732" valign="top"><p> </p>
<h3 class="titlehdr">Welcome <?php echo $_SESSION['user_name'];?></h3>
<?php
if (isset($_GET['msg'])) {
echo "<div class=\"error\">$_GET[msg]</div>";
}
?>
<p>This is the my account page</p>
<?php
$jokelist = @mysql_query(
'SELECT *
FROM annunci, citta, provincia, cliente WHERE user_id='.$_SESSION['user_id'].' AND provinciaid=provincia.id AND cittaid=citta.id AND clienteid=cliente.id ORDER BY `user_id` DESC LIMIT 1 ');
if (!$jokelist) {
exit('<p>Error performing query: ' . mysql_error() . '</p>');
}
while ($joke = mysql_fetch_array($jokelist)) {
$nome = $joke['nome'];
$cognome = $joke['cognome'];
$email = $joke['email'];
// Display the joke with author information
echo "$nome<br />";
echo "$cognome<br />";
echo "<a href='mailto:$email'>$email</a>";
}
?>
</td>
<td width="196" valign="top"> </td>
</tr>
<tr>
<td colspan="3"> </td>
</tr>
</table>
<?php echo $_SESSION['user_name'];?>
<br />
<br />
<br />
<?php echo $_SESSION['user_id'];
require ("db_connect.php");
if (isset($_POST['descrizione'])):
// x un nuovo annuncio usa il form
$aid = $_POST['aid'];
$cid = $_POST['cid'];
$descrizione = $_POST['descrizione'];
$mq = $_POST['mq'];
$locali = $_POST['locali'];
$prezzo = $_POST['prezzo'];
$tipologia = $_POST['tipologia'];
$altro = $_POST['altro'];
$cats = $_POST['cats'];
if ($aid == '') {
exit('<p>Scegli la provincia x l annuncio. Click "Back" and try again.</p>');
}
$sql = "INSERT INTO annunci SET
descrizione='$descrizione',
mq='$mq',
locali='$locali',
prezzo='$prezzo',
tipologia='$tipologia',
altro='$altro',
annunciodate=CURDATE(),
provinciaid='$aid',
cittaid='$cid'";
if (@mysql_query($sql)) {
echo '<p>Nuovo annuncio inserito</p>';
} else {
exit('<p>Errore aggiunta nuovo annuncio: ' . mysql_error() . '</p>');
}
$jid = mysql_insert_id();
if (isset($_POST['cats'])) {
$cats = $_POST['cats'];
} else {
$cats = array();
}
$numCats = 0;
foreach ($cats as $catID) {
$sql = "INSERT IGNORE INTO cittaprovinciauser
SET annunciid=$jid, cittaid=$catID";
$ok = @mysql_query($sql);
if ($ok) {
$numCats = $numCats + 1;
} else {
echo "<p>Errore inserimento annuncio $catID: " .
mysql_error() . '</p>';
}
}
?>
<p>Annunci aggiunto <?php echo $numCats; ?> categories.</p>
<p><a href="<?php echo $_SERVER['PHP_SELF']; ?>">Aggiungi un nuovo annuncio</a></p>
<p><a href="search.php">Ritorna alla ricerca/a></p>
<?php
else: // inserimento provincia e citta'
$authors = @mysql_query('SELECT id, name FROM provincia');
if (!$authors) {
exit('<p>errore inserimento provincia.</p>');
}
$cats = @mysql_query('SELECT id, citta FROM citta');
if (!$cats) {
exit('<p>errore inserimento citta.</p>');
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<p>Inserisci annuncio<br />
descrizione
<textarea name="descrizione" rows="5" cols="45">
</textarea></p>
mq
<textarea name="mq" rows="5" cols="45">
</textarea></p>
locali
<textarea name="locali" rows="5" cols="45">
</textarea></p>
prezzo
<textarea name="prezzo" rows="5" cols="45">
</textarea></p>
tipologia
<textarea name="tipologia" rows="5" cols="45">
</textarea></p>
altro
<textarea name="altro" rows="5" cols="45">
</textarea></p>
</p>
<p>Provincia:
<select name="aid" size="1">
<option selected value="">Seleziona Provincia</option>
<option value="">---------</option>
<?php
while ($author = mysql_fetch_array($authors)) {
$aid = $author['id'];
$aname = htmlspecialchars($author['name']);
echo "<option value='$aid'>$aname</option>\n";
}
?>
</select></p>
<p>Citta':
<select name="cid" size="1">
<option selected value="">Seleziona Citta'</option>
<option value="">---------</option>
<?php
while ($cat = mysql_fetch_array($cats)) {
$cid = $cat['id'];
$cname = htmlspecialchars($cat['citta']);
echo "<option value='$cid'>$cname</option>\n";
}
?>
</select></p>
</p>
<input type="submit" value="SUBMIT" />
</form>
<?php endif; ?>