limitare campo descrizione

searedone

Utente Attivo
11 Giu 2010
508
0
0
Ciao a tutti,
chi mi dice come si fa' a limitare il campo descrizione ?

Nel senso ho un listato annunci come vi posto, ma il campo descrizione mi posta tutta la descrizione e così mi allunga tutta la tabella come faccio a dare un limite tipo 30 caratteri o 20 caratteri a questo script ???

PHP:
 <?php      

  require ('db_connect.php'); 




$jokelist = @mysql_query( 
"SELECT * FROM 
    annunci INNER JOIN regione ON (annunci.regioneid=regione.id AND provinciaid=provinciaid) 
     INNER JOIN provincia ON (annunci.provinciaid=provincia.id) 
     INNER JOIN citta ON (annunci.cittaid=citta.id) 
      INNER JOIN cliente ON (annunci.clienteid=cliente.id) 
     
      
WHERE 
    provincia.name='agrigento'"); 
     
     



     
     
     


if (!$jokelist) { 
  exit('<p>Error performing query: ' . mysql_error() . '</p>'); 
} 

while ($joke = mysql_fetch_array($jokelist)) { 
$click_annuncio = $joke['click_annuncio']; 
$id_annunci = $joke['id_annunci']; 
  $descrizione = $joke['descrizione']; 
  $mq = $joke['mq']; 
  $prezzo = $joke['prezzo']; 
  $tipologia = $joke['tipologia']; 
   
  $name = $joke['name']; 
  $via = $joke['via']; 
  $citta = $joke['citta']; 
  $user_name = $joke['user_name']; 
  $user_email = $joke['user_email']; 
   $condizioni = $joke['condizioni']; 
    $regione = $joke['regione']; 
     $tipo = $joke['tipo']; 
      $condizioni = $joke['condizioni']; 
       $logo_cliente = $joke['logo_cliente']; 
          
   
   $nome_file = $joke['nome_file']; 
  $tipo_file = $joke['tipo_file']; 
  $dati_file = $joke['dati_file']; 
   
  // Display the joke with author information 



   
   
  echo" <table width='100%'>"; 
  echo" <tr>"; 
   echo" <p class='three'><td colspan='3'>(by <a href=\"http://localhost:8888/sicilia/rannunci.php?id=$id_annunci\"/>$via,$citta,$name,$regione</a> )</td>"; 
 echo" </tr>"; 
 echo" <tr>"; 
  echo"  <td width='14%' bgcolor='#CCCCCC'><img src='immagini1.php?id=$id_annunci' name='nome_file'  alt'' width='110' height='90'  /></td>"; 
  echo"  <td width='55%' bgcolor='#CCCCCC'><table width='100%'>"; 
   echo"   <tr>"; 
    echo"    <td>$descrizione</td>"; 
    echo"  </tr>"; 
    echo"  <tr>"; 
      echo"  <td>$id_annunci</td>"; 
echo"</tr>"; 
 echo"     <tr>"; 
    echo"    <td>&nbsp;</td>"; 
    echo"  </tr>"; 
   echo" </table></td>"; 
  echo"  <td width='31%' bgcolor='#CCCCCC'>$logo_cliente<br />$prezzo</p></td>"; 
  echo"</tr>"; 
echo"</table>"; 

  }  
   
   
?>
 
Grazie mille ragazzi :)

solo una cosa mi risolvete questo arcano che non ci riesce nessuno :(

sto cercando di contare i click che fanno sugli annunci ma non mi prende l'id , e nessuno capisce perché :( Borgo aiutami tuuuuuuuuuuuuu

PHP:
<?php 


require ('db_connect.php'); 




$jokelist = @mysql_query( 
"SELECT * FROM 
    annunci INNER JOIN regione ON (annunci.regioneid=regione.id AND provinciaid=provinciaid) 
     INNER JOIN provincia ON (annunci.provinciaid=provincia.id) 
      
WHERE 
    provincia.name='agrigento'"); 
     
     



     
     
     


if (!$jokelist) { 
  exit('<p>Error performing query: ' . mysql_error() . '</p>'); 
} 

while ($joke = mysql_fetch_array($jokelist)) { 
$click_annuncio = $joke['click_annuncio']; 
$id_annunci = $joke['id_annunci']; 
  $descrizione = $joke['descrizione']; 
  $mq = $joke['mq']; 
  $prezzo = $joke['prezzo']; 
  $tipologia = $joke['tipologia']; 
   
  $name = $joke['name']; 
  $citta = $joke['citta']; 
  $user_name = $joke['user_name']; 
  $user_email = $joke['user_email']; 
   $condizioni = $joke['condizioni']; 
    $regione = $joke['regione']; 
     $tipo = $joke['tipo']; 
      $condizioni = $joke['condizioni']; 
       $logo_cliente = $joke['logo_cliente']; 
          
   
   $nome_file = $joke['nome_file']; 
  $tipo_file = $joke['tipo_file']; 
  $dati_file = $joke['dati_file']; 
   
  echo "<p>$descrizione<br />" . 

      "(by <a href=\"http://localhost:8888/sicilia/rannunci.php?id=$id_annunci\"/>$id_annunci</a> )<br />" . "$name</br>" . "$mq</br>" . "$prezzo</br>". "$tipologia</br>" . "$citta<br />" . "$regione<br />" . "$logo_cliente<br />" . "$condizioni<br />" . "$tipo</br></p>"; 

  echo "<img src='immagini1.php?id=$id_annunci' name='nome_file'  alt'' width='110' height='90'  />";   


} 





?> 

<?php 
$jokelist = mysql_query ("UPDATE annunci SET click_annuncio = click_annuncio + 1 WHERE id_annunci='$id_annunci' " ) or die (mysql_error());   
?>
 
ciao
mi sembra che non sia un errore di sintassi, ma di logica
se non capisco male, tu vuoi contare quente volte è stato fatto clic su un particolare annuncio, cioè quando uno clicca sul link
Codice:
...by <a href=\"http://localhost:8888/sicilia/rannunci.php?id=$id_annunci\"/>$id_annunci</a>....
giusto?
quindi l'up non dovresti metterlo li, ma nella pagina rannunci.php dove immagino tu leggi l'id con il $_GET
questo perche se ad esempio hai tre annunci nella provincia ti uppa solo l'annuncio n. 3, all'uscita del while la variabile $id_annunci è sempre il valore dell'ultimo
 
Si giusto hai capito al volo grazie mille...

Quindi se non ho capito male questa parte va' in rannunci ?

PHP:
<?php 
$jokelist = mysql_query ("UPDATE annunci SET click_annuncio = click_annuncio + 1 WHERE id_annunci='$id_annunci' " ) or die (mysql_error());   
?>
 
Sei un genioooooooooooo :)


Finalmente funzionaaaaaaaaaaaaaa, non sai a quante persone ho chiesto ma tutti dicevano che dovevo farlo nella pagina del listato annunci :)

Grazie milleeeeeeeeeeeeee


PS per non aprire un'altro post, posso chiederti dove o come posso fare a far si che un annuncio dopo 6 mesi scada ????????????
 
ciao
dovresti per prima cosa avere nella tabella annunci un campo chiamato (es.) data_ins che io farei del tipo int(15) in quanto per poi fare i calcoli è meglio usare la data in formato timestamp.
poi quando inserisci l'annuncio, oltre algli altri dati, valorizzi anche quel campo (es.)
PHP:
<?php
//dati connessione...............
//altri valori dei campi
$data_ins=time();
//aggungi alla query di inserimento
$query="INSERT INTO annunci(...,...,..., data_ins) VALUES(...,..., ...,$data_ins)";
$ris=mysql_query($query);
//.......
?>
poi puoi farti una paginetta (se non vuoi farlo in automatico quando l'utente visualizza gli annunci) con
PHP:
<?php
//dati connessione...............
$adesso=time();//leggi il tempo attuale
//
$vecchi=$adesso-(30*24*60-60);//tolgo circa 6 mesi 30 gg * 24 ore * 60 minuti * 60 sec
$query="DELETE FROM annunci WHERE data_ins < $vecchi";
$ris=mysql_query($query);
//....
?>
lanciando lo script elimini i vecchi annunci

p.s.
sarebbe comunque meglio aprire un nuovo post, altrimenti questo viene troppo lungo e fuori tema col titolo
 
Ciao e grazie mille come al solito per la risposta esaustiva, io ho già un campo nella tabella annunci con timestamp che ho chiamato ts per comodità quindi potrei usare quello :)

Devo solo provare a integrare quello che mi hai postato nel mio sito..

Se ho problemi e non ci riesco da subito, apro un'altro post e magari mi dici li cosa correggere.

Solo una curiosità, io passo già il campo ts quando uno posta l'annuncio, e qui mi sembra di capire che era il primo punto che tu mi hai scritto, la seconda pagina che mi dici non in automatico, mi darebbe il risultato degli annunci vecchi che hanno superato tale data e nel caso io posso toglierli dal sito corretto ???? e se volessi anche solo sospenderli che dovrei fare ???? scusa sono un rompi lo so , ma è cosi difficile trovare uno che ne sa come te ........

Ps grazie davvero molto per il tuo aiuto, e complimenti per quanto ne sai di php, sei davvero un genio ... chissa se prima o poi ne saprò almeno il 30% di quanto ne sai tu :)
 
Ultima modifica:
ciao
si il campo ts dovrebbe andare bene
dicevo in automatico in quanto:
1. se metti lo script nella posizione in cui visualizzi gli annunci, quando un'utente chiama l'elenco lo script elimina gli annunci vecchi
2. non in automatico in quanto tu devi richiamarti la paginetta ed eliminarli, quando ne hai voglia

per sospenderli sempre nella tabella annunci dovresti avere un campio chiamato (es) attivo (potrebbe essere di tipo enum con due valori, A per attivo e S per sospeso, con A predefinito).
in questo caso al posto del delete devi uppare passando il valore da A a S, nella visualizzazione devi mettere nel where anche attivo='A'.
quando vuoi eliminare poi fai il delete con WHERE attivo='S' e, se vuoi, altre condizioni, in questo caso potresi farti una paginetta che visualizza solo gli S e eliminarli tutti o solo una alla volta scegliendo quale
 
Ciao Borgo, forse mi sono perso qualcosa ...

