Campo di testo che non funziona !???!?!!?

searedone

Utente Attivo
11 Giu 2010
508
0
0
Gentilmente chi mi puo' spiegare questo arcano ......

Ho fatto 5 campi :

id int auto_increment
tipo varchar 255
titolo varcchar 255
descrizione ( questo è il campo incriminato )
Url varchar 255

Ho provato a mettere descrizione come varchar 255 com text, come longtext insomma li ho provati tutti , ma quando vado ad inserire tramite form i dati , nel campo descrizione non c'è mai nulla , o meglio delle volte mi prende i dati e delle volte no ?!?!? secondo voi qual'è il problema , io ho bisogno che nella descrizione , ci sia una breve descizione e quindi che cosa devo mettere per farmi prendere il testo ?!!?!?

Tipo Spazio Richiesto Lunghezza massima
CHAR(x) x caratteri 255 characters
VARCHAR(x) x caratteri più 1 o 2 bytes 65,535 caratteri (soggetto a limitazioni)
TINYTEXT x caratteri + 1 byte 255 caratteri
TEXT x caratteri + 2 bytes 65,535 caratteri
MEDIUMTEXT x caratteri + 3 bytes 16,777,215 caratteri
LONGTEXT x caratteri + 4 bytes 4,294,967,295 caratteri
 

micio86

Utente Attivo
mmmmmmmmm

il nome del campo nella query è uguale a quello nel db????
Attento a maiuscole/minuscole. Inserisce cmq il record? Stai attento agli apostrofi!

Prova a dargli un valore a manoni:
INSERT INTO tabella (.....,descrizione) VALUES ('descrizione di prova').

Usa character varyng senza numero di caratteri
Magari stampati la query prima di eseguirla, copiala e provala direttamente su mysql myadmin
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
Ciao ... grazie mille inanzitutto per la risposta ...

Cmq è stranissimo e ho controllato più volte ieri , il campo nel form e il campo nel db, e sono corretti.

Il fatto strano è che se faccio delle prove togliendo il campo descrizione gli altri 4 campi me li prende correttamente, ma come metto il campo descrizione non mi inserisce il testo all'interno .... :)

Cosa intendi quando scrivi questo ?!?!
Prova a dargli un valore a manoni:
INSERT INTO tabella (.....,descrizione) VALUES ('descrizione di prova').
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
dimenticavo , può essere che sbaglio perchè metto text 255 oppure lo lascio vuoto !?!?!? devo mettere altro ???
 

micio86

Utente Attivo
simple

Prendi la tua query INSERT INTO tabella () VALUES ()
Nel valore di descrizione metti una stringa fissa per provare.
Postami la tua query
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
Ciao ecco il risultato ...

PAgina bianca se provo a stamparla a video ...

ti posto tutto

form inserimento

PHP:
<body>
<form id="form1" name="form1" method="post" action="ricette_invio_database.php">
  nome:
  <p>
    <label for="nome"></label>
    <input type="text" name="tipo" id="tipo" />
  </p>
  cognome:
  <p>
    <label for="cognome"></label>
    <input type="text" name="titolo" id="titolo" />
  </p>
  telefono:
    <p>
    <label for="telefono"></label>
    <input type="text" name="url" id="url" />
  </p>
  email:
 
   <p>
    <label for="note"></label>
    <input type="text" name="descrizione" id="descrizione" />
  </p>
  <p>
    <input type="submit" name="invio" id="invio" value="Submit" />
  </p>
</form>
inserimento database

PHP:
<?php

require ("db_connect.php"); 

?>

 	<?php

    $id = $_POST['id'];
	$tipo = $_POST['tipo'];
	$titolo = $_POST['titolo'];
	$url = $_POST['url'];
	$descrizione = $_POST['descrizone'];
	
	$insert = mysql_query("INSERT INTO ricette_cucina VALUES ('', '$tipo', '$titolo', '$url', '$descrizione')",$db);

	
	
	
	?>
stampa

PHP:
<?php

require ("db_connect.php"); 

?>

 	<?php

	
	$result = mysql_query("SELECT * FROM ricette_cucina", $db);
	
	while ($records = mysql_fetch_array($result))  {

echo "<tr><td>".$records['id'] ."</td><td>" .$records['tipo'] ."</td><td>" .$records['titolo'] . "</td><td>".$records['url'] ."</td><td>".$records['descrizione'] . "</td>";
}

?>

Uffff che sbaglio :(
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.039
146
63
PR
www.borgo-italia.it
ciao
intanto prova a scrivere la querry
PHP:
 $insert = mysql_query("INSERT INTO ricette_cucina VALUES ('', '$tipo', '$titolo', '$url', '$descrizione')",$db);
in questo modo

PHP:
$insert = mysql_query("INSERT INTO ricette_cucina(tipo,titolo,url,descrizione) VALUES ('$tipo', '$titolo', '$url', '$descrizione')",$db);
cioè con i nomi dei campi (controlla che abbia messo i nomi giusti)
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
ciao, eccolo la il problema come sempre ...

Allora mi ha preso la prima prova e tutto ok , come inserisco la seconda non mi inserisce più niente ...

MA perchè ??!?!

In poche parole ho fatto un motore di ricerca interno al sito che funziona davvero bene , ma volevo che quando uno cerca oltre al tipo al titolo e la url ci fosse anche la descrizione era carino .. ancor meglio pensavo descrizione e url un po come un motore di ricerca per capirci , ma non mi prende sta cavolo di descrizione .. :(
 

micio86

Utente Attivo
Si vede ke...

sicuramente cerchi di dare a un campo univoco tipo l'id, lo stesso valore?!?!
E' sicuro quello perchè la prima volta lo inserisce bene e alla seconda ti da errore perchè esiste già un record con ql valore in ql campo univoco!
Guarda le impostazioni dei campi della tabella!
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
La tabella l'ho postata ieri ...

Te la riscrivo ormai la so a memoria

id int auto_increment
tipo varchar 255
titolo varchar 255
url varchar255
descrizione text

LA cosa strana è che se tolgo il campo descrizione funziona tutto alla meraviglia .....

Perchè :(((((
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.039
146
63
PR
www.borgo-italia.it
ciao
per prima cosa separa la query, poi metti dei vardump.
guarda cosa ti restituiscono

PHP:
<?php
//......
$query_str="INSERT INTO ricette_cucina(tipo,titolo,url,descrizione) VALUES ('$tipo', '$titolo', '$url', '$descrizione')";
var_dump($query_str);
$insert = mysql_query($query_str,$db);  
var_dump($insert);
//......
?>
con il primo vedi se la query è esattamente quello che deve essere, con il secondo ti dice se andata a buon fine
es. se la prima ti restituisce

string(xk) INSERT INTO ricette_cucina(tipo,titolo,url,descrizione) VALUES ('antipasto', '', 'ant.php', 'ecc..ecc...')"
vedi subito che $titolo è vuoto e quindi devi risalire al perchè.
se invece da giusto e il secondo ti da null o false devi verificare la corrispomdenza dei nomi dei campi tra la query e la tabella

dimenticavo: la tabella che hai postato mi sembra giusta
 
Ultima modifica:

searedone

Utente Attivo
11 Giu 2010
508
0
0
Poi provo il tuo suggerimento ...

Adesso pero' ti chiedo questo ...

Ho tolto sia dal motore di ricerca, dal form di inserimento ecc descrizione ...

Ho provato a scrivere tipo url titolo e ogni volta che invio il database memorizza correttamente tutto ....

e il progressivo dell'id cresce normalmente ... non so perchè il mio database rifiuta descrizione ... e cosi potrebbe andare ...

L'unica cosa è che ora non posso mettere mano al datbase ma il campo titolo che è diventato descrizione mi memorizza un testo non tanto lungo ...

es

se metto : fjdsjfgdjsfgdsjkfgdkjgfdjfgdjgfjgfdskjfgdsjgfdkjsgfdsjgfdsjgfkdsgfjdfkjjfdsj

ok

se metto : fhdsfhdsifhiosdfhiodsfiodsfiodsfiodsfiodsfiodsfiodsfiodsfiodsufiodfiodsfuiodsfiof

No .. ora non posso come ti dicevo entrare nel database ma vorrei provare a cambiare il titolo da varchar 255 in text :) ma ho paura che mi dia lo stesso errore di descrizione comunque questa sera provo e poi ti so dire ....

Cmq dato che non sono praticissimo a text devo dare un valore !??! oppure lo devo lasciare vuoto !?!??
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.039
146
63
PR
www.borgo-italia.it
ciao
non so se è opportuno mettere il titolo in text, un titolo che supera 255 caratteriri mi sembra più una descrdcizione che altro.
in tex, mediumtex e longxtext non devi mettere la lunghezza
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.039
146
63
PR
www.borgo-italia.it
ciao
volevo dirti verifica la tabella (ho provato a crearla nel mio sql)

Codice:
CREATE TABLE `ricette_cucina` (
`id` INT( 6 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`tipo` VARCHAR( 255 ) NOT NULL ,
`titolo` VARCHAR( 255 ) NOT NULL ,
`url` VARCHAR( 255 ) NOT NULL ,
`descrizione` MEDIUMTEXT NOT NULL 
) ENGINE = MYISAM ;
dovrebbe essere così
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
Purtroppo come ti dicevo prima adesso non posso toccare il database lo faccio questa sera e provo ad inserire la tua tabella ....

PS intendevo che il titolo è diventato descrizione , solo che l'ho lasciato titolo perchè descrizione ormai mi sta facendo impazzire ... e che per provare non potendo modificare il db è ancora in varchar 255 volevo infatti dire che questa sera provo a metterlo in text longtext ecc e vedo se mi da' errore ..
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.039
146
63
PR
www.borgo-italia.it
ciao
ok.
comunque prova i vardump, spesso gli errori nascono a monte
dimenticavo !!importante!! : nei testi metti addslshes, se hai degli apici (apostrofi) nei testi questi altrimenti ti mandano in pallino il db
 

searedone

Utente Attivo
11 Giu 2010
508
0
0
mhhhhhhhhhh ne ho sentito parlare ma non so come si fa'

ho visto da una discussione questo ...

PHP:
function strip_magic ($value)
{
    $value = (get_magic_quotes_gpc()) ? stripslashes($value) : $value;
    return $value;
}
$campo = strip_magic($_POST['campo']); //ATTENZIONE: i campi di input vanno validati attentamente!!
$campoPerDb = mysql_real_escape_string($campo,$conn);


if(get_magic_quotes_gpc())
{
$numero =stripslashes($numero);
$parola =stripslashes($parola);
$tipo =stripslashes($tipo);
$anno=stripslashes($anno);

$numero =mysql_real_escape_string($numero);
$parola =mysql_real_escape_string($parola);
$tipo =mysql_real_escape_string($tipo);
$anno =mysql_real_escape_string($anno);

}
Ma non ho capito come doveva essere fatto e ho lasciato perdere .... ti posto cosa avevo fatto io ... ma non mi inseriva niente nel db::.

PHP:
  <?php

require ("db_connect.php"); 

?>

 	<?php

   

$id = $_POST['id'];
$tipo = $_POST['tipo'];
$url = $_POST['url'];
$titolo = $_POST['titolo'];

	
function strip_magic ($value)
{
    $value = (get_magic_quotes_gpc()) ? stripslashes($value) : $value;
    return $value;
}
$campo = strip_magic($_POST['campo']); //ATTENZIONE: i campi di input vanno validati attentamente!!
$campoPerDb = mysql_real_escape_string($campo,$conn);


if(get_magic_quotes_gpc())
{
$id =stripslashes($id);
$tipo =stripslashes($tipo);
$url =stripslashes($url);
$titolo =stripslashes($titolo);

$id =mysql_real_escape_string($id);
$tipo =mysql_real_escape_string($tipo);
$url =mysql_real_escape_string($url);
$titolo =mysql_real_escape_string($titolo);

}


	
	$insert = mysql_query("INSERT INTO ricette_cucina(tipo,url,titolo) VALUES ('$tipo', '$url', '$titolo')",$db);  

	
	
	
	?>

Potresti verificare cosa avevo sbagliato ?!?! grazie mille sei gentilissimo