Aller au contenu

Souci de mise a jour BDD


Sujets conseillés

Posté (modifié)

Bonjour,

Cà fait des heures que je me débats avec mon script php et je fais appel à vous

Je voudrai mettre à jour tous les enregistrements d'une base de données appelée articles.

J'ai un champ texte (appelé titre) contenant blabla blabla blablabla

Dans un nouveau champ texte (appelé url), je voudrai recopier le précédent sous la forme blabla-blabla-blablabla

Les tirets sont obtenus avec une fonction fonc_url_art

Mon script qui ne fonctionne pas


$q2 = mysql_query("SELECT * FROM articles ORDER BY idx");
while ($r2 = mysql_fetch_array($q2)) {
$numart = $r2["idx"];
$cattitle=fonc_url_art($r2["titre"]);
mysql_query("UPDATE articles SET url = $cattitle WHERE idx = $numart");
}

Où ai-je fait une erreur, ou plusieurs

Merci pour votre aide

Modifié par Alainp
Posté

Bonjour,

Il ne fonctionne pas mais as tu une erreur? Qu'est ce qui ne marche pas? Le champ est vide?

Portekoi

Posté

Mets $cattitle entre guillemets simples, après avoir éventuellement échappé la valeur avec mysql_real_escape_string().

Un grand merci captain_torche, mon nouveau champ est à jour avec les guillemets simples.

Bonne journée.

PS : Pour répondre à Portekoi, il n'y avait pas d'erreur mais le champ restait vide

Posté


$q2 = mysql_query("SELECT idx FROM articles ");
while ($r2 = mysql_fetch_array($q2)) {

$cattitle = fonc_url_art($r2["titre"]);
mysql_query("UPDATE articles SET url = '".$cattitle."' WHERE idx = ".$r2["idx"]);
}

Plus propre :)

Posté

Je dirai même plus : ajoute un "or die(mysql_error());" après le mysql_query(), et tu auras beaucoup plus d'infos sur la raison du non fonctionnement de ta requête.

Posté

Et si le but c'était juste de remplacer les espaces par des tirets, un simple "UPDATE articles SET url=replace(titre,' ','-')" suffirait pour faire toutes les modifs d'un seul coup.

Jacques.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...