Ho fatto così ma non funge :(

PHP:
<?php 
require ('db_connect.php');
$adesso=time();//leggi il tempo attuale 
// 
$vecchi=$adesso-(30*24*60-60);//tolgo circa 6 mesi 30 gg * 24 ore * 60 minuti * 60 sec 
$jokelist="DELETE FROM annunci WHERE ts < $vecchi"; 
$joke=mysql_query($jokelist); 
$id_annunci = $joke['id_annunci'];
 

  $ts = $joke['ts'];
  
?>
 
CiO BORGO, SONO IN CRISI

per sospenderli sempre nella tabella annunci dovresti avere un campio chiamato (es) attivo (potrebbe essere di tipo enum con due valori, A per attivo e S per sospeso, con A predefinito).
in questo caso al posto del delete devi uppare passando il valore da A a S, nella visualizzazione devi mettere nel where anche attivo='A'.
quando vuoi eliminare poi fai il delete con WHERE attivo='S' e, se vuoi, altre condizioni, in questo caso potresi farti una paginetta che visualizza solo gli S e eliminarli tutti o solo una alla volta scegliendo quale
:
Se pèrovo ad aggiungere un qualsiasi campo enum mi dice

query SQL:

ALTER TABLE `annunci` ADD `A` ENUM NOT NULL AFTER `id_annunci`

Messaggio di MySQL:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NOT NULL AFTER `id_annunci`' at line 1
Perché ?????


Bordo forse mi sono perso qualcosa anche qui ???? ...

Ho fatto così ma non funge :(

PHP:
<?php 
require ('db_connect.php');
$adesso=time();//leggi il tempo attuale 
// 
$vecchi=$adesso-(30*24*60-60);//tolgo circa 6 mesi 30 gg * 24 ore * 60 minuti * 60 sec 
$jokelist="DELETE FROM annunci WHERE ts < $vecchi"; 
$joke=mysql_query($jokelist); 
$id_annunci = $joke['id_annunci'];
 

  $ts = $joke['ts'];
  
?>
 
ciao
per l'aggiunta del campo devo dare un occhio al manuale, poi forse ti so dire.
per la parte che non funge, per prima cosa mi sono dimenticato un 6
$vecchi=$adesso-(6*30*24*60-60);//tolgo circa 6 mesi 30 gg * 24 ore * 60 minuti * 60 sec
così come è più vecchi di 30 gg.
poi subito dopo la querystringa metti un var dump (ceh poi toglierai)
PHP:
//....
$vecchi=$adesso-(6*30*24*60-60);//tolgo circa 6 mesi 30 gg * 24 ore * 60 minuti * 60 sec  
$jokelist="DELETE FROM annunci WHERE ts < $vecchi";  
var_dump($jokelist);
$joke=mysql_query($jokelist);  
$id_annunci = $joke['id_annunci'];//questo cos'è?
//....
e verifica come viene scritta

p.s.
dimenticavo
hai annunci con data di 6 mesi e più fa?
 
Ciao,
si ho modificato un paio di date oltre i 6 mesi per vedere se funziona ma niente :(

Ok questa sera provo a mettere un var dump e vediamo... se scopri sul manuale per il campo enum fammi sapere grazie mille ..

Ps oggi provo a smanettare su internet e vedo se trovo qualcosa sull'enum

$id_annunci = $joke['id_annunci'];//questo cos'è?

Questo è il campo id della tabella annunci . volevo richiamare gli annunci vecchi insieme all'id per cancellare nel caso solo quelli di un id particolare oppure tutti in base alla scelta.

IN poche parole ho creato un admin e ogni utente registrato può mettere gli annunci, ma non so se devo togliere quelli di tutti, oppure quelli di un account specifico , idem per sospenderli o attivarli, e quindi pensavo di richiamare anche l'id cliente ... Sbaglio ??? o dovevo fare diversamente ???
 
Ultima modifica:
ciao
... e quindi pensavo di richiamare anche l'id cliente ... Sbaglio ??? o dovevo fare diversamente ???
ti chiedevo cosa era quell'id in quanto nella parte di script non si vede da dove provenga.
secondo me dovresti selezionare un utente e trasmettere il suo id alla pagina che cancella (così come ti avevo postato cancella tutti indipendente dall'id)
probabilmente dovresti fare così
PHP:
<?php
//........
//verificare se hai selezionato l'id
// e trasmesso tramite $_GET
$vecchi=$adesso-(6*30*24*60-60);
if(isset($_GET['id'])){
	$wh=" WHERE ts < '$vecchi' AND id='".$_GET['id']."'";//i vecchi di quell'id
}else{
	$wh=" WHERE ts < '$vecchi'";//tutti i vecchi
}
$jokelist="DELETE FROM annunci".$wh;
//ecc....
?>
se invece vuoi sospendere non devi usare il delete ma l'UPDATE (ho chiamato il campo ENUM attivo, ma devi mettere eventualmente il nome che gli hai dato tu)
PHP:
<?php
//tutto come precedente escluso il delete che diventa
$jokelist="UPDATE annunci SET attivo='S'".$wh;
//ecc...
?>
per l'enum prova
PHP:
<?php
//dati di connessione
mysql_query("ALTER TABLE 'annunci' ADD 'attivo' ENUM( 'A', 'S' ) NOT NULL DEFAULT 'A'");
?>
hai messo il var_dump? cosa ti risulta? sei sicuro che il campo ts sia un intero?
 
Ciao Borgo ben tornato ...

Nel frattempo purtroppo ho avuto casotti e non sono riuscito a provare lo faccio questa sera promesso..

Per il campo ts sono sicurissimo che sia un campo int timestamp ....

Per l'enum quando provo ad inserire un campo di tipo enum non me lo prende e non capisco perchè :( .....

Pensavo anche di creare una tabella nuova es attivi ( dove all'interno ho i 3 campi id, attivo, non attivo e di collegarla alla tabella annunci principale ..

Secondo te sarebbe una cattiva idea ????? tanto ho il db relazionale, e poi quando faccio la join chiedo di restituirmi tutti i campi attivo , in questo modo posso crearmi un pannello dove posso disattivare gli annunci , oppure attivarli a mio piacere, mentre per l'inserimento potrei dare di default il campo attivo a chi li posta ...

che ne dici ?????
 
ciao
era un difettaccio sull'alimentatore (a sbalzi da +3 a +10V).

Per l'enum quando provo ad inserire un campo di tipo enum non me lo prende e non capisco perchè
anche col codice che ti ho postato?
Pensavo anche di creare una tabella nuova es attivi...
a me le join non sono molto simpatiche, hai provato ad usare l'admin di mysql modificando direttamenta la tabella annunci?
mentre per l'inserimento potrei dare di default il campo attivo a chi li posta ...
comunque prima o poi devi attivare, o di default o te manualmente utente per utente, io preferirei di default
 
ciao
era un difettaccio sull'alimentatore (a sbalzi da +3 a +10V).


anche col codice che ti ho postato?

No con il codice non ho ancora provato perchè ieri non ero a casa, ma per comodità ho provato ad aggiungerlo proprio dal pannello di myadmin..

Ho fatto cosi .. nome campo attivo enum e ho provato a mettere altre robe che a memoria non ricordo ma niente mi da un errore di mysql :(

a me le join non sono molto simpatiche, hai provato ad usare l'admin di mysql modificando direttamenta la tabella annunci?

La join io la trovavo inutile ma da quando ho imparato ad usarla a parte la velocità mi ha risolto un sacco di problemi e trovo che sia la cosa più bella che ho imparato negli ultimi mesi davvero semplice una volta capita e utilissimaaaaa in qualsiasi momento puoi aggiungere cio che vuoi ... ;) ho ancora qualche problemino nelle interrogazioni ma fighissimo ......

comunque prima o poi devi attivare, o di default o te manualmente utente per utente, io preferirei di default

Si infatti lo immaginavo per questo pensavo di passare direttamente ( non so ancora come ma ci provo ) il campo attivo di default dell'annuncio che postano gli iscritti nel campo id_attivo che creo nella tabella annunci cosi io come amministratore posso eventualemte attivare disattivare, mentre loro possono solo attivare ...

Un ultima info che mi sono dimenticato, ma come cavolo si da un limite annunci ? tipo come posso fare a dire che ogni user ha diritto a postare solo 5 o 10 annunci ???? cmq questa sera provo subito la parte che mi hai creato per visualizzare gli annunci più vecchi di sei mesi, nel frattempo risolvo con la join l'attivo e il non attivo ( questo semplice ) e poi aspetto da te info se sai come posso limitare gli annunci ... e tutto questo solo e unicamente per puro sapere e non per soldi ;) ma mi piace da impazzireeeeeeeeeee

dimenticavo grazie mille come sempre
 

Discussioni simili