Come fare query con drupal?

5 contenuti / 0 new
Ultimo contenuto
Come fare query con drupal?

E' giusto fare una query in questo modo con drupal 6?

<?php
  $sql
= db_query("SELECT rid FROM ".$db_prefix."role ORDER BY rid DESC LIMIT 1");
      if (
$sql) {
         
$row = db_fetch_array($sql);
         
$rid = $row['rid'];
         
$rid++;
      } else {
         
$rid=1;
      }
db_query("INSERT INTO ".$db_prefix."role (rid, name) VALUES (%d, '%s')", '$rid', 'studente');
?>

Oppure si può omettere il campo rid e fare solo:

<?php
 db_query
("INSERT INTO {role} (name) VALUES ('%s')", 'studente');
?>

grazie in anticipo a chi mi risponde!

il prefix viene aggiunto da solo dal sistema se includi il nome della tua tabella tra le parentesi graffe. Quindi la tua ultima opzione va benissimo :)

Ti spiego bladedu, io volevo sapere se è opportuno incrementare l'id da codice php come tecnica, il codice riportato sopra è un esempio come:

db_query("INSERT INTO {tabella} (name) VALUES ('%s')", 'valore stringa');

dove la tabella è

CREATE TABLE IF NOT EXISTS `tabella` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(64) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`)
)

E' il valore AUTO_INCREMENT del db che basta? Cosa significa unsigned?

Please usare drupal_write_record e non RAW Query.

<?php
$obj
= new stdClass();
$obj->rid = 5;
$obj->name = "Nuovo nome";
// Inserimento
drupal_write_record('role', $obj);
// Update
drupal_write_record('role', $obj, array('rid'));
?>

Quote:
E' il valore AUTO_INCREMENT del db che basta?

Si.

Quote:
Cosa significa unsigned?

Che non assume valore negativi (solo valori "senza segno", quindi positivi).

Ciao
Marco
--
My blog
Working at @agavee

@mavimo
grazie, grazie mille. Scusa adesso volevo porti un quesito che non riesco a risolvere. Ho già, tempo fa aperto un post ma ricevuto dei consigli che non mi vanno tanto (cioè utilizzare i blocchi). Il quesito è questo: come faccio a mettere le bandierine in intestazione? (senza utilizzare i blocchi perchè voglio le bandiere in linea) vedi:
http://danzisiweb.altervista.org

Adesso c'è questo codice ma non funzionano perchè non conosco il path:

<?php
global $language;
//qui ho messo le bandierine en.png, it.png, es.png....
$pathimage = $base_path."misc/images/flags/'.$language->.language'.png";
                 
$img2 = '<img src="'.$pathimage.'" border="0" width="32" height="32" align="middle" vspace="4" hspace="4" alt="Language" />';
                 
$link2 = l($img2, $pathlang, array('attributes' => array('class' => 'link', 'title' => 'Language'), 'html' => 'true'));
                  print
$link2;
?>

A parte che dovrei fare in ciclo for, lo so ma una volta fatto qual'è il $pathlang per il cambio lingua, cioè il secondo parametro della funzione l() ?

Grazie!