Problema inserimento primo record in tabella vuota

Buongiorno a tutti,

questo è il mio primo messaggio nel forum. Vediamo se qualcuno mi può aiutare...  :)

Sto cercando di fare il conteggio delle sezioni più visitate del mio sito.

Nel momento in cui viene cliccata una sezione, inserisco in apposite tabelle del mio database un record con il nome della categoria, data e ora, indirizzo ip.

Il tutto funziona alla perfezione, salvo nel caso in cui la mia tabella è vuota: in questo caso non riesco a inserire la prima riga.

Evidentemente sbaglio qualcosa nel codice... ho provato a modificarlo in diversi modi, ma senza risultato. Quindi posto di seguito quello che funziona meglio... se qualcuno sapesse darmi qualche suggerimento ne sarei veramente grato.

$id = $_GET["id"];
$ip = $_SERVER['REMOTE_ADDR'];
$check_ip = mysql_query("SELECT nome_categ,ip_categ FROM $id",$link2);
$numrows = mysql_num_rows($check_ip); 
while ($riga = mysql_fetch_array($check_ip)) {
$ip_esistenti = $riga['ip_categ'];
} 
if ($ip == $ip_esistenti) {
mysql_close($link2);
} 
elseif ($numrows >= 0) {
$nome_categ = str_replace('_', ' ', $id);
$Nome_categ = ucfirst($nome_categ);
$visite_categ = "INSERT INTO $id(nome_categ,ip_categ) VALUES('$Nome_categ','$ip')"; @mysql_query($visite_categ,$link2);
mysql_close($link2);
}

 :bye:

inviato 6 anni fa
demaz11
X 0 X

Ciao,

potrebbe essere che la tua query di inserimento vada in errore.

Ti consiglio di stampare l'errore di mysql in fase di sviluppo.

Questo potrebbe derivare dal fatto che il tuo campo nome_categ è obbligatorio nel DB e nel caso non trovi alcuna riga, questo valore è vuoto.

Un'altra accortezza che ti voglio segnalare è che la variabile $ip_esistenti, alla fine del ciclo, assumerà sempre il valore dell'ultimo record.

Spero di esserti stato d'aiuto!

Ciao :bye:

risposto 6 anni fa
datipal
X 0 X

ohi ohi hai ragione per l'ip!! come faccio? se uso while invece di if cambia qualcosa?

risposto 6 anni fa
demaz11
X 0 X

Ma per controllare se l'ip esite, non ti conviene fare una ricerca direttamente sul campo ip_categ?

Es:

$check_ip = mysql_query( "SELECT COUNT(*) FROM <nome tabella> WHERE ip_categ = $ip", $link2 );
$count_row = mysql_fetch_row( $check_ip );
if( $count_row[0] > 0 ) echo "Nessun ip presente!";

Ovviamente dovrai cambiare poi la struttura dei controlli successivi alla query.

risposto 6 anni fa
datipal
X 0 X

Niente da fare, sto provando come mi hai consigliato tu, ma continua a darmi questo errore:

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in .... bla bla

 :'(

risposto 6 anni fa
demaz11
X 0 X

Cosa c'è scritto al posto di "bla bla"?

A cosa è uguale la tua variabile $link2?

Se esegui la query da phpmyadmin, funziona?

risposto 6 anni fa
datipal
X 0 X

oook l'errore che mi dava come sospettavo era dovuto ad un errore in tutt'altra parte del codice... ma ieri ero troppo fuso per accorgermene  :D !

Continuando il codice che mi hai dato tu ho fatto così_

   if( $count_row[0] > 0 ) {
      mysql_close($link2);
   } else {
      $visite_categ = "INSERT INTO $id(ip_categ) VALUES('$ip')"; @mysql_query($visite_categ,$link2);   
      mysql_close($link2);
   }

Ora mi rimane solo il problema 'originale', che non riesco a scrivere il primo record se la tabella è vuota...

Però questo pezzo di codice non l'ho capito molto bene, perché dici 'nessun ip presente'? non è il contrario? :-[

if( $count_row[0] > 0 ) echo "Nessun ip presente!";

risposto 6 anni fa
demaz11
X 0 X

Scusami, ho sbagliato la frase.. nel caso trovo record chiudi la connessione (così come fai).

risposto 6 anni fa
datipal
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